徐 融,邱曉暉
(南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京 210003)
目標(biāo)檢測(cè)(object detection)是計(jì)算機(jī)視覺領(lǐng)域的基本任務(wù)之一,在學(xué)術(shù)界已有二十多年的研究歷史[1]。傳統(tǒng)的目標(biāo)檢測(cè)算法首先要在給定的圖像上進(jìn)行區(qū)域選擇(滑窗),然后對(duì)這些區(qū)域進(jìn)行特征提取,最后使用訓(xùn)練好的分類器進(jìn)行分類[2]。這類方法使用手工設(shè)計(jì)的特征,魯棒性差,過程復(fù)雜。
近年來,隨著卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展,深度學(xué)習(xí)被廣泛應(yīng)用于目標(biāo)檢測(cè)。與傳統(tǒng)的目標(biāo)檢測(cè)方法相比,使用深度學(xué)習(xí)進(jìn)行檢測(cè)具有很多優(yōu)勢(shì)。例如傳統(tǒng)方法需要研究人員利用相關(guān)知識(shí)及經(jīng)驗(yàn)手動(dòng)提取特征,基于深度學(xué)習(xí)的方法可以通過大量數(shù)據(jù)學(xué)習(xí)相應(yīng)數(shù)據(jù)差異的特征,并且所得到的特征更具代表性。深度學(xué)習(xí)模型通過模擬人腦的視覺感知系統(tǒng),直接從原始圖像中提取特征,并逐層傳遞,以獲得圖像的高維信息。目前優(yōu)秀的深度學(xué)習(xí)模型大致可以分為兩類:第一類模型將目標(biāo)檢測(cè)分為兩步(two stage)進(jìn)行,如R-CN[3]、SPP-Net[4]、Fast-RCNN[5]、Faster-RCNN[6]等,這類算法首先從目標(biāo)圖像的區(qū)域候選框中提取目標(biāo)信息,然后利用檢測(cè)網(wǎng)絡(luò)對(duì)候選框中的目標(biāo)進(jìn)行位置的預(yù)測(cè)以及類別的識(shí)別;第二類模型則是基于端到端(one stage)進(jìn)行的,如SSD[7]、YOLO[8-9]等,這類方法不需要從圖像中預(yù)先提取候選網(wǎng)絡(luò),而是直接對(duì)圖像中的目標(biāo)進(jìn)行位置的預(yù)測(cè)以及類別的識(shí)別。因此,第二類網(wǎng)絡(luò)比第一類網(wǎng)絡(luò)具有較快的檢測(cè)速度。
為了提高網(wǎng)絡(luò)目標(biāo)檢測(cè)的精度,文中以YOLO V3[10]為基礎(chǔ),在PASCAL VOC數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試。首先對(duì)YOLO V3的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),將經(jīng)過2倍降采樣的特征圖進(jìn)行卷積,再分別添加到第二及第三個(gè)殘差塊的輸入端,最大化利用淺層特征信息。此外,在8倍降采樣的特征圖后連接RFB(receptive field block)模塊[11]來融合不同尺寸的特征。
YOLO,即You Only Look Once的縮寫,是一個(gè)基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的目標(biāo)檢測(cè)算法。YOLO V3使用維度聚類得到的錨框來預(yù)測(cè)邊界框,每個(gè)邊界框預(yù)測(cè)4個(gè)坐標(biāo):邊界框的中心坐標(biāo)以及邊界框的寬和高。其使用邏輯回歸預(yù)測(cè)每個(gè)邊界框的類別得分,并使用均方和誤差作為損失函數(shù)。通過置信度來表示邊界框含有目標(biāo)的可能性大小。如果某個(gè)先驗(yàn)邊界框與真實(shí)對(duì)象重疊超過任何其他邊界框,則該值置為1。如果邊界框的優(yōu)先級(jí)不是最高但是與真實(shí)對(duì)象重疊超過某個(gè)閾值,那么該值置為0。YOLO V3使用DarkNet53網(wǎng)絡(luò)進(jìn)行特征提取,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLO V3網(wǎng)絡(luò)結(jié)構(gòu)
DarkNet53融合了ResNet[12],共包含5個(gè)殘差塊,每個(gè)殘差塊由數(shù)量不等的殘差單元組成,每個(gè)殘差單元又由兩個(gè)DBL(Darknetconv2d_BN_Leaky)單元及殘差操作構(gòu)成[13],如圖2(a)所示。其中,每個(gè)DBL單元又是由卷積層、歸一化(batch normalization)[14]和激活函數(shù)(leaky relu)組成,如圖2(b)所示。殘差塊的使用既可以防止有效信息的丟失,也能夠防止深層網(wǎng)絡(luò)訓(xùn)練時(shí)出現(xiàn)梯度消失[15]。除此之外,該網(wǎng)絡(luò)中沒有池化層,它使用步長(zhǎng)為2的卷積做下采樣來代替池化操作,進(jìn)一步防止有效信息的丟失,這對(duì)小目標(biāo)來說是十分有利的。
(a)殘差單元
(b)DBL單元圖2 殘差單元構(gòu)成
YOLO V3網(wǎng)絡(luò)使用均方和誤差作為損失函數(shù),其由三部分組成,分別預(yù)測(cè)框定位誤差、有無目標(biāo)的IOU誤差以及分類誤差。損失函數(shù)loss如下所示:
原YOLO V3網(wǎng)絡(luò)是通過對(duì)COCO數(shù)據(jù)集的聚類來生成9個(gè)錨框,每個(gè)尺寸的特征圖分別對(duì)應(yīng)3個(gè)錨框。網(wǎng)絡(luò)在訓(xùn)練階段,需要計(jì)算真實(shí)框與哪個(gè)錨框的IOU最大,標(biāo)記該錨框?qū)?yīng)的置信度為1。在計(jì)算loss時(shí),這個(gè)錨框?qū)?yīng)的預(yù)測(cè)有回歸、置信度和分類的誤差,大于某個(gè)閾值但不是最優(yōu)的錨框?qū)?yīng)的預(yù)測(cè)值則沒有置信度和定位損失,小于閾值的則有置信度損失。需要說明的是,訓(xùn)練時(shí)預(yù)測(cè)的值為高和寬相對(duì)于錨框高和寬的值。在測(cè)試階段,則根據(jù)置信度與閾值的關(guān)系來判斷預(yù)測(cè)的邊框是否有效,這時(shí)錨框的作用就是還原預(yù)測(cè)邊框在輸入圖像中的大小。而文中采用的是PASCAL VOC數(shù)據(jù)集,所以需要重新進(jìn)行聚類。
YOLO V3網(wǎng)絡(luò)中采用特征金字塔來增強(qiáng)檢測(cè)效果,輸出的特征圖分別經(jīng)過了8倍、16倍、32倍的降采樣,也就是說當(dāng)被檢測(cè)目標(biāo)不足8 pixel×8 pixel時(shí),最后在輸出的特征圖上將很難檢測(cè)到它。為了使更多的小目標(biāo)信息得以更充分地利用,文中將經(jīng)過一次降采樣的特征圖疊加到第二及第三個(gè)殘差塊的輸入端。此外,在52×52的特征圖后連接RFB(RF Block)模塊。RFB模塊通過模擬人類視覺的感受野結(jié)構(gòu)(receptive fields,RFs)來加強(qiáng)網(wǎng)絡(luò)的特征提取功能。特征圖首先通過由不同尺寸卷積核構(gòu)成的多分支結(jié)構(gòu),然后再經(jīng)過空洞卷積層增加感受野,最后將不同尺寸的卷積層輸出進(jìn)行concat操作,從而達(dá)到融合不同特征的目的。連接結(jié)構(gòu)如圖3所示。
圖3 RFB連接結(jié)構(gòu)
文中利用PASCAL VOC 2007+2012數(shù)據(jù)集中的訓(xùn)練圖片對(duì)改進(jìn)后的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使用PASCAL VOC 2012中的測(cè)試圖片進(jìn)行測(cè)試。采用平均精確值(mean average precision,mAP)作為評(píng)價(jià)指標(biāo),與原網(wǎng)絡(luò)進(jìn)行比較實(shí)驗(yàn)。
為了驗(yàn)證提出的改進(jìn)網(wǎng)絡(luò)的有效性,在PC機(jī)上進(jìn)行了實(shí)驗(yàn),機(jī)器配置如下:Window10操作系統(tǒng),Intel Core i7-8750H處理器,NVIDIA GTX1060獨(dú)立顯卡,6 G顯存,8 G內(nèi)存。采用Tensorflow框架進(jìn)行訓(xùn)練,時(shí)長(zhǎng)為24小時(shí)。
(1)訓(xùn)練算法:每次訓(xùn)練隨機(jī)選取8張圖片,初始學(xué)習(xí)率為1e-4,且逐步遞減,但不小于1e-6,IOU置為0.5;
(2)網(wǎng)絡(luò)參數(shù)微調(diào):采用反向傳播對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行微調(diào)。前20個(gè)epoch先對(duì)最后一層網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化,后30個(gè)epoch對(duì)整個(gè)網(wǎng)絡(luò)的網(wǎng)絡(luò)參數(shù)進(jìn)行調(diào)整;
(3)訓(xùn)練數(shù)據(jù):采用PASCAL VOC數(shù)據(jù)集進(jìn)行訓(xùn)練和測(cè)試,其中將VOC2007與VOC2012的trainval文件夾下的圖片(共12 000多張)作為訓(xùn)練集;測(cè)試集選用VOC2007的測(cè)試集。
為了驗(yàn)證改進(jìn)之后網(wǎng)絡(luò)模型檢測(cè)的準(zhǔn)確率,分別選取原網(wǎng)絡(luò)第60 000次訓(xùn)練得到的權(quán)重和改進(jìn)網(wǎng)絡(luò)第50 000次訓(xùn)練得到的權(quán)重進(jìn)行對(duì)比實(shí)驗(yàn)。改進(jìn)之前原網(wǎng)絡(luò)的mAP為80.26%,改進(jìn)之后網(wǎng)絡(luò)的mAP為81.35%,提升了1.09%。
圖4給出了三組分別基于原YOLO V3網(wǎng)絡(luò)及改進(jìn)后網(wǎng)絡(luò)的實(shí)驗(yàn)結(jié)果。
((a)、(c)、(e)為原網(wǎng)絡(luò)的檢測(cè)結(jié)果,(b)、(d)、(f)為改進(jìn)后網(wǎng)絡(luò)的檢測(cè)結(jié)果)
圖4 YOLO V3網(wǎng)絡(luò)改進(jìn)前后的實(shí)驗(yàn)結(jié)果對(duì)比
從前兩組對(duì)比圖中可以看到:圖4(a)、圖4(c)中出現(xiàn)了漏檢的情況,圖4(b)、圖4(d)檢測(cè)出了更多的小目標(biāo);圖4(e)中不僅出現(xiàn)了漏檢的情況,而且將dog類檢測(cè)為person類,圖4(f)則檢測(cè)正確。由此可以看出,改進(jìn)后的網(wǎng)絡(luò)對(duì)小目標(biāo)有更好的檢測(cè)效果,漏檢率更低。
提出了一種改進(jìn)型YOLO網(wǎng)絡(luò),通過將經(jīng)過2倍降采樣的特征圖進(jìn)行卷積,再分別疊加到第二及第三個(gè)殘差塊的輸入端的方法來增強(qiáng)淺層特征的利用;通過在8倍降采樣的特征圖后增加一個(gè)RFB模塊,通過模擬人類視覺的感受野加強(qiáng)網(wǎng)絡(luò)的特征提取能力。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的網(wǎng)絡(luò)具有更好的檢測(cè)效果。