李永盛,何佳洲,劉義海,趙國清
(江蘇自動化研究所,江蘇 連云港 222061)
近些年來,關于圖像處理技術[1]研究成為計算機應用的熱點方向之一,其在軍事、醫(yī)療、交通等領域有廣闊的應用前景。傳統(tǒng)的機器學習需要根據(jù)人的專業(yè)知識去設計復雜的特征提取器,并且不同的識別目標對應的目標提取特征也往往不同,在實際應用中魯棒性差以及泛化能力弱。Hinton等[2]人在2006年首次提出深度學習,采用了多層次神經(jīng)網(wǎng)絡結構去訓練樣本數(shù)據(jù)。由于深度學習[3]不需要人工設計特征,它是依據(jù)大量的數(shù)據(jù)樣本,通過神經(jīng)網(wǎng)絡反復迭代訓練得到物體的特征,其特征模型的泛化能力更強,對物體的識別效果也更佳。2009年LEE等人[4]首次使用深度學習網(wǎng)絡技術處理音頻數(shù)據(jù),在不同的音頻分類任務上面進行實驗,取得了良好的表現(xiàn)。DESELAERS等人[5]基于深度學習網(wǎng)絡處理語音翻譯,大大提高了音譯效果。GLOROT等人[6]利用深度學習方法,在情感分析中實驗結果優(yōu)于其他已有的方法。2011年RANZATO等人[7]在識別人臉圖像中使用深度學習網(wǎng)絡,可以較好地處理圖像中的遮擋問題。LEE等人[8]提出了一種無監(jiān)督學習模型,由于其良好的稀疏性,可以獲取更多的圖像特征。TAYLOR等人[9]提出了一種人類運動數(shù)據(jù)的非線性生成模型,該模型利用深度學習網(wǎng)絡進行訓練,能夠較好地對運動捕捉期間丟失的數(shù)據(jù)進行補充。
通過多年研究表明,樣本數(shù)量的多少直接影響著模型識別效果。當數(shù)據(jù)集較少時,訓練得到模型容易出現(xiàn)過擬合現(xiàn)象,導致測試性能降低。通常來說,得到1個海量的數(shù)據(jù)集是進行訓練的前提,也是保證獲得良好訓練效果的關鍵。然而大量的數(shù)據(jù)樣本有時是無法獲取的,針對目前公開的一些大型數(shù)據(jù)集,比如ImageNet、MNIST、COCO等,如果直接拿來用在實際的某個專業(yè)領域的圖像應用中,其效果并不是特別理想。因此針對小樣本數(shù)據(jù)集,如何通過有效的數(shù)據(jù)增強技術將原本數(shù)據(jù)集擴大幾倍甚至幾十倍,非常具有現(xiàn)實意義。
在本文中,利用數(shù)據(jù)增強技術對VOC2007數(shù)據(jù)集進行擴充,借助深度學習中目標檢測SSD算法[10],通過實驗對比來驗證數(shù)據(jù)增強對改善訓練模型的有效性。
目前,根據(jù)檢測思想的不同,檢測算法主要分為兩階段目標檢測算法和單階段目標檢測算法。
兩階段目標檢測算法將檢測問題分為2個階段,先選取候選區(qū)域,然后對候選區(qū)域進行分類和位置調(diào)整,從而輸出目標檢測結果。這類算法的典型代表是R-CNN[11]系列算法,如 R-CNN、Faster R-CNN等。
單階段目標檢測算法將檢測過程簡化為端到端的問題,只需將圖片處理1次,能同時得到目標的位置和類別信息,并且其準確率和速度都能得到極大提升。這類算法的典型代表有 YOLO[12]、SSD 等。
SSD算法作為單階段目標檢測算法的代表,可視為YOLO和Faster R-CNN的結合,它采用VGG16作為主干網(wǎng)絡,用卷積層來替代最后的全連接層。SSD 算法簡單高效,消除了區(qū)域提取階段,將全部計算封裝到單個網(wǎng)絡中,便于后面進行訓練。
目前的機器學習,通常是進行有監(jiān)督的學習。所謂的有監(jiān)督學習,就是針對得到的數(shù)據(jù)集進行標注。在本文中,采用labelImg軟件進行圖像標注。labelImg有2種數(shù)據(jù)標注格式,分別為PascalVOC和YOLO,本文中由于采取SSD算法驗證,故采用PascalVOC格式標注。
該軟件操作非常簡單,打開軟件界面后,通過點擊Open打開所需要標注的圖像,選擇標注的數(shù)據(jù)格式為PascalVOC,再點擊Create RectBox,對圖像中的目標進行標注。最后點擊Save保存得到一個所需的xml文件。
本文主要采用色彩變換、水平翻轉(zhuǎn)、旋轉(zhuǎn)、亮度變換、縮放[13]、裁剪[14]以及添加椒鹽噪聲等7種數(shù)據(jù)增強方式。
在實際生活中,可以看到很多造型一樣而顏色不同的物體,比如同款的紅色汽車與白色汽車等。因此,通過色彩變換操作,改變圖像中目標的顏色,進而達到有效擴充樣本集。對圖像進行色彩變換操作,效果如圖1所示。
圖1 原圖與色彩變換
在圖像預處理中,對圖像進行水平翻轉(zhuǎn)是最常用的擴增方法之一。首先,實現(xiàn)圖像水平翻轉(zhuǎn)的代碼簡單明了,對于大部分圖像而言容易操作,可以直接使樣本集的數(shù)量翻一番。另外,水平翻轉(zhuǎn)不會大幅度地改變檢測目標的整體結構,可以保證生成的新圖像樣本具備有效性。對圖像進行水平操作,效果如圖2所示。
圖2 原圖與水平翻轉(zhuǎn)
對圖像進行旋轉(zhuǎn)操作,是非常有必要的數(shù)據(jù)增強方式之一。原因大概有2種:其一,由于拍攝角度不同,或者由于被拍攝物體的運動,圖片中物體的各部分方位可能發(fā)生運動,即有時會呈現(xiàn)出物體的旋轉(zhuǎn);其二,在圖像目標標注過程中,由于標注框為矩形,因此只有當圖像中的目標處于水平或者豎直位置時,才可以進行精準標注。而一旦目標處于傾斜位置,則標注時會引入額外干擾,進而影響后面訓練導致訓練效果不佳。通過適當?shù)男D(zhuǎn)可使目標處于水平或者豎直位置,便于精準標注。通過旋轉(zhuǎn)操作,新生成的圖像會存在黑邊,如果想去掉黑邊,可以進一步對生成的新圖像進行適當裁剪。本文對圖像進行旋轉(zhuǎn)操作(未去除黑邊),效果如圖3所示。
圖3 原圖與旋轉(zhuǎn)
拍照時,不僅受物體運動的影響,也會受到天色明暗影響,這就是最常見的亮度變換。有的時候在拍照時光線較暗,導致對亮度的魯棒性很差,因此使用亮度增強技術在圖像處理中變得愈加重要。在介紹亮度變換之前,簡單了解HSV(Hue,Saturation,Value)顏色空間。HSV是由A.R.Smith在1978年提出的一種顏色空間[15],其中3個重要參數(shù)分別為色調(diào)H、飽和度S和亮度V,而作亮度變換就是在V平面上做計算。對圖像進行亮度變換操作,效果如圖4所示。
圖4 原圖與亮度變換
同一個物體,由于拍攝時距離目標的遠近不一樣,會導致不同圖像中同一目標的尺度不同。因此,為了提高目標的檢測精度,需要對已有圖像進行縮放,比如將大尺度的圖像縮小??s放通常是將圖像的短邊(或長邊)固定到某個值,然后長邊(或短邊)根據(jù)一定的比例進行放大或者縮小??s放有2種方式,一種是向外縮放,即最終圖像尺寸超過原圖像;另一種是向內(nèi)縮放,得到新圖像尺寸小于與圖像。在縮放時,需要注意當新圖像和原圖像的長寬比相差較大時,會造成圖像失真,因此要盡量做到等比例縮放。對圖像進行縮放操作,將長寬均縮小為原來的一半,效果如圖5所示(原圖分辨率是500×344,大小是29.6 kB;縮小后的圖像分辨率是250×167,大小是7.66 kB)。
圖5 原圖與縮放
在實際圖像中,會出現(xiàn)2種常見的情況:一種是目標物有可能只被拍攝到某一部分;另一種是目標物被其他物體遮擋。這2種情況形成的結果是需要檢測的目標物不能呈現(xiàn)完整形狀。為了更好地學習這部分目標,有必要對完整的目標物進行裁剪,擴充原始的數(shù)據(jù)集。另外需要注意,在裁剪時,如果生成的新圖像中被保留的部分太少,也會導致訓練效果差,容易形成局部重復檢測的問題。因此在裁剪后的新圖像中,原目標物剩余部分至少要保留一半以上,才能保證對后面的模型訓練產(chǎn)生積極影響。對圖像進行裁剪操作,效果如圖6所示。
圖6 原圖與裁剪
拍攝圖像時,由于天氣或者攝像機里面元部件等原因,比如下雨、霧霾、感應器失效等,會使得成像效果模糊。為了能夠改善對模糊圖像的檢測效果,可以事先在訓練集中的圖像上面加入一些噪聲,使得訓練模型的魯棒性更好。添加噪聲,通常是指在原圖像中引入噪聲,進而生成新的圖像,常用噪聲有2種,分別為椒鹽噪聲和高斯噪聲。其中椒鹽噪聲,又名脈沖噪聲,它是一種隨機出現(xiàn)的白點(鹽噪聲)或黑點(椒噪聲),可以較好擬合生活中雨天拍照情景。而高斯噪聲是指概率密度函數(shù)服從高斯分布的噪聲。在本文中,只對圖像添加了椒鹽噪聲,效果如圖7所示。
圖7 原圖與添加椒鹽噪聲
作為一個公開的標準數(shù)據(jù)集,VOC2007數(shù)據(jù)集通常是圖像檢測的基準。在VOC2007的原始數(shù)據(jù)集中,包含訓練集的5 011張,測試集的4 952張,共計9 963張,包括20個種類。從表1可以看出Person的數(shù)量較多,其他類別的數(shù)量均比較少。另外,每個類別后面對應的數(shù)字,是指正樣本圖像個數(shù),并非目標數(shù)量。
在本文實驗中,深度學習框架使用的是Pytorch,目標檢測算法采用的是SSD算法,網(wǎng)絡結構選取的是VGG16網(wǎng)絡。由于VOC2007數(shù)據(jù)集里面Person類樣本數(shù)量多,不再對此類別進行數(shù)據(jù)增強,只對其余19類進行數(shù)據(jù)擴增。第1組,訓練集為原來的訓練集5 011張,測試集也為原來的測試集,4 952張;第2組,采用色彩變換、水平翻轉(zhuǎn)、旋轉(zhuǎn)、亮度變換,放縮變換等5種方式,共生成新的1 000張圖像,全部加入訓練集,此時訓練集共6 011張,而測試集保持4 952張不變;第3組,采用裁剪方式得到新的200張圖像,全部加入訓練集,此時訓練集5 211張,測試集保持不變;第4組,采用添加椒鹽噪聲得到新圖像200張,將200張新圖像全部加入訓練集,此時訓練集5 211張,測試集依然不變;第5組,將前面幾組中采用數(shù)據(jù)增強方式得到的新圖像1 400張全部加入訓練集,此時訓練集圖像有6 411張,測試集依然不變。實驗結果如表2,其中mAP為平均精度均值,其數(shù)值越大代表檢測精度越高。
表1 VOC2007數(shù)據(jù)集的各個種類信息
表2 5組實驗結果對比
根據(jù)實驗結果可知,第2組得到的訓練模型測試效果較好,對比第1組有明顯的提升,說明通過色彩變換、水平翻轉(zhuǎn)、旋轉(zhuǎn)、亮度變換,縮放等數(shù)據(jù)增強方式,可以有效改善檢測效果;第3組提升效果最少,一方面可能是因為增加的新樣本數(shù)目最少,另一方面可能是裁剪后的目標特征不明顯,導致測試時檢測精度提升效果低;第4組檢測效果也一般,推測原因是在VOC2007測試集中很少有添加噪聲的圖像,因此將添加噪聲的200張新圖像加入訓練集,對最終測試效果影響不多;第5組的測試效果最好,這種結果是意料之中的,因為它是將所有的新增數(shù)據(jù)樣本全部加入訓練集,充分說明了數(shù)據(jù)增強技術對提升圖像目標檢測具有顯著效果。
面對深度學習中樣本數(shù)據(jù)量少的問題,本文介紹了色彩變換、水平翻轉(zhuǎn)、旋轉(zhuǎn)、亮度變換,縮放、裁剪、添加噪聲等數(shù)據(jù)增強方式的特點。為了觀察不同數(shù)據(jù)增強方法的效果,在公開的VOC2007數(shù)據(jù)集上,采用這些數(shù)據(jù)增強技術進行訓練樣本擴充,并設計了5組對比實驗。實驗結果表明對樣本進行數(shù)據(jù)增強處理后,均可以在一定程度上提高圖像檢測精度。其中,通過色彩變換、水平翻轉(zhuǎn)、旋轉(zhuǎn)、亮度變換和縮放這5種方法擴展訓練集,檢測效果提升明顯。隨著數(shù)據(jù)增強技術的不斷發(fā)展,下面有一些新的數(shù)據(jù)增強方向值得關注:
(1) 利用生成對抗網(wǎng)絡(GAN)進行數(shù)據(jù)增強[16]。基于GAN[17]本身巨大的數(shù)據(jù)生成潛力,相信未來隨著對GAN的不斷深入研究,人們可以獲得大量高質(zhì)量的新圖像樣本,從而可以極大地解決訓練樣本數(shù)據(jù)少的問題。
(2) 通過多張圖像拼接進行數(shù)據(jù)增強。隨機圖像裁剪和修補技術(RICAP)[18]能夠隨機對4幅圖像分別進行不同的裁剪,然后拼接修補,最終獲得新圖像。這種類型的新圖像由于混合了4幅圖像的標簽,從而可以大大提高數(shù)據(jù)樣本的多樣性,同時還可以在某種程度上緩解參數(shù)過擬合現(xiàn)象。