李成豪,張 靜,2,胡 莉,肖賢鵬,張 華
1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010
2.中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,合肥 230026
目標(biāo)檢測是圖像分割、圖像標(biāo)注和圖像理解等高級計算機視覺問題的一項基本任務(wù)。與圖像分類不同,基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[1-2]的目標(biāo)檢測算法需要用一個網(wǎng)絡(luò)完成目標(biāo)分類和目標(biāo)定位兩個任務(wù)。目前基于CNN的目標(biāo)檢測算法主要分為兩類,第一類是兩級(two-stage)檢測算法,例如R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5]等;第二類是單級(one-stage)檢測算法,例如YOLO[6]、SSD[7]、RetinaNet[8]等。隨著現(xiàn)代生活中計算機視覺系統(tǒng)的逐漸復(fù)雜化和智能化,如無人駕駛中對遠(yuǎn)處車輛、行人和交通標(biāo)志的識別[9],醫(yī)學(xué)成像中一些早期疾病的檢測,自動化工業(yè)中的工件檢測等,都需要考慮到目標(biāo)太小、像素低,不便于提取特征的問題,因此研究小目標(biāo)檢測以適應(yīng)這些特定場景的檢測任務(wù)很有必要。
雖然目前通用的目標(biāo)檢測算法已經(jīng)大大提高了檢測精度和效率,但是因為CNN重復(fù)使用卷積層、池化層提取高級語義信息,使小目標(biāo)的像素在這個過程中被過濾掉了,導(dǎo)致小目標(biāo)的檢測性能很差。為解決這個問題,SSD算法采用一種特征分級結(jié)構(gòu)的思想,即在每一個尺度提取的特征圖上都進(jìn)行檢測,相比單一尺度特征的檢測算法有了很好的提升。可是由于SSD淺層特征語義信息不豐富,加之小目標(biāo)對應(yīng)的Anchor較少,SSD在實際應(yīng)用中的小目標(biāo)檢測效果不理想。DSSD[10]算法針對SSD中小目標(biāo)對應(yīng)Anchor較少導(dǎo)致的訓(xùn)練不充分問題做出改進(jìn),改善了對小目標(biāo)的檢測能力。但DSSD依然沒有獲得足夠的小目標(biāo)語義信息,并且引入反卷積后,計算開銷大,使得DSSD的預(yù)測速度不如SSD。文獻(xiàn)[11]通過建立由深層特征到淺層特征的恒等映射的方式,直接利用深層特征的高級語義信息對淺層特征進(jìn)行增強,改善了SSD在小目標(biāo)檢測上的缺陷。但是這種方法得益于SSD框架,也局限于SSD框架,對小目標(biāo)檢測的提升空間不大。特征金字塔網(wǎng)絡(luò)FPN[12]是第一種通過融合不同層級特征來增強特征的方法,采用Top-Down的特征融合結(jié)構(gòu),很好地解決了淺層特征語義信息不豐富的問題。盡管FPN提高了小目標(biāo)的檢測精度,但FPN只對相鄰特征進(jìn)行了融合,忽略了頂層和底層的特征融合,同時沒有很好地解決感受野與目標(biāo)尺度匹配的問題,無法充分發(fā)揮出小目標(biāo)的檢測性能。
針對FPN的兩個問題,以RetinaNet作為基礎(chǔ)框架,提出一種基于多尺度感受野融合的小目標(biāo)檢測算法S-RetinaNet,采用具有反饋結(jié)構(gòu)的遞歸特征金字塔網(wǎng)絡(luò)RFPN[13]對特征進(jìn)行充分融合,并增加三個多尺度感受野融合模塊MRFF分別處理RFPN的不同大小輸出,使感受野與目標(biāo)尺度相匹配。通過在PASCAL VOC和MS COCO數(shù)據(jù)集上的對比實驗和消融實驗表明,相比RetinaNet,S-RetinaNet對小目標(biāo)檢測有較大改善。
人類通過視覺識別目標(biāo)時會通過把高級語義信息回傳到反饋連接中,來選擇性地增強和抑制神經(jīng)的輸出。遞歸特征金字塔網(wǎng)絡(luò)RFPN引入這個思想,在普通特征金字塔的基礎(chǔ)上增加了一個反饋結(jié)構(gòu),通過這種反饋連接能夠直接獲取來自分類和回歸預(yù)測的梯度信號,使得目標(biāo)檢測的錯誤回傳信息能夠更直接地調(diào)整主干網(wǎng)絡(luò)參數(shù),從而加快訓(xùn)練速度并提高檢測性能。另外RFPN的特征融合操作采用兩階段結(jié)構(gòu),能夠避免單階段融合造成的特征融合不充分的問題。如圖1所示,第一階段的融合同F(xiàn)PN,設(shè)bi(i=3、4、5)為主干網(wǎng)絡(luò)的第i級操作,Bi為自下而上的主干網(wǎng)絡(luò)的第i級輸出。fi為自上而下的特征金字塔的第i級操作,F(xiàn)i為特征金字塔的第i級輸數(shù)。輸入和輸出的關(guān)系可以表示為:
圖1 RFPN結(jié)構(gòu)圖Fig.1 RFPN structure
第二階段的融合通過反饋連接將第一階段的輸出Fi與第二階段的輸入Bi(Bi')聯(lián)系起來。設(shè)Ri為將Fi和Bi(Bi')結(jié)合的操作,因此輸入和輸出的關(guān)系可以表示為:
其中當(dāng)i=3時,此時Bi=B3為bi(R(F3,B3))。
盡管較小的感受野有利于檢測小目標(biāo),但是相對于目標(biāo)尺度而言的,小于或接近小目標(biāo)尺度的感受野不能發(fā)揮出對小目標(biāo)檢測的最佳效果[14]。需要適當(dāng)增大感受野,借助被檢測目標(biāo)周圍的有效上下文信息,以提升對小目標(biāo)的檢測效果。
多尺度感受野融合模塊MRFF通過多個共享卷積進(jìn)行不同尺度的感受野擴(kuò)大,并進(jìn)行融合,其設(shè)計思路來源于Inception module[15],Inception module將1×1、3×3、5×5卷積和3×3 pooling堆疊在一起,一方面增加了網(wǎng)絡(luò)的寬度,另一方面增加了網(wǎng)絡(luò)對多尺度的適應(yīng)性。相比Inception module,MRFF不同之處在于使用了3×3、5×5、7×7、9×9卷積進(jìn)行堆疊,其中5×5、7×7、9×9卷積分別使用兩個3×3、三個3×3和四個3×3卷積等效,并且多個等效3×3卷積可作為共享卷積,這樣在引入上下文信息的同時,不但減輕了因為多次卷積導(dǎo)致目標(biāo)分辨率下降的問題,而且大大簡化了網(wǎng)絡(luò)結(jié)構(gòu),使MRFF易嵌入到RetinaNet網(wǎng)絡(luò)框架中。
MRFF的結(jié)構(gòu)如圖2所示。首先通過1×1卷積調(diào)整通道數(shù)為原來的1/4,并對輸入的特征分別進(jìn)行3×3、5×5、7×7、9×9卷積操作,卷積過程中通過控制stride、padding和卷積核數(shù)量的變化保持輸出特征圖大小和通道數(shù)不變。然后對獲得的不同尺度感受野的特征進(jìn)行融合輸出,融合操作采用concatenate,即將四次卷積后的輸出進(jìn)行堆疊,使其和調(diào)整前的通道數(shù)256保持一致。最后通過輸出的特征進(jìn)行目標(biāo)分類和邊框回歸。為減少網(wǎng)絡(luò)的參數(shù)量,提高訓(xùn)練和檢測效率,MRFF使用兩個3×3卷積代替一個5×5卷積,三個3×3卷積代替一個7×7卷積,以及四個3×3卷積代替9×9卷積,其中第二、三、四個3×3卷積為共享卷積。相比二階段目標(biāo)檢測算法Faster R-CNN基于區(qū)域提議擴(kuò)大感受野的方法,MRFF使用的參數(shù)更少。針對單獨使用3×3、5×5、7×7或9×9卷積增大感受野,造成感受野與目標(biāo)尺度不匹配的問題,MRFF模塊對感受野進(jìn)行四種不同尺度的擴(kuò)大,并進(jìn)行融合,能夠有效地解決這個問題,提升小目標(biāo)的檢測精度。
圖2 MRFF結(jié)構(gòu)圖Fig.2 MRFF structure
S-RetinaNet目標(biāo)檢測算法以RetinaNet框架為基礎(chǔ),網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,包括四個部分。第一部分是主干網(wǎng)絡(luò),采用ResNet50,輸出為B5、B4、B3三個有效特征層。第二部分是遞歸特征金字塔網(wǎng)絡(luò)RFPN,對B5、B4、B3三個特征層進(jìn)行特征融合。針對第一階段融合,首先分別通過1×1,步長為1的卷積調(diào)整B5、B4、B3的通道數(shù)為256,然后對B5進(jìn)行第一層金字塔操作得到F5,并對F5上采樣產(chǎn)生與B4相同大小的特征圖,最后與B4相加,并通過金字塔第二層操作得到F4,同樣的以F4為基準(zhǔn)與B3進(jìn)行特征融合可以得到F3。針對第二階段融合,首先通過輸出的Fi(i=3、4、5)調(diào)整通道數(shù)為Bi大小,并與Bi相加得到Bi'(當(dāng)i>3時,Bi'為Fi+B'i-1),然后繼續(xù)第一次融合的操作,最后可以得到RFPN的最終輸出F5'、F4'、F3'。第三部分是MRFF,分別處理RFPN的三個輸出,對不同尺度的特征層進(jìn)行四種不同尺度感受野的擴(kuò)大,并進(jìn)行融合。最后一部分是目標(biāo)分類和框的回歸,輸入為經(jīng)過三個MRFF處理的結(jié)果,輸出是目標(biāo)的位置和類別。
圖3 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Net structure
網(wǎng)絡(luò)的改進(jìn)主要有三點:一是引入了RFPN,通過在FPN中增加反饋連接,彌補FPN特征融合不充分的問題;二是在遞歸特征金字塔的多尺度輸出后加入MRFF模塊增大感受野,使感受野與目標(biāo)尺度相匹配,以獲取更多有效上下文信息;三是增加MobileNetV1[16]主干網(wǎng)絡(luò),構(gòu)建了輕量化版的S-RetinaNet目標(biāo)檢測算法,使得S-RetinaNet能夠更好地部署在硬件資源有限的平臺上。
2.1.1 數(shù)據(jù)集
本實驗在PASCAL VOC和MS COCO數(shù)據(jù)集上進(jìn)行網(wǎng)絡(luò)訓(xùn)練和測試。針對VOC數(shù)據(jù)集,訓(xùn)練集采用VOC2007(train+val)+VOC2012(train+val),測試集采用VOC2007 test;針對COCO數(shù)據(jù)集,訓(xùn)練集采用COCO2017 train,測試集為COCO2017 val。
2.1.2 評估標(biāo)準(zhǔn)
S-RetinaNet算法采用mAP(mean average precision)來評估檢測性能,其公式如下:
這里Recall(R)是召回率,Precision(P)是精確度,TP為正樣本被分為正樣本的數(shù)量,F(xiàn)N為正樣本被錯誤的分為負(fù)樣本的數(shù)量,F(xiàn)P為負(fù)樣本被錯誤的分為正樣本的數(shù)量,TP+FN為全部正樣本數(shù)量,TP+FP為全部被分為正樣本的數(shù)量。
TP和FP根據(jù)IOU(intersection over union)閾值來判斷,IOU計算公式如下:
其中,A表示真實框(Ground Truth Box),B表示基于Anchor并通過檢測模型預(yù)測出來的框。
2.1.3 訓(xùn)練細(xì)節(jié)
訓(xùn)練過程中為加快收斂速度,backbone采用ImageNet分類任務(wù)的預(yù)訓(xùn)練權(quán)重;另外在前半段epoch凍結(jié)backbone訓(xùn)練,后半段epoch解凍backbone進(jìn)行訓(xùn)練,提高資源利用率,并進(jìn)一步加快收斂速度。
實驗采用SGD作為優(yōu)化器,其中momentum為0.9,weight decay為5E-4。在一塊NVIDIA Titan Xp GPU上進(jìn)行訓(xùn)練,訓(xùn)練的batch size設(shè)為8,迭代次數(shù)設(shè)置為100個epoch,初始學(xué)習(xí)率為0.01,在70和90個epoch后分別降低10%,每張圖像的尺寸被調(diào)整到500×500,并利用圖像旋轉(zhuǎn)、顏色變化、平移等方法進(jìn)行數(shù)據(jù)增強。
表1顯示,在不同主干網(wǎng)絡(luò)下,增加MRFF和RFPN后的S-RetinaNet均比改進(jìn)前RetinaNet的mAP高,其中MobileNetV1提高了2.1個百分點,ResNet-50提高了2.3個百分點。同時相比Fast R-CNN、Faster R-CNN、SSD、YOLO、DSSD五種目標(biāo)檢測算法的mAP,基于ResNet-50的S-RetinaNet算法分別高出11.5、8.3、5.3、16.1、4.9個百分點。另外基于MobileNetV1的輕量化S-RetinaNet算法,精度接近Faster R-CNN,檢測速度比Faster R-CNN快了10倍。
表1 VOC2007 test對比Table 1 VOC2007 test comparision
圖4是S-RetinaNet算法與其他算法的可視化對比,直觀地反映出了各個算法的檢測精度和速度。
圖4 VOC2007 test對比可視化Fig.4 VOC2007 test comparision contrast visualization
表2列出了RetinaNet和S-RetinaNet在不同Backbone下每一類的AP值的對比結(jié)果。從表中可以看出,通過對RetinaNet增加MRFF模塊和RFPN,Bird、Bottle、Plant等小目標(biāo)的AP值提升明顯,如選擇ResNet-50作為主干網(wǎng)絡(luò),分別提高了4.8、4.6、2.1個百分點。
表2 每個類別的mAP對比Table 2 mAP for each category %
本實驗采用與2.2節(jié)相同的設(shè)置進(jìn)行,其中主干網(wǎng)絡(luò)采用ResNet50。從表3可以看出,通過單獨加入MRFF模塊和RFPN,mAP分別達(dá)到了78.7%、78.4%,相比未加入之前,分別提高了1.5、1.2個百分點。證明了MRFF模塊和RFPN都對提升檢測精度帶來了幫助。在同時加入MRFF模塊和RFPN后,mAP達(dá)到了最高79.5%,進(jìn)一步證明了MRFF模塊和RFPN對提升RetinaNet檢測精度的有效性。
表3 VOC2007 test對比Table 3 VOC2007 test comparision
不同于PASCAL VOC數(shù)據(jù)集上的優(yōu)化器選擇,在MS COCO數(shù)據(jù)集上的實驗采用Adam作為優(yōu)化器。在一塊NVIDIA Titan Xp GPU上進(jìn)行訓(xùn)練,訓(xùn)練的batch size設(shè)為8,迭代次數(shù)設(shè)置為50個epoch,初始學(xué)習(xí)率為0.01,在30和40個epoch后分別降低10%,每張圖像的尺寸被調(diào)整到500×500,并利用圖像旋轉(zhuǎn)、顏色變化、平移等方法進(jìn)行數(shù)據(jù)增強。
表4顯示在主干網(wǎng)絡(luò)MobileNetV1下的S-RetinaNet比RetinaNet的AP值高出1.2個百分點,在主干網(wǎng)絡(luò)ResNet-50下高出1.6個百分點,其中針對小目標(biāo)精度APs的提升更為顯著,分別提高了2.1、2.7個百分點。
表4 COCO2017 val對比Table 4 COCO2017 val comparision %
圖5是RetinaNet和S-RetinaNet的可視化檢測結(jié)果對比。共五組,其中上面是RetinaNet的檢測結(jié)果,下面是S-RetinaNet的檢測結(jié)果。通過對比可以發(fā)現(xiàn),S-RetinaNet能夠檢測出更多的小目標(biāo),如(1)組中的broccoli,(2)組中的toothbrush、cellphone。同時針對已經(jīng)檢測出的小目標(biāo),檢測精度也得到了提高,如(3)組中主角后方的person、chair,(4)組中較小的dog,(5)中較小的sheep。
圖5 兩種算法的可視化對比Fig.5 Visual comparison of two algorithm
為提高RetinaNet算法的小目標(biāo)檢測性能,提出一種小目標(biāo)檢測算法S-RetinaNet,引入多尺度感受野融合模塊MRFF和遞歸特征金塔網(wǎng)絡(luò)RFPN,使用MRFF分別處理RFPN的三個輸出,對不同尺度的特征層分別進(jìn)行四種尺度的感受野擴(kuò)大,并進(jìn)行多尺度感受野融合,有效解決了感受野與目標(biāo)尺度不匹配的問題,為小目標(biāo)提供了更多的上下文信息。實驗表明,S-RetinaNet在PASCAL VOC和MS COCO數(shù)據(jù)集上的平均精度較RetinaNet分別提高了2.3和1.6個百分點,其中小目標(biāo)檢測精度APS提升更為顯著,驗證了MRFF模塊和RFPN的有效性。由于在現(xiàn)有公共數(shù)據(jù)集中的圖片所含小目標(biāo)太少,使得網(wǎng)絡(luò)對小目標(biāo)的訓(xùn)練不充分,因此后續(xù)將建立小目標(biāo)數(shù)據(jù)集并開展相關(guān)研究工作。