?

面向小目標的多尺度Faster-RCNN檢測算法

2019-02-20 08:33黃繼鵬史穎歡
計算機研究與發展 2019年2期
關鍵詞:低分辨率高分辨率尺度

黃繼鵬 史穎歡 高 陽

(計算機軟件新技術國家重點實驗室(南京大學) 南京 210023)

目標檢測是結合了目標定位和識別2個任務的一項基礎性計算機視覺任務,它的目的是在圖像的復雜背景中找到若干目標,給出一個精確的目標邊框(bounding box),并判斷該邊框中目標所屬的類別[1].因為目標檢測的效果直接決定了圖像語義理解、目標重識別等眾多高層視覺任務的效果,并且它在智能監控系統、醫學圖像分析等方面具有很好的應用前景,所以對它的研究具有很強的理論和應用價值,目標檢測也一直是計算機視覺領域備受關注的若干研究方向之一.

小目標[2]是指自身真實的物理尺寸過小或與拍攝設備距離較遠導致其在整幅圖像中占比小的一類目標,通常只含有幾十個或更少的像素.如圖1所示,第1行圖像中邊框標記出的挖掘機為小目標,第2行圖像是Faster-RCNN[3]的一些檢測結果,第2行中的各類目標為目標檢測中經常研究的一些目標.裝配在許多設備上的攝像頭,比如:無人機攝像頭、通信基站攝像頭以及其他一些架設高度較高的監控攝像頭等,它們采集的圖像中存在很多小目標,所以研究小目標檢測對于分析和利用這些圖像非常重要,這在安防、交通、救援等方面有重要的應用價值.

Fig. 1 Regular object and small object圖1 常規目標與小目標

自2012年Krizhevsky等人[4]提出的AlexNet在ImageNet圖像分類任務的精度上取得顯著提升以來,以卷積神經網絡(convolutional neural network, CNN)為代表的各類深度學習方法被廣泛應用于許多視覺任務中,這其中也包括目標檢測.因為相較于傳統的基于手工特征的方法,基于深度學習的方法通??梢匀〉酶玫男Ч?,所以現在深度學習的方法在目標檢測這一方向上已經成為主流,絕大多數的研究工作都是圍繞CNN展開的.

然而,即使這些基于深度學習的方法在通用的目標檢測數據集上取得了很好的效果,它們仍然不能很好地解決小目標檢測這一問題.例如:圖1第1行圖像中的挖掘機用通用的目標檢測方法是檢測不出來的,而用本文的方法則可以檢測出來.

小目標檢測問題主要有2個難點:

1) 當目標在圖像中占比非常小的情況下,對應區域的像素所反映出的信息量是非常有限的.在極端情況下,小目標檢測任務甚至可能退化為像素分類任務.這導致一些通用的目標檢測算法難以適用于小目標檢測,而一些專門為小目標檢測設計的算法只能針對特定的應用背景,缺乏通用性.

2) 標記圖像中的小目標作為訓練數據時很容易出現誤差,在目標本身已經很小的情況下,細微的誤差容易對檢測結果造成較大的影響,而且標記數據的人工成本也很高[5],所以目前為止還沒有一個較大的完整的用于小目標檢測研究的數據集,這阻礙了學術界對于小目標檢測的研究.

針對上述的問題,本文提出了一種面向小目標的多尺度Faster-RCNN檢測算法.該方法根據卷積神經網絡的特性,對網絡結構做出修改,使得網絡可以同時利用低層和高層的特征進行多尺度檢測.同時,本文還用網上搜索引擎爬蟲獲得的高分辨率大目標圖像進行訓練以解決缺少小目標訓練數據的問題.由于高分辨率的大目標訓練圖像與低分辨率的小目標測試圖像的數據分布存在很大差異,通過可視化分析問題后,又使用下采樣和上采樣的方法盡可能消除訓練圖像與測試圖像的差異.實驗表明,所提出的方法確實可以較好地解決小目標檢測的問題.

具體來說,本文的主要貢獻包括:

1) 針對Faster-RCNN在小目標檢測上的不足,提出了通用的網絡結構修改規則,同時利用低層和高層的特征進行多尺度檢測,提高了小目標檢測的精度;

2) 通過對目標高分辨率圖像進行下采樣和上采樣的方法,使網上獲取的數據與實際測試數據的分布盡可能接近,解決缺少小目標訓練數據的問題.

1 相關工作

在2014年以前,目標檢測領域效果最好的方法是Felzenszwalb等人[6-7]提出的可變形部件模型(deformable part model, DPM),這一方法本質上利用的是手工特征.然而隨著深度學習的發展,DPM的檢測效果已經遠遠比不上深度學習的方法了,因此現在目標檢測領域的主流是深度學習,絕大多數研究工作都是圍繞CNN展開的.

區域卷積神經網絡(regions with convolutional neural network, RCNN)系列[3,8-9]的方法是用深度學習的方法進行目標檢測的代表性工作.Girshick等人[8]提出的RCNN開創性地將候選區域生成和深度學習的分類方法結合起來.RCNN通過過分割[10]生成一些候選區域,然后用CNN分別對每一塊候選區域提取特征,最后送入分類器判斷類別并對邊框進行回歸.因為不同候選區域重復卷積的問題,該方法的速度非常慢.

在借鑒何愷明等人[11]提出的空間金字塔池化網絡(spatial pyramid pooling network, SPPNet)和Sermanet等人[12]提出的定位思想后,Girshick等人[9]又提出了Fast-RCNN.該方法在RCNN的基礎上引入了目標區域池化(region of interest pooling, ROI pooling),這實際上是一個單層的金字塔池化層,它使得網絡可以對不同尺寸的輸入圖像都產生相同大小的特征,保證了輸入圖像的尺寸不變性,同時它通過特征映射的方法直接在整張圖像的特征圖(feature map)上提取候選區域的特征,避免了重復卷積,在精度和速度上都優于RCNN. Fast-RCNN之后,制約該方法速度的主要原因變成了候選區域生成所使用的過分割.

隨后,任少卿等人[3]在Fast-RCNN的基礎上又提出了Faster-RCNN.該方法采用錨點(anchor)的方式來生成候選區域,將候選區域生成也交由深度網絡來做,速度和精度進一步提升.至此,使用深度學習做目標檢測被RCNN統一到了一個深度框架中.

繼RCNN之后,Redmon等人[13]又提出了更快的目標檢測方法YOLO(you only look once).YOLO不同于RCNN,它將目標檢測作為回歸問題處理,直接在劃分的網格上回歸目標邊界框和所屬類別.因為免去了復雜費時的候選區域生成,YOLO的速度非???,但對于靠得很近或較小的目標,其檢測精度不高且泛化能力偏弱.

結合RCNN的Anchor思想和YOLO的回歸思想,劉偉等人[14]提出了單次多框檢測器(single shot multi-box detector, SSD).SSD有RCNN定位準確和YOLO速度快的優點,因為引入多尺度檢測[15],它對于不同尺寸的目標都有較好的檢測效果.檢測速度和精度進一步提升.

這3類方法對于一般的目標檢測問題有不錯的精度,然而對于小目標的檢測精度卻都不理想.事實上,這些方法檢測不出來的目標往往不是一些復雜的目標,而是一些較小的目標,比如PASCAL VOC數據集[5]中的瓶子.這說明不是深度網絡缺乏學習和表示能力,而是深度網絡提取的小目標特征所能表示的信息實在是太少了[16].

除此之外,還有一些研究者專門針對小目標的檢測進行了研究.Takeki等人[17]提出了一種結合圖像語義分割的小目標檢測方法,該方法將全卷積網絡(fully convolutional network, FCN)及其變體和CNN結合起來,以支持向量機(support vector machine, SVM)整合三者的結果,但是這個方法只適用于在純凈的天空背景下檢測小鳥這一任務,難以適用于復雜背景下的多類目標檢測任務.Chen等人[18]基于RCNN進行改進,使得RCNN可以生成更小的候選區域,對RCNN在小目標檢測這一任務上的提升非常大,但算法復雜度較高.Eggert等人[19]同樣也是基于RCNN進行改進,他們對feature map分辨率與檢測效果的關系進行了研究,在公司商標檢測的問題背景下,用改進的anchor box生成方法提升了RCNN使用高分辨率feature map進行檢測的效果.

由此可見,雖然已經有人針對小目標檢測做出一些工作,但是這些方法都只能在特定的問題背景下使用,或者對于一般目標檢測的效果不如前面3種方法,缺乏一定的通用性.

2 多尺度Faster-RCNN檢測算法

2.1 多尺度檢測

在一個多層卷積神經網絡中,低層的特征往往能很好地表示圖像的紋理、邊緣等的細節信息,而越往高層走,隨著神經元感受野的擴大,高層的特征往往能很好地表示圖像的語義信息,但是相應的就會忽略一些細節信息[20].

當一個目標非常小時,從僅有的像素中所能反應出來的語義信息是非常有限的,而太小的目標也完全不需要神經元具有很大的感受野,所以我們一般要更多地依靠低層的細節信息才能識別出小目標.為了證明這個結論,我們利用梯度上升法對圖像特征進行重構[21],以此可視化地展示深度網絡不同層提取出的小目標特征有何區別.如圖2所示,圖2(a)中邊框里的挖掘機為需要檢測的小目標,我們通過VGG16網絡提取它的特征,并利用conv1_2和conv5_3層提取出的特征對圖像進行重構;圖2(b)是用VGG16網絡conv1_2層特征重構的結果,可以清楚看出是一個挖掘機;而圖2(c)是用VGG16網絡conv5_3層特征重構的結果,只能看清輪廓.所以對于小目標檢測的問題,卷積神經網絡的低層特征往往比高層特征要更加有效.

Fig. 2 Reconstructed image圖2 重構圖像

Fig. 3 Network structure圖3 網絡結構

在原始Faster-RCNN的方法中,候選區域由候選區域生成網絡(region proposal network, RPN)生成,候選區域的特征僅由最后一個卷積層經過目標區域池化得到,利用這樣的高層特征對小目標進行檢測顯然會存在比較大的問題[22].因此我們參考了SSD方法的思想,對Faster-RCNN引入了多尺度檢測,即不單單依靠最后一層的feature map進行檢測,而是對網絡中的多個尺度的feature map都進行生成候選區域的操作.具體流程如圖3所示,輸入圖片經過一個卷積神經網絡提取特征,將不同層提取出的多個不同尺度的feature map送入各自的RPN生成候選區域,不同尺度對應的RPN是有區別的,因為低層神經元的感受野小,對應的anchor box尺寸也要小,所以越低層的特征得到的候選區域越小,具體anchor設置將在實驗環節詳細說明.得到生成的候選區域后,求取feature map映射,再通過ROI pooling將特征變成統一大小,最后送入分類器,這樣就可以充分利用低層特征對小目標進行檢測.這樣的結構適用于不同的特征網絡,我們在實驗部分分別對利用ZF[23]和VGG16[24]2種特征網絡的Faster-RCNN方法進行改進.對于ZF網絡,將conv1,conv2,conv5這3層的輸出送入候選區域生成網絡和ROI pooling進行多尺度檢測;對于VGG16網絡,將conv1_2,conv2_2,conv3_3,conv4_3,conv5_3這5層的輸出送入候選區域生成網絡和ROI pooling進行多尺度檢測,其他具體參數設置會在實驗部分說明.

2.2 訓練數據變換

網絡結構的改進解決了只利用高層網絡特征難以檢測小目標的問題,針對小目標難以標記、缺乏訓練樣本,我們利用了從網絡上獲取的圖像作為訓練數據,共7 804張.然而通過搜索引擎關鍵字檢索出來的圖像往往是以目標為主體的,相比測試圖像中的小目標,這些圖像中的目標分辨率較大.比如:我們通過“挖掘機”檢索出來的一般都是以挖掘機為主體的圖像,挖掘機這個目標在圖像中所占的比例非常大,而測試圖像中目標所占比例卻非常小,兩者的像素不一樣多,所反映的信息量也不一樣,因而數據的分布可能存在差異.如圖4所示,圖4第1列為部分網上獲取的高分辨率大目標訓練圖像,圖4第2列為采樣處理后的訓練圖像,圖4第3列和第4列為小目標檢測的部分測試圖像.

Fig. 4 Training data and test data圖4 訓練數據與測試數據

Fig. 5 The distribution of different object圖5 不同目標的分布

為了說明高分辨率(high resolution, HR)目標和低分辨率(low resolution, LR)目標的分布確實存在差異,我們利用t-SNE[25]的方法對這2類圖像中的目標特征進行降維.我們以原始Faster-RCNN結構進行驗證,特征網絡為VGG16.用目標低分辨率圖像訓練網絡,再用目標低分辨率圖像和目標高分辨率圖像測試.對ROI pooling層后得到的大小相同的特征向量用T-SNE方法降維.可視化結果如圖5所示,紫色圓點代表低分辨率目標,藍色十字代表高分辨率目標,可見兩者確實存在很大差異.

針對這樣一個分布差異,我們采用下采樣和上采樣的方式對訓練數據進行預處理.使用的下采樣方法包括最大池化和平均池化,這使得高分辨率圖像的信息量減少.而使用的上采樣方法包括線性插值、區域插值和最近鄰插值,這將圖像還原為原始大小,并引入了一些噪聲.從人的視覺上來看,采樣后的訓練圖像和測試圖像更類似,我們在實驗部分對這6種采樣方法的組合進行了實驗,經過效果最好的采樣方法處理過后的訓練圖像如圖4第2列所示.實驗證明,下采樣和上采樣可以有效提升使用高分辨率目標圖像訓練出的模型檢測目標低分辨率圖像的檢測精度.不同的下采樣和上采樣方式對檢測效果的影響會在實驗部分給出說明.

3 實 驗

3.1 實驗設置

實驗采用的數據集由2部分組成,檢測的小目標為挖掘機.一部分來源于基站鐵塔上的監控攝像頭所拍攝的圖像,共有14 449張,其中的挖掘機通常非常小;另一部分來源于通過搜索引擎搜索“挖掘機”關鍵字獲取的高分辨率大目標圖像,共有7 804張,其中的挖掘機通常比較大,如圖4所示.

為了比較方法的精度,分別采用了ZF和VGG16這2種網絡作為特征網絡進行實驗.因為檢測目標是挖掘機,所以anchor box的比例參數都設置為0.7,1,1.4.每個尺度的feature map對應候選區域生成網絡的anchor尺寸不同,對于ZF網絡:conv1層對應的尺度參數為2,4,8;conv2層對應的尺度參數為4,8,16;conv5層對應的尺度參數為8,16,32;對于VGG16網絡:conv1_2層對應的尺度參數為2,4;conv2_2層對應的尺度參數為4,8;conv3_3層對應的尺度參數為4,8;conv4_3層對應的尺度參數為8,16;conv5_3層對應的尺度參數為8,16;其余參數均與原始Faster-RCNN一致.

為了比較方法的計算復雜度,在比較精度的實驗設置基礎上作如下設置:對于ZF網絡,分別測試只采用conv1特征、conv2特征、conv5特征和同時采用三者的方法復雜度;對于VGG網絡,分別測試只采用conv1_2特征、conv2_2特征、conv5_3特征和同時采用三者的方法復雜度.以平均單張圖像的檢測時間為計算復雜度的評估指標,單位為s.

3.2 實驗結果

將目標低分辨率數據集劃分成2部分,7 225張用于評估模型性能,7 224張用于單獨或搭配目標高分辨率圖像進行訓練,在不同特征網絡下所得的檢測結果如表1所示:

Table 1 The mAP of Detection 表1 檢測精度 %

第1列表示模型使用的網絡結構,帶MS前綴的表示使用多尺度檢測改進的模型.之后每一列第1行表示訓練數據,HR表示從網上獲取的目標高分辨率圖像,LR表示用于訓練的7 224張目標低分辨率圖像,其余數值分別表示在對應數據下訓練出的模型的檢測精度,指標為平均精度均值(mean average precision, mAP),在這里實際上是挖掘機的AP.

從表1中可以得出2個結論:

1) 不論采用高分辨率圖像還是低分辨率圖像作為訓練數據,使用多尺度檢測的方法都可以有效提升小目標的檢測精度,這說明結合深度網絡的低層和高層特征進行多尺度檢測的方法確實可行;

2) 僅使用高分辨率圖像作為訓練數據的模型檢測效果不佳,僅使用低分辨率圖像作為訓練數據的模型檢測效果較好,而兩者結合時性能折中,這說明直接使用網上獲取的目標高分辨率圖像訓練是不行的,想要用這部分數據必須解決訓練集和測試集之間存在的差異,即高分辨率目標和低分辨率目標的差異.

將7 225張測試圖像的平均檢測時間作為評估計算復雜度的指標,不同特征網絡下所得的檢測結果如表2所示:

Table 2 The Time of Detection 表2 檢測時間 s

第1列表示模型使用的網絡結構,之后每一列第1行表示采用哪一層的特征進行檢測,All表示采用全部3個特征.為便于表格說明,VGG的conv1_2,conv2_2,conv5_3分別簡寫為conv1,conv2,conv5.

從表2中可以得出2個結論:

1) 在只利用一個特征檢測的前提下,利用高層特征的平均檢測時間少,這說明大的低層特征雖然適用于小目標檢測,但會帶來額外的計算開銷;

2) 同時利用多個特征增加的計算開銷仍然在可以接受的范圍內,可以勝任實時性要求不高的任務.

通過對目標高分辨率圖像進行下采樣和上采樣得到新的訓練數據,用新數據訓練出的模型檢測精度如表3所示.表3中的字符含義與表1基本一致,訓練數據HR后的2個后綴分別表示不同下采樣和上采樣的操作組合,第1個后綴M和A分別表示最大池化和平均池化2種下采樣的方式,池化操作的窗口為2×2,滑動步長為2,第2個后綴A,L,N分別表示區域插值、線性插值和最近鄰插值3種上采樣的方式.

從表3中可以看出:

1) 只需要通過簡單的下采樣就可以大幅提升目標高分辨率圖像訓練出的模型精度,這說明下采樣的方式可以從一定程度上消除目標高分辨率圖像和目標低分辨率圖像數據差異帶來的影響;

2) 最大池化在這樣一個問題背景下一般比平均池化效果好;

3) 在下采樣的基礎上使用線性插值上采樣的方法可以略微提升模型的精度,目前還不能從理論上解釋原因,但可能是因為這樣增加了噪聲,從一定程度上防止了過擬合;

4) 結合采樣變換后的目標高分辨率圖像和目標低分辨率圖像訓練出的模型檢測精度較高,不但沒有出現表1精度降低的情況,反而提升了精度,這說明對目標高分辨率圖像進行采樣變換確實可以消除目標高分辨率圖像和目標低分辨率圖像數據差異帶來的影響.在小目標檢測數據難以標記、缺少訓練數據的情況下,可以通過這種方式簡單、快速地增加訓練數據量,提升檢測精度.部分檢測結果如圖6所示.

Table3ThemAPofDetectionwithSampledTrainingData
表3訓練數據采樣后的檢測精度%

NetworkHRLRLR+HR-M-LHR-MHR-M-AHR-M-LHR-M-NHR-AHR-A-AHR-A-LHR-A-NMS-ZF20.456.258.447.347.749.445.843.242.644.036.8MS-VGG1630.558.761.552.351.255.249.643.343.246.237.7

Note: First suffix—M: max pooling; A: average.

Second suffix—L: linear interpolation; N: nearest neighbor interpolation; A: area interpolation

Fig. 6 Partial detection results圖6 部分檢測結果

同樣,為了說明對目標高分辨率圖像進行采樣變換可以消除目標高分辨率圖像和目標低分辨率圖像數據差異帶來的影響,我們利用T-SNE[25]方法對采樣操作前后目標的特征進行降維.

我們以實驗效果最好的MS-VGG16結構進行驗證.用目標低分辨率圖像訓練網絡,再用目標低分辨率圖像、目標高分辨率圖像和采樣操作后的目標高分辨率圖像三者來測試.對ROI pooling層后得到的大小相同的特征向量用T-SNE方法降維.

可視化的結果如圖7所示,紫色圓點代表低分辨率目標,藍色十字代表高分辨率目標,紅色叉代表采樣后的高分辨率目標,可以看出采樣操作后的特征分布確實比采樣操作前的特征分布更接近目標低分辨率圖像的特征分布.

Fig. 7 The distribution of different objects after sampling圖7 不同目標采樣后的分布

4 總結與展望

目標檢測作為計算機視覺領域的一個基本任務一直受到許多科研人員的關注,目標檢測方法的性能也直接關系到許多高層領域的研究.當前通用的目標檢測方法在小目標檢測上效果不佳,而專門為小目標檢測設計的方法又不具有通用性,因而本文針對小目標檢測問題進行研究.首先,我們根據卷積神經網絡的特性,對Faster-RCNN進行改進,引入了多尺度檢測,改進后的方法比原始Faster-RCNN的檢測精度提升了約5%;然后,我們用下采樣和上采樣組合的方式變換網上獲取的高分辨率圖像,使高分辨率目標的特征分布更接近低分辨率目標,從而可以很方便地擴充訓練數據集,解決了小目標數據難以標記的問題.

將來的工作可以從2個方面進行:現在的目標檢測領域幾乎都是深度學習的方法,雖然深度學習方法在提取圖像特征方面的表現確實非常優秀,但是對于語義信息相對不是非常明顯的小目標,我們也可以嘗試研究一些非深度學習的方法;其次,當目標非常小時,目標檢測就退化成了像素分類的問題,我們也可以嘗試從像素分類的角度出發,研究分割的一些方法能以什么樣的形式應用在小目標檢測的問題上.

猜你喜歡
低分辨率高分辨率尺度
探討高分辨率CT在肺部小結節診斷中的應用價值
財產的五大尺度和五重應對
基于邊緣學習的低分辨率圖像識別算法
高分辨率合成孔徑雷達圖像解譯系統
樹木的低分辨率三維模型資源創建實踐
智能相架
宇宙的尺度
關于為“一帶一路”提供高分辨率遙感星座的設想
高分辨率對地觀測系統
9
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合