張建明, 劉煊赫, 吳宏林, 黃曼婷
(1.長沙理工大學(xué) 綜合交通運輸大數(shù)據(jù)智能處理重點實驗室 湖南 長沙 410114;2.長沙理工大學(xué) 計算機(jī)與通信工程學(xué)院 湖南 長沙 410114)
目標(biāo)檢測在計算機(jī)視覺領(lǐng)域一直是研究熱點,通用類的目標(biāo)檢測是智能監(jiān)控、智能機(jī)器人等大量應(yīng)用投入實際使用時所需要的支撐技術(shù).人臉檢測[1]和行人檢測[2]這兩個單一類別目標(biāo)檢測技術(shù)已經(jīng)相當(dāng)成熟;但通用類的目標(biāo)檢測精度一直不是很高,檢測的效果還有很大提升空間.通用類目標(biāo)檢測的難點在于待檢測的目標(biāo)物體的尺寸、形狀、顏色等特征千變?nèi)f化,并且很難找到其中的共性,所以傳統(tǒng)的機(jī)器學(xué)習(xí)手工設(shè)計待檢測目標(biāo)的特征對通用類的目標(biāo)檢測來說,難度很大.近來,越來越多的研究者轉(zhuǎn)向深度學(xué)習(xí),涌現(xiàn)出了很多優(yōu)秀的基于深度學(xué)習(xí)的檢測算法.
2012年至今,許多深度學(xué)習(xí)的算法被提出來,如AlexNet[3]、ZFNet[4]、VGGNet[5]、Google-Net[6]、R-CNN[7]及Faster R-CNN[8]等,但這些方法都是分階段的,檢測速度慢,不能達(dá)到實時性的要求.鑒于分段式目標(biāo)檢測方法的缺陷,2016年,Redmon等人提出了YOLO(you only look once:unified,real-time object)[9]網(wǎng)絡(luò)模型,同年,Liu等人提出了SSD(single shot multibox detector)網(wǎng)絡(luò)[10].YOLO和SSD與之前的深度模型不同,它們是基于回歸得到輸入圖片邊界框和類別概率的神經(jīng)網(wǎng)絡(luò)框架.這種一站式完成提取特征和檢測任務(wù)的神經(jīng)網(wǎng)絡(luò)實現(xiàn)了端到端的優(yōu)化,提升了框架的速度,但SSD對小目標(biāo)檢測的精度較低,因為小目標(biāo)檢測需要高分辨率,而原始的SSD模型不能對淺層的特征圖進(jìn)行充分利用.本文借鑒SSD網(wǎng)絡(luò)結(jié)構(gòu),結(jié)合特征金字塔網(wǎng)絡(luò)[11]進(jìn)行改進(jìn),充分利用淺層的高分辨率的特征圖,以便提升原模型的精度.
本文以SSD為基本的框架模型,針對小目標(biāo)檢測問題,用特征金字塔網(wǎng)絡(luò)對原始SSD框架進(jìn)行改進(jìn).原始的SSD是基于金字塔特征層對各層不同大小的特征圖進(jìn)行回歸,產(chǎn)生默認(rèn)框的位置信息和類別信息,但原始的SSD對小目標(biāo)的識別能力不足.本文將采用特征金字塔網(wǎng)絡(luò),將原始的SSD更深層的特征圖與淺層的特征圖進(jìn)行融合,目的是將深層特征圖更抽象的語義信息賦予淺層特征圖,然后對融合后的特征圖進(jìn)行回歸,得到默認(rèn)框的位置信息和類別信息.實驗表明,在PASCAL VOC數(shù)據(jù)集上的檢測精度比原始的SSD有所提升.
SSD模型有3個關(guān)鍵的特征:① 多尺度特征圖預(yù)測.分別從Conv4_3層、Conv7層、Conv8_2層、Conv9_2層、Conv10_2層和Conv11_2層引出特征圖,用這些大小不同的特征圖做預(yù)測;② 卷積層預(yù)測.每個特征層,都可以通過一組卷積濾波器得到一組固定的預(yù)測結(jié)果;③ 默認(rèn)框和長寬比.每個特征圖上的像素點都會對應(yīng)一系列的框,再根據(jù)不同的長寬比,生成更多尺寸不同的框,這些不同尺寸的框可以用來預(yù)測不同尺寸和形狀的目標(biāo).
對于一個給定的像素點位置,有k個默認(rèn)框,每個默認(rèn)框要預(yù)測出c個類別分?jǐn)?shù)和4個相對原始默認(rèn)框的偏移值,即每個框要預(yù)測(c+4)個值.這樣對于一個給定的位置需要k×(c+4)個值,就需要k×(c+4)個卷積核來實現(xiàn).所以對于一個m×n大小的特征圖,共有m×n×k×(c+4)個輸出.
金字塔是種“形近”的表達(dá),如圖1所示,深度學(xué)習(xí)中有各種各樣的金字塔,示意圖中灰色部分黑色邊框為輸入的圖片,白色部分黑色邊框為通過神經(jīng)網(wǎng)絡(luò)得到的特征圖.圖1(a) 神經(jīng)網(wǎng)絡(luò)的輸入為尺寸單一的圖片,經(jīng)過不同的卷積層和池化層(通過卷積和池化操作,特征圖逐漸變小,也形似金字塔),僅根據(jù)最后一層的特征圖進(jìn)行預(yù)測,這是單特征圖(single feature map).圖1(b) 對圖片進(jìn)行不同比例的放縮,輸入到模型,然后對不同尺度的圖片進(jìn)行處理預(yù)測,最后對各個預(yù)測結(jié)果進(jìn)行綜合判定,這是特征化圖像金字塔(featurized image pyramid).圖1(c) 輸入為尺寸單一的圖片,不同的卷積池化層,對不同大小的特征圖分別進(jìn)行預(yù)測,然后再對所有的預(yù)測結(jié)果進(jìn)行綜合判定,這是金字塔特征層(pyramidal feature hierarchy).原始的SSD就是采用多層卷積特征圖進(jìn)行綜合預(yù)測的.圖1(d) 對一張圖片進(jìn)行一個尺寸的單一輸入,經(jīng)過不同的卷積層和池化層,得到尺寸大小不一的特征圖,再對這些大小不同的特征圖分別進(jìn)行預(yù)測,然后再對所有的預(yù)測結(jié)果進(jìn)行綜合判定.但是不同的是,它選用的用來預(yù)測的特征圖是將當(dāng)前層的更深一層的特征圖進(jìn)行上采樣后,再和當(dāng)前層的特征圖進(jìn)行融合得到的特征圖,這是特征金字塔網(wǎng)絡(luò)(feature pyramid network,F(xiàn)PN).
圖1 各種類型金字塔Fig.1 Various types of pyramid
SSD是從多層不同尺度大小的特征圖去做預(yù)測.不同層級的特征圖上有著不同的語義信息,淺層的特征圖分辨率高,但只是一些淺層特征,表達(dá)特征的能力有限,會影響檢測性能.SSD利用了深層特征,但卻沒有充分利用淺層特征,而是增加網(wǎng)絡(luò)深度,拋棄淺層特征圖所攜帶的細(xì)節(jié)信息,這會影響小物體目標(biāo)的檢測.FPN的思想是將淺層和深層的特征圖進(jìn)行融合,使得到的淺層特征層也擁有深層的語義能力,且又不影響小物體的檢測.FPN能夠利用各個層級特征圖的特點,來提高SSD網(wǎng)絡(luò)的綜合檢測能力.結(jié)合FPN思想,提出了FPN-SSD檢測器(feature pyramid network for single shot multibox detector,F(xiàn)PN-SSD).
一張圖片輸入到FPN-SSD模型中,處理過程如圖2所示. 首先圖片尺寸會被更改為300×300的大小,再依次通過VGG16的Conv5_3部分及Conv6、Conv7、Conv8_1、Conv8_2、Conv9_1、Conv9_2、Conv10_1、Conv10_2、Conv11_1、Conv11_2這些卷積層進(jìn)行處理.然后,對Conv11_2的1×1大小的特征圖,由c10_2進(jìn)行上采樣操作,得到尺寸為3×3的特征圖.用t10_2減少Conv10_2的特征圖的通道數(shù),得到3×3大小的特征圖.然后由co10_2將這兩個3×3的特征圖進(jìn)行相加操作(融合),得到融合后尺寸大小為3×3的特征圖;然后再對融合后得到的特征圖,經(jīng)過c9_2的上采樣操作,再與t9_2橫向連接層得到的特征圖進(jìn)行融合,得到融合層co8_2的特征圖,依次進(jìn)行同樣的操作得到所有融合層的特征圖,最后用p4_3、p7、p8_2、p9_2和p10_2處理融合層的特征圖,得到預(yù)測層的特征圖,再用非極大值抑制進(jìn)行預(yù)測.其中,p11_2處理的特征圖是由Conv11_2直接得到,不來自融合層.
圖2 基于特征金字塔網(wǎng)絡(luò)的網(wǎng)絡(luò)模型圖Fig.2 Network model map based on feature pyramid network
FPN-SSD模型分為SSD層、橫向連接層、上采樣層、融合層和預(yù)測層.SSD層是原始的SSD模型,詳細(xì)的參數(shù)見文獻(xiàn)[10].其余的橫向連接層、上采樣層、融合層和預(yù)測層是本文的設(shè)計,各層詳細(xì)的參數(shù)和作用如表1所示.表1展示了橫向連接層的各個層由該層到下層的卷積核的大小、通道數(shù)量、進(jìn)行卷積操作時的步長和填充及經(jīng)過卷積后得到的特征圖的大?。搶幽康氖菧p少通道數(shù),為后續(xù)的融合做準(zhǔn)備.因為只有被融合的兩層有相同的通道數(shù),才能進(jìn)行融合.
表1 橫向連接層參數(shù)Tab.1 Lateral connection layer parameters
上采樣層將特征圖進(jìn)行放大,放大到原來的兩倍.在特征圖放大的過程中,會出現(xiàn)很多沒有像素值的空位,空位采用最鄰近插值進(jìn)行值的填充,特征圖數(shù)量均為256,上采樣層c4_3、c7、c8_2、c9_2、c10_2的輸出特征圖尺寸分別為38×38、19×19、10×10、5×5、3×3.上采樣是為了得到融合時所需要尺寸的特征圖.
融合層co4_3、co7、co8_2、co9_2、co10_2的輸出特征圖尺寸分別為38×38、19×19、10×10、5×5、3×3,該層實現(xiàn)了將橫向連接層得到的特征圖和上采樣層得到的特征圖進(jìn)行相加的操作,之前已經(jīng)將它們的通道數(shù)全部轉(zhuǎn)換為256,只有通道數(shù)相同且特征圖大小一致,才能完成特征圖的融合.
表2展示的是預(yù)測層的參數(shù),該層由融合層執(zhí)行卷積操作得到,目的是將融合層的特征圖進(jìn)行去模糊化操作.因為特征圖經(jīng)過放大都是根據(jù)臨近位置的像素值進(jìn)行填充的,這就可能會造成成塊的像素值大小相近,目標(biāo)物體的輪廓不明顯,使目標(biāo)變得模糊,所以就需要這步操作.
表2 預(yù)測層參數(shù)Tab.2 Prediction layer parameters
本文實驗環(huán)境是14.04.1-Ubuntu系統(tǒng),處理器的型號為Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30 GHz×12,顯卡的型號為NVIDIA GeForce GTX TITAN X,顯存為12 G,內(nèi)存為128 G.
本文實驗是在PASCAL VOC數(shù)據(jù)集上進(jìn)行,實驗的模型框架是FPN-SSD,預(yù)測層是p4_3、p7、p8_2、p9_2、p10_2和p11_2,訓(xùn)練采用的是隨機(jī)梯度下降,批次大小是32,權(quán)重衰減是0.000 5,動量是0.9,學(xué)習(xí)率衰減因子是0.94.其中,權(quán)重衰減是正則化的系數(shù),防止過擬合;動量的作用是擺脫局部最優(yōu)達(dá)到全局最優(yōu).
表3是在PASCAL VOC 2007 train+val數(shù)據(jù)集上進(jìn)行訓(xùn)練,并在PASCAL VOC 2007 test數(shù)據(jù)集上進(jìn)行測試得到的結(jié)果.其中,F(xiàn)ast是指Fast R-CNN網(wǎng)絡(luò);Faster是指Faster R-CNN網(wǎng)絡(luò);SSD300是指SSD網(wǎng)絡(luò)輸入的圖片尺寸首先更改為300×300;前3行引自文獻(xiàn)[10].可以看出,原來的SSD300還沒Faster的mAP高.改進(jìn)后的FPN-SSD,mAP由SSD的68.0%上升到了69.8%,與Faster基本持平,并且大多數(shù)的類別也有明顯的提升.其中,加粗的是與SSD相比較有提升的類別(表3列舉出了大多數(shù)類別).
表4是在PASCAL VOC 2007和2012 train+val數(shù)據(jù)集上進(jìn)行訓(xùn)練,并在PASCAL VOC 2007 test數(shù)據(jù)集上測試得到的結(jié)果. 可以看到mAP由原來SSD的74.3%提升到75.8%,并且精度在大多數(shù)的類別上都有所提升,尤其以盆栽植物這類原SSD模型不能很好檢測的密集小目標(biāo),也有較好的提升.其中,加粗的是與SSD相比較有提升的類別.
在PASCAL VOC 2007和2012 train+val數(shù)據(jù)集上訓(xùn)練,YOLOv1在PASCAL VOC 2007 test數(shù)據(jù)集上的mAP為63.4%.相同條件下,YOLOv2 288的mAP為69.0%;YOLOv2 352的mAP為73.7%;本文方法的mAP為75.8%.其中,YOLOv1是指YOLO的第一個版本,YOLOv2 288是指YOLO的第二個版本且輸入首先resize為288×288,YOLOv2 352同理.可以看出同為端到端的模型,本文模型在精度上具有一定的優(yōu)勢.
不同模型的檢測結(jié)果如圖3所示.第一行是SSD模型,第二行是本文的FPN-SSD模型.第一幅盆栽,F(xiàn)PN-SSD正確檢測到了所有的盆栽植物,而SSD模型有一個盆栽沒有檢測到,并且還有一個多余的檢測框;第二幅飛機(jī),F(xiàn)PN-SSD有2架飛機(jī)漏檢,而SSD模型有5架飛機(jī)漏檢;第三幅瓶子,F(xiàn)PN-SSD檢測到9個瓶子,而SSD檢測到5個瓶子.這些都是密集類小目標(biāo)的檢測,可以看出,對于這類目標(biāo),本文設(shè)計的FPN-SSD的網(wǎng)絡(luò)確實比原始的SSD有一定的提升.
圖3 不同模型的檢測結(jié)果對比Fig.3 Comparison of detection results of different models
本文選用了端到端檢測的經(jīng)典模型SSD,相比于YOLO模型,SSD模型是利用多層不同尺度大小的卷積特征對目標(biāo)物體進(jìn)行預(yù)測.同時借助于特征金字塔網(wǎng)絡(luò)可以將深層的特征圖所攜帶的語義信息與淺層的特征圖進(jìn)行融合,且融合后的特征圖有更強的語義信息和更豐富的細(xì)節(jié)信息,對小目標(biāo)的物體檢測有所幫助.將特征金字塔網(wǎng)絡(luò)的思想用于SSD模型的改進(jìn),實現(xiàn)了FPN-SSD模型在PASCAL VOC數(shù)據(jù)集上的檢測能力有所提升.但是改進(jìn)后的模型也還是有很多不足,如實驗結(jié)果中展示的漏檢的飛機(jī)和瓶子,這種密集小目標(biāo)的檢測雖然有所提升,仍然還有漏檢.就檢測精度而言,對用于真實場景下的檢測[12],還有一定的提升空間.