趙蓬輝,孟春寧,常勝江
(1.南開大學(xué) 電子信息與光學(xué)工程學(xué)院 現(xiàn)代光學(xué)研究所,天津300350;2.中國人民武裝警察部隊(duì)海警學(xué)院 電子技術(shù)系,寧波315801)
目標(biāo)檢測作為計(jì)算機(jī)視覺領(lǐng)域的關(guān)鍵技術(shù),一直是具有挑戰(zhàn)性的研究熱點(diǎn)。Viola和Jones[1]于21世紀(jì)初提出了Viola-Jones算法首次在計(jì)算資源有限的情況下實(shí)現(xiàn)了實(shí)時的人臉檢測。2005年,Dalal與Triggs[2]提出的HOG(Histogram of Oriented Gradient)行人檢測器拓展了Viola-Jones算法的檢測領(lǐng)域。Felzenszwalb等[3]提出的可變形部件模型(Deformable Part based Model,DPM)及其后續(xù)優(yōu)化算法連續(xù)3年獲得目標(biāo)類別視覺挑戰(zhàn)賽(The PASCAL Visual Object Classes Challenge)[4]的冠軍,代表了當(dāng)時基于手工設(shè)計(jì)特征的檢測器的最高水平。然而,基于手工設(shè)計(jì)特征的目標(biāo)檢測器在目標(biāo)區(qū)域選擇上策略針對性差,窗口計(jì)算冗余量大,尤其針對環(huán)境多樣性變化和遮擋問題沒有很好的魯棒性[5]。因此,早期的目標(biāo)檢測算法難以達(dá)到實(shí)用的要求,陷入發(fā)展停滯期。
得益于卷積神經(jīng)網(wǎng)絡(luò)的迅速發(fā)展,Girshick等于2014年提出了區(qū)域卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(Regions with Convolutional Neural Networks features,R-CNN)[6],標(biāo)志著目標(biāo)檢測擺脫了緩慢發(fā)展的困境,進(jìn)入了新的發(fā)展階段。此后涌現(xiàn)出的基于深度學(xué)習(xí)的目標(biāo)檢測算法大致可分為2類:兩階段分類回歸系列與單階段回歸系列。
R-CNN主要計(jì)算流程由2部分組成,分別是類別分類和位置回歸。此后,在R-CNN基礎(chǔ)上提出的SPP-Net[7]、Fast R-CNN[8]、Faster R-CNN[9]、FPN(Feature Pyramid Networks)[10]等算法均將檢測任務(wù)分成分類問題和位置回歸2類問題。因此,這類算法統(tǒng)稱為兩階段分類回歸系列。隨著目標(biāo)檢測數(shù)據(jù)集的逐漸豐富和網(wǎng)絡(luò)訓(xùn)練技巧的不斷優(yōu)化,該系列檢測算法的平均檢測精度得到迅速提升。兩階段分類回歸系列算法雖然能取得70%以上的平均精度均值,但其網(wǎng)絡(luò)結(jié)構(gòu)過于復(fù)雜,不僅導(dǎo)致前期的網(wǎng)絡(luò)訓(xùn)練時間較長,也致使網(wǎng)絡(luò)參數(shù)量較大,難以保證實(shí)時性。為獲得較高的檢測幀率,兩階段分類回歸系列算法需要苛刻的GPU硬件配置條件,且不利于將算法移植到移動終端。提高檢測精度的同時,保證檢測速度日益成為工業(yè)界的實(shí)際需求。為兼顧精度與速度,單階段回歸算法應(yīng)運(yùn)而生。
Redmon等[11]于2015年提出的端到端一體化網(wǎng)絡(luò)YOLO v1在VOC 07[4](Pascal VOC 2007)上取得66.4%的平均精度均值,雖然平均檢測精度低于大部分兩階段分類回歸算法,但檢測處理速度最高可達(dá)155幀/s。此后,為提高檢測精度,陸續(xù)出現(xiàn)YOLO9000[12]、SSD[13]、YOLOv3[14]等單階段回歸算法。這類算法將分類問題與位置回歸問題統(tǒng)一成一個回歸計(jì)算問題,與R-CNN等算法形成鮮明對比。為進(jìn)一步提高平均精度均值,Liu等在SSD的基礎(chǔ)上先后提出DSSD[15]、DSOD[16]等優(yōu)化的SSD類算法。在檢測流程中,SSD類算法采用錨箱[8]在多層特征圖上以不同比例與尺寸的建議框進(jìn)行回歸計(jì)算,一次性檢測物體的類別與位置。SSD類算法相對兩階段分類回歸算法計(jì)算簡單且參數(shù)量較少,能夠在一定程度上兼顧檢測精度與速度。
SSD中的多層次回歸計(jì)算思想優(yōu)于單一特征圖上的目標(biāo)檢測,利于消除YOLO v1中存在的近鄰目標(biāo)檢測“競爭”現(xiàn)象[11],DSSD等算法繼承了SSD多層回歸計(jì)算的特點(diǎn),通過改進(jìn)高層框架結(jié)構(gòu)以提升平均精度均值。然而,SSD多層回歸計(jì)算在結(jié)構(gòu)上存在回歸特征圖(檢測所基于的多層特征圖層)層與層之間相對獨(dú)立的情況。雖然通過高層結(jié)構(gòu)改造可在一定程度上提升平均精度,但改造后的復(fù)雜結(jié)構(gòu)又影響了檢測速度,難以保證實(shí)時性[14,16]。
為解決SSD系列算法存在的層間回歸計(jì)算相對獨(dú)立的問題,保證目標(biāo)檢測實(shí)時性的同時,進(jìn)一步提高檢測精度,本文基于SSD構(gòu)造了一種底層結(jié)構(gòu)為卷積神經(jīng)網(wǎng)絡(luò)[17]的基于異步卷積分解與分流結(jié)構(gòu)的單階段檢測器(Single Shot mutibox Detection based on Asynchronous convolution Factorization and shunt structure,F(xiàn)A-SSD)。在底層網(wǎng)絡(luò)結(jié)構(gòu)中,為避免網(wǎng)絡(luò)結(jié)構(gòu)過于復(fù)雜,以單鏈無分支的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為基礎(chǔ)。在高層網(wǎng)絡(luò)結(jié)構(gòu)中,采用異步卷積分解的兩層卷積層與池化層相結(jié)合的降維方式,保證空間相關(guān)信息的同時,提高特征的多樣性。此外,F(xiàn)A-SSD借鑒殘差神經(jīng)網(wǎng)絡(luò)[18]的交融結(jié)構(gòu),提出一種分流(shunt)結(jié)構(gòu)交錯連接多層回歸特征圖,增強(qiáng)多層回歸計(jì)算之間的統(tǒng)一性與協(xié)調(diào)性。
FA-SSD網(wǎng)絡(luò)的創(chuàng)新點(diǎn)可歸納如下:
1)借鑒Inception模型[19]中的卷積分解思想,增加了不同方向不同步長的異步卷積策略,提出一種異步卷積分解算法。采用異步卷積分解算法構(gòu)造的兩層卷積層,與SSD采用一層卷積對特征圖降維相比,可在不增加計(jì)算量的情況下,提高提取特征的非線性表達(dá)能力。
2)基于異步卷積分解算法構(gòu)造了一種shunt結(jié)構(gòu),從原有高層網(wǎng)絡(luò)結(jié)構(gòu)(主流結(jié)構(gòu))中分出包含兩層采用異步卷積分解的卷積層組成的shunt結(jié)構(gòu),同時與主流結(jié)構(gòu)實(shí)現(xiàn)特征交融,解決了各層回歸計(jì)算相對獨(dú)立的問題,增強(qiáng)了多層回歸計(jì)算之間的統(tǒng)一性與協(xié)調(diào)性。在shunt結(jié)構(gòu)中采用異步卷積分解算法構(gòu)造的卷積層可在降低特征圖維度的同時,增加特征圖之間的交融過程,改善空間相關(guān)信息缺失的問題。
3)優(yōu)化了高層網(wǎng)絡(luò)結(jié)構(gòu)中的主流結(jié)構(gòu)。首先使用池化層代替原有結(jié)構(gòu)中的步長為2的卷積層,在主流結(jié)構(gòu)和shunt結(jié)構(gòu)中同時使用池化和卷積兩種降維方式,提升特征的多樣性;然后在每次交融的特征圖后增加一層步長為1大小為1×1的卷積層以提升回歸特征圖之間的卷積深度,擴(kuò)大各層回歸特征圖間的特征差異性。
SSD算法的計(jì)算流程如圖1所示,其中圖1(a)和(b)為底層特征提取階段,圖1(b)和(c)為非極大值抑制(NMS)篩選多個檢測結(jié)果的階段,圖1(b)表示多層回歸特征圖把分類任務(wù)與位置回歸任務(wù)統(tǒng)一為回歸問題,在高層神經(jīng)網(wǎng)絡(luò)中的多層次特征圖上分別應(yīng)用不同尺寸的錨箱生成特定長寬比例的建議框,并在建議框上一次性回歸物體類別與位置信息,生成的建議框長寬比有“1、2、3、1/2、1/3”等。
底層結(jié)構(gòu)為VGG結(jié)構(gòu)的SSD網(wǎng)絡(luò)框架如圖2所示,高層結(jié)構(gòu)中的多層回歸特征圖分別為block4、fc7、block8、block9、block10、block11。其中上述名稱分別表示神經(jīng)網(wǎng)絡(luò)中每個卷積命名區(qū)域中最后的特征圖層。黑色圓表示卷積(conv),采用大小為“3×3”,步長為(1,1)的兩層卷積核,即2kernal3×3_s1。紅色三角形表示池化(pool),采用大小為“2×2”,步長為(2,2)的一層最大池化,即 pool2×2_s2。上 述 6 層 特 征 圖 層共生成8732個特定比例與尺寸的建議框,每個框架檢測出的結(jié)果經(jīng)過非極大值抑制篩選,得出最終檢測的位置和類別。
圖1 SSD算法計(jì)算流程Fig.1 Computation procedure of SSD algorithm
SSD計(jì)算過程可表示底層與高層兩部分。
底層神經(jīng)網(wǎng)絡(luò)計(jì)算過程可表示為
高層神經(jīng)網(wǎng)絡(luò)計(jì)算過程可表示為
式中:fp表示卷積神經(jīng)網(wǎng)絡(luò)中的池化計(jì)算(下標(biāo)p表示相應(yīng)特征圖層);f表示卷積運(yùn)算;fc7和block4,8,9,10,11表 示 回 歸 特 征 圖;block″1,2,3,4表 示 底層網(wǎng)絡(luò)中每個卷積區(qū)域的最后特征圖層;block′1,2,3,4表 示 卷 積 區(qū) 域 其 他 特 征 圖 和 池 化 后 的特征圖;Xi表示相應(yīng)的特征圖層;R表示回歸運(yùn)算;D表示分類回歸與位置定位回歸;∪表示范疇中的并集和特征圖在通道維度上的并列交融。
SSD可通過各種復(fù)雜交叉的底層網(wǎng)絡(luò)改善處理過程中容易丟失空間相關(guān)信息的問題以提高特征的多樣性。然而,復(fù)雜的高層模型可以提高精度卻難以保證實(shí)時的處理速度。由圖2可見,SSD高層網(wǎng)絡(luò)結(jié)構(gòu)的回歸特征圖中層與層之間相對獨(dú)立,致使多層回歸計(jì)算難于統(tǒng)一,例如圖2中block8與block10之間僅用單鏈的四層卷積層間接地通過block9進(jìn)行聯(lián)系,各自通過回歸計(jì)算出類別與位置,無法直接建立兩層之間的有效聯(lián)系,不利于目標(biāo)檢測在網(wǎng)絡(luò)中的協(xié)調(diào)統(tǒng)一。為此,本文提出FA-SSD網(wǎng)絡(luò),摒棄復(fù)雜的底層與高層網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)方法,僅通過優(yōu)化主流結(jié)構(gòu)和增加一種輕量級的shunt結(jié)構(gòu)增強(qiáng)高層網(wǎng)絡(luò)多層回歸特征圖之間的協(xié)調(diào)性與統(tǒng)一性。
FA-SSD的底層網(wǎng)絡(luò)基于VGG,高層網(wǎng)絡(luò)為多層次的回歸計(jì)算結(jié)構(gòu),如圖3所示,其中紅色虛線框?yàn)楦邔又髁鹘Y(jié)構(gòu),黑色圓、紅色三角形和紅色菱形分別表示卷積操作(conv)、池化操作(pool)和回歸特征圖層之間的網(wǎng)絡(luò)結(jié)構(gòu)(nn),藍(lán)色菱形和對立三角表示shunt結(jié)構(gòu)和特征圖層通道方向上的交融操作。圖中特征圖層的命名方式與圖2相同,高層網(wǎng)絡(luò)的回歸特征圖分別為block4、fc7、block8、block9、block10、block11。高 層 結(jié) 構(gòu) 用 兩種方式對特征圖進(jìn)行降維,分別是shunt結(jié)構(gòu)中的異步卷積分解算法和高層主流結(jié)構(gòu)中的最大池化。FA-SSD 中共有4個 shunt結(jié)構(gòu),分別是shunt0、shunt1、shunt2和shunt3,用2種連接方式增加回歸特征圖層之間的聯(lián)系。4個shunt結(jié)構(gòu)的整體連接方式如圖3所示。最后在6個回歸特征圖上計(jì)算出類別與位置,通過NMS進(jìn)行一定閾值的篩選,得出置信度最高的目標(biāo)。
搭建的網(wǎng)絡(luò)結(jié)構(gòu)包含以下3部分內(nèi)容。
1)異步卷積分解算法
圖4 異步卷積分解算法Fig.4 Asynchronous convolution factorization algorithm
SSD的高層結(jié)構(gòu)完全應(yīng)用卷積層搭建,應(yīng)用步長為2的一層卷積層對特征圖進(jìn)行降維。為提高非線性表達(dá)能力,在使用卷積進(jìn)行降維的同時,提出一種異步卷積分解算法。該算法借鑒Inception模型中的卷積分解思想,采取不同方向上不同步長的異步卷積策略組合兩層異步卷積分解的卷積層,圖4展示了異步卷積分解算法中的一層的操作過程,其中kernel3×1s(2,1)表示大小為“3×1”的卷積核,在B方向上大小與步長分別為3和2,在A方向上的大小和步長分別為1和1。輸入特征圖在經(jīng)過一層異步卷積分解的卷積計(jì)算后,僅在B方向?qū)崿F(xiàn)降維。再次經(jīng)過卷積核kernal1×3s(1,2)的卷積處理后,特征圖在A與B方向分別降低了維度,類似pool2×2s2對特征圖進(jìn)行處理的效果。與SSD高層網(wǎng)絡(luò)中的一層kernal3×3s(2,2)卷積結(jié)構(gòu)相比,kernal3×1s(2,1)與kernal1×3s(1,2)的結(jié)合在未增加計(jì)算量的同時,提高了網(wǎng)絡(luò)的非線性表達(dá)能力。與pool2×2s2的最大池化層相比,兩層異步卷積分解的卷積計(jì)算既在卷積核大小為“3”方向上保證了像素之間的重疊,即在步長為“2”方向上保證了感受野之間的重疊,保留了足夠的空間相關(guān)信息。
2)shunt結(jié)構(gòu)
shunt中的網(wǎng)絡(luò)結(jié)構(gòu)即為異步卷積分解算法,shunt連接方式如圖5所示,借鑒殘差網(wǎng)絡(luò)模型中的分支交融結(jié)構(gòu),對主流結(jié)構(gòu)采用2種方式進(jìn)行連接。block4與fc7之間存在每層含有512個神經(jīng)元的三層卷積網(wǎng)絡(luò)和一層包含1 024個神經(jīng)元的fc6,網(wǎng)絡(luò)層數(shù)和神經(jīng)元個數(shù)大于其他回歸特征圖層之間的網(wǎng)絡(luò)。為節(jié)省計(jì)算量、提高回歸特征圖間的聯(lián)系,shunt0起始于回歸特征圖層block4,直接與回歸特征圖層block fc7在通道維度進(jìn)行并聯(lián)交融(后續(xù)交融或連接均為通道維度的concat交融),與其他shunt結(jié)構(gòu)無交錯跨越的聯(lián)系。而shunt1與shunt2之間以及shunt2與shunt3之間存在交錯連接,例如shunt1的交融端位于shunt2的分流(與主流相同的征信息)之后,shunt2則 可 跨 越 block9 直 接 連 接 block8 與block10。如果shunt2起始端位于shunt1交融位置之后,則會因?yàn)樘卣鹘蝗趯?dǎo)致特征圖通道的倍增,而增加計(jì)算量。在通道維度上進(jìn)行并聯(lián)交融之后,特征圖層經(jīng)過批歸一化[20]處理及回歸計(jì)算得出類別與位置信息。通過上述2種shunt連接方式增強(qiáng)高層網(wǎng)絡(luò)中多層次的回歸計(jì)算之間的聯(lián)系,即增強(qiáng)協(xié)調(diào)性和統(tǒng)一性。
3)高層網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化及計(jì)算過程
圖6展示了優(yōu)化后的高層網(wǎng)絡(luò)結(jié)構(gòu)中的局部結(jié)構(gòu),其他局部結(jié)構(gòu)與此類似。實(shí)驗(yàn)搭建了多種網(wǎng)絡(luò)結(jié)構(gòu)并進(jìn)行了訓(xùn)練及測試,對比實(shí)驗(yàn)結(jié)果證明圖6所示的結(jié)構(gòu)取得了最好的測試效果。該結(jié)構(gòu)主要由池化層pool2×2s(2,2)和shunt結(jié)構(gòu)組成,池化層和shunt結(jié)構(gòu)均可實(shí)現(xiàn)特征圖的維度降低。其中pool2×2s(2,2)表示大小為“2×2”,2個方向步長為“2”的池化,kernel3×3s(1,1)表示大小為“3×3”,2個方向步長均為1的卷積核,kernal1×1s(1,1)表示大小為“1×1”,2個方向步長均為1的卷積核。
高層網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化后,6層回歸計(jì)算過程可分為3個部分,即
圖6 高層網(wǎng)絡(luò)局部結(jié)構(gòu)Fig.6 Local structure of high-level network
式中:fp與fs分別表示最大池化和異步卷積分解2種降維方式。
多層次的檢測結(jié)果D為D1、D2和D3的并集,即
D =D1∪D2∪D3
實(shí)驗(yàn)所用訓(xùn)練數(shù)據(jù)集為VOC2007trainval與VOC2012trainval[4],檢測數(shù)據(jù)集為VOC2007test[4]。實(shí)驗(yàn)軟件配置為Window10、TensorFlow1.7.0、TensorFlow Layers API、CUDA9.0,硬 件 配 置 為NVIDIA GeForce GTX 1080Ti(一塊)、Intel(R)Xeon(R)CPU E5-2609v4@ 1.70 GHz×16。實(shí)驗(yàn)檢測的基準(zhǔn)是算法的百分制(%)平均精度均值m_AP和檢測速度v。
FA-SSD中參與訓(xùn)練和檢測的圖像大小為300像素×300像素,因此下文稱FA-SSD300。回歸特征圖的大小分別是“38×38”、“19×19”、“10×10”、“5×5”、“3×3”和“1×1”,在上述6種回歸特征圖采用錨箱分別生成建議框,具體建議框參數(shù)設(shè)置和分類定位閾值設(shè)定與SSD算法相應(yīng)設(shè)置相同,參與對比分析的SSD300檢測結(jié)果如可見對比實(shí)驗(yàn)部分內(nèi)容。
采用批次為16,共訓(xùn)練150 000步。學(xué)習(xí)率初始設(shè)置為0.01,采用分階段控制方式間接調(diào)整目標(biāo)函數(shù)優(yōu)化器。衰減步長邊界設(shè)置為:“20000、900 000、130 000”,學(xué)習(xí)率衰減設(shè)置為:“1、0.1、0.005、0.001”。學(xué)習(xí)率終止邊界設(shè)為0.000 01,直至收斂。
為增加所用訓(xùn)練樣本的價(jià)值,在圖像預(yù)處理階段對樣本進(jìn)行隨機(jī)地裁剪,顏色擾動、翻轉(zhuǎn)等數(shù)據(jù)增廣方式。顏色擾動過程包括圖片顏色的“亮度、對比度、飽和度、色相”4種調(diào)整操作,并且隨機(jī)改變這4種圖像顏色操作的前后順序,最后統(tǒng)一壓縮為“300像素×300像素”的圖像進(jìn)行網(wǎng)絡(luò)訓(xùn)練。增廣產(chǎn)生的數(shù)據(jù)實(shí)例如圖7所示。
實(shí)驗(yàn)對FA-SSD的訓(xùn)練網(wǎng)絡(luò)初試參數(shù)設(shè)定采用VGG參數(shù)遷移和參數(shù)初始化2種方法。其中,遷移VGG的參數(shù)是經(jīng)過ImageNet[21]數(shù)據(jù)訓(xùn)練后獲得的權(quán)重。訓(xùn)練過程中的損失變化如圖8所示,其中l(wèi)oss1與loss2分別是初始化參數(shù)和遷移VGG參數(shù)下的損失。由圖8可看出,遷移VGG參數(shù)的訓(xùn)練損失loss2收斂速度最快。但2種參數(shù)情況下的訓(xùn)練最終收斂在近似損失水平。
在遷移VGG參數(shù)的訓(xùn)練下,檢測物體的平均精度均值的變化如圖9所示。由圖9可見,除30 000步的檢測結(jié)果外,訓(xùn)練120 000步之前平均精度均逐漸提升。在120000步至終止訓(xùn)練階段,平均精度均值出現(xiàn)振蕩,分別于120 000步和140 000步達(dá)到高峰,因此最終檢測的平均精度均值為80.5%。
圖7 數(shù)據(jù)增廣Fig.7 Data augmentation
圖8 損失變化曲線Fig.8 Loss variation curves
FA-SSD中高層網(wǎng)絡(luò)共使用了4個shunt結(jié)構(gòu),即shunt0、shunt1、shunt2和shunt3,如圖5所示。為驗(yàn)證不同的shunt連接方式對網(wǎng)絡(luò)檢測結(jié)果的影響,實(shí)驗(yàn)通過調(diào)整shunt結(jié)構(gòu)個數(shù),分別搭建了shunt0000、shunt1000、shunt0101、shunt1110、shunt1111進(jìn)行相同的訓(xùn)練與檢測。其中,末尾數(shù)字串的前后數(shù)字順序表示shunt0至shunt3結(jié)構(gòu)的位置順序?!?”表示去除FA-SSD中對應(yīng)位置的shunt結(jié)構(gòu),“1”表示保留所在位置的shunt結(jié)構(gòu),例如Shunt0101表示圖6中僅有shunt1與shunt3結(jié)構(gòu)的FA-SSD網(wǎng)絡(luò)結(jié)構(gòu)。
不同數(shù)目shunt結(jié)構(gòu)的檢測精度如圖10所示。由圖10可見,僅加深高層主流網(wǎng)絡(luò)深度后,shunt0000網(wǎng)絡(luò)檢測平均精度均值為77.8%,相對SSD提高0.6%,說明增加回歸特征圖之間的卷積層數(shù)可提高檢測精度。此后,每增加一個shunt結(jié)構(gòu),網(wǎng)絡(luò)在保證實(shí)時性的同時,進(jìn)一步提高了平均檢測精度。最后 shunt1111(FASSD300)網(wǎng)絡(luò)的檢測平均精度均值達(dá)到最高的80.5%,相對SSD提高了3.3%。由平均精度均值提高的幅度可推斷,僅增加高層主流網(wǎng)絡(luò)的卷積層數(shù)是提高平均精度均值的次要因素,交錯連接的shunt結(jié)構(gòu)是檢測精度提高的主要原因。在增加了shunt結(jié)構(gòu)后,F(xiàn)A-SSD300平均精度均值達(dá)到了最高的80.5%,同時保證了檢測的實(shí)時性。
圖9 不同迭代次數(shù)下的平均精度均值Fig.9 Mean average precision under different numbers of iteration
圖10 不同數(shù)目的shunt結(jié)構(gòu)對檢測的影響Fig.10 Influence of different numbers of shunt structure on detection
為優(yōu)化異步卷積分解與shunt結(jié)構(gòu)的融合,進(jìn)一步提高特征的多樣性,本文搭建了如圖11所示的3種高層局部網(wǎng)絡(luò)結(jié)構(gòu)(shunt并聯(lián)網(wǎng)絡(luò)結(jié)構(gòu))。圖11(a)表示SSD原有的kernal3×3s(2,2)卷積層與shunt結(jié)構(gòu)的結(jié)合,圖11(b)與(c)分別表示異步卷積分解結(jié)構(gòu)、最大池化層和shunt結(jié)構(gòu)的搭配。圖11(a)、(b)和(c)分別對應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu) 為FA-SSD0、FA-SSD1、FA-SSD2。FA-SSD1與FA-SSD2中的主流結(jié)構(gòu)中的不同部分,在圖11中標(biāo)記為紅色。為保證FA-SSD1與FS-SSD2的主流結(jié)構(gòu)深度相同(卷積層數(shù)與池化層數(shù)),結(jié)構(gòu)(c)相比(b)增加一層kernal1×1s(1,1)的卷積層。在相同條件下對上述3種網(wǎng)絡(luò)進(jìn)行訓(xùn)練后,在VOC2007test上的檢測結(jié)果如圖12所示。FASSD0的平均精度均值為78.3%,相對SSD提升1.1%,檢測速度雖然相對SSD降低11幀/s,但依然能保證實(shí)時檢測。FASSD1采用異步卷積分解結(jié)構(gòu)對主流特征圖進(jìn)行降維,平均精度均值達(dá)到80%,相比SSD提高2.8%。主流結(jié)構(gòu)采用最大池化降維時,目標(biāo)檢測的精度與速度都有進(jìn)一步的提升。FA-SSD2相比FA-SSD1在平均精度均值和檢測速度上都提高0.5%。FA-SSD1與FASSD2在結(jié)構(gòu)上的主要區(qū)別是主流結(jié)構(gòu)上的降維計(jì)算方式。FA-SSD1采用一種異步卷積分解結(jié)構(gòu)同時進(jìn)行特征提取與降維,而FA-SSD2采用異步卷積分解和池化2種不同的降維計(jì)算方式,提高特征的多樣性。由于池化計(jì)算相對異步卷積分解結(jié)構(gòu)更簡單,F(xiàn)A-SSD2相對FA-SSD1提高了檢測速度。異步卷積分解相對池化更有利于傳遞空間相關(guān)信息,同時2種降維方式提高了特征的多樣性,因此FA-SSD2檢測精度達(dá)到最高的80.5%。
圖11 高層網(wǎng)絡(luò)的優(yōu)化Fig.11 Optimization of high-level network
圖12 高層結(jié)構(gòu)優(yōu)化對檢測的影響Fig.12 Influence of high-level structure optimization on detection
實(shí)驗(yàn)通過端到端的方法訓(xùn)練FA-SSD300,與近期算法在VOC2007和VOC2012(07+12)中訓(xùn)練,在VOC2007上進(jìn)行了對比,結(jié)果如表1所示,F(xiàn)aster RCNN與R-FCN屬于兩階段分類回歸算法,雖然訓(xùn)練用到分辨率最大的圖像,但平均精度均值仍然最低,且不具備實(shí)時檢測能力。先后出現(xiàn)的單階段回歸系列算法 YOLOv2、SSD300、DSOD300以及DSSD321的檢測平均精度均值逐步提升。其中,SSD類算法DSOD300、DSSD321雖然較前幾種算法取得了更高的檢測精度,但不能保證實(shí)時性,檢測速度分別為17.4幀/s和9.5幀/s。FA-SSD300檢測平均精度均值最高,達(dá)到80.5%,且保證了實(shí)時檢測。為公平對比檢測速度,采用與本實(shí)驗(yàn)相同的硬件,對SSD的檢測速度進(jìn)行測試,檢測結(jié)果為表1中的SSD300*所示數(shù)據(jù)。
8種算法在VOC2007test上針對20個常見類別的具體檢測結(jié)果對比如表2所示。其中,最高平均精度均值和每個類最高平均精度已標(biāo)記為黑色粗體數(shù)字。
表2中左列5種算法為兩階段分類回歸系列算法,右列3種算法為單價(jià)段回歸算法,2類算法各自平均精度最高的網(wǎng)絡(luò)分別是R-FCN與FASSD300。雖然與FA-SSD300同樣達(dá)到80.5%的平均精度均值,但是R-FCN采用信息提取能力更強(qiáng)的復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)ResNet-101[18],處理速度僅為7幀/s。除平均檢測精度達(dá)到最高外,F(xiàn)A-SSD在20類檢測中共有11類達(dá)到最高平均精度,其中“Bus”與“Cat”2個類的平均檢測精度均超過90%,分別為90.2%和91.7%。
FA-SSD300在VOC2007test上的部分結(jié)果如圖13所示,對難以檢測的密集小目標(biāo)、遮擋目標(biāo)和局部大目標(biāo)均取得了較好的檢測結(jié)果。圖13(e)由于像素分辨率低造成一個小目標(biāo)漏檢,同時(b)和(g)由于目標(biāo)遮擋過于嚴(yán)重造成次要目標(biāo)漏檢,其他所有位置定位框架均在合理范圍內(nèi)。
算法 訓(xùn)練數(shù)據(jù) 預(yù)訓(xùn)練 底層網(wǎng)絡(luò) 圖片大小 建議框數(shù) 顯卡 速度/(幀·s-1)m_AP/%Fast R-CNN[8] 07+12 √ VGGNet 600×1000*300 K40 3.125 66.9 Faster R-CNN[9]07+12 √ VGGNet 600×1 000* 300 K40 5 73.2 R-FCN[22] 07+12 √ VGGNet 600×1000 300 K40 5.8 75.6 YOLOv2[12] 07+12 √ Darknet-19 352×352 Titan X 81 73.7 SSD300[13] 07+12 × VGGNet 300×300 8 732 Titan X 46 74.3 SSD300[13] 07+12 √ VGGNet 300×300 8 732 Titan X 46 77.2 SSD300*[13] 07+12 × VGGNet 300×300 8 732 1080Ti 43.5 74 DSOD300[16] 07+12 × DS/64-192-48-1 300×300 8 732 Titan X 17.4 77.7 DSSD321[14] 07+12 √ ResNet 321×321 17 080 Titan X 9.5 78.6 FA-SSD300 07+12 × VGGNet 300×300 8 732 1080Ti 30 79.0 FA-SSD300 07+12 √VGGNet 300×300 8 732 1080Ti 30 80.5
類別 Fast R-CNN[8] Faster R-CNN[9] ION[22] R-FCN[23] MR-CNN[24] SSD300[13] DSSD321[14]FA-SSD300 Aero 77.0 76.5 79.2 79.9 80.3 79.5 81.9 86.4 Bike 78.1 79 83.1 87.2 84.1 83.9 84.9 85.9 Bird 69.3 70.9 77.6 81.5 78.5 76 80.5 79.6 Boat 59.4 65.5 65.6 72 70.8 69.6 68.4 73.3 Bottle 38.3 52.1 54.9 69.8 68.5 50.4 53.9 53.6 Bus 81.6 83.1 85.4 86.8 88 87 85.6 90.2 Car 78.6 84.7 85.1 88.5 85.9 85.7 86.2 89.2 Cat 86.7 86.4 87 89.8 87.8 88.1 88.9 91.7 Chair 42.8 52 54.4 67 60.3 60.3 61.1 60.0 Cow 78.8 81.9 80.6 88.1 85.2 81.5 83.5 84.3 Table 68.9 65.7 73.8 74.5 73.7 77 78.7 80.9 Dog 84.7 84.8 85.3 89.8 87.2 86.1 86.7 89.1 Horse 82.0 84.6 82.2 90.6 86.5 87.5 88.7 87.4 Mbike 76.6 77.5 82.2 79.9 85 83.97 86.7 86.5 Person 69.9 76.7 74.4 81.2 76.4 79.4 79.7 83.3 Plant 31.8 38.8 47.1 53.7 48.5 52.3 51.7 54.2 Sheep 70.1 73.6 75.8 81.8 76.3 77.9 78 83.2 Sofa 74.8 73.9 72.7 81.5 75.5 79.4 80.9 82.3 Train 80.4 83 84.2 85.9 85 87.6 87.9 89.2 Tv 70.4 72.6 80.4 79.9 81 76.8 79.4 78.5 mAP/% 70.0 73.2 75.6 80.5 78.2 77.2 78.6 80.5
圖13 FA-SSD300在VOC2007test上的部分檢測結(jié)果Fig.13 Partial detection results of FA-SSD300 on VOC2007test
本文基于SSD提出一種基于異步卷積分解與shunt結(jié)構(gòu)的單階段目標(biāo)檢測器。采用基于異步卷積分解的shunt結(jié)構(gòu),在沒有進(jìn)行主流結(jié)構(gòu)優(yōu)化前,檢測的平均精度均值便可達(dá)到80.0%,在不增加計(jì)算量的同時,提升了提取特征的非線性表達(dá)能力,shunt結(jié)構(gòu)與主流結(jié)構(gòu)的交融提高了回歸特征圖之間的協(xié)調(diào)性與統(tǒng)一性。構(gòu)造了包含池化與異步卷積分解的局部結(jié)構(gòu),優(yōu)化原有高層主流網(wǎng)絡(luò)結(jié)構(gòu),異步卷積分解與池化兩種降維方式的結(jié)合,既有利于空間相關(guān)信息的傳遞,也有利于提高特征的多樣性。增加shunt結(jié)構(gòu)并優(yōu)化主流結(jié)構(gòu)后,平均精度均值達(dá)到80.5%,相比SSD提高3.3%,比DSSD321提高了1.9%,同時在一塊1080ti顯卡上取得30幀/s的平均處理速度。
FA-SSD在保證實(shí)時性檢測的同時,其平均精度在未采用MS COCO數(shù)據(jù)庫擴(kuò)充訓(xùn)練數(shù)據(jù)的情況下,便超過近期提出的SSD類算法。為適用于移動終端的相關(guān)應(yīng)用,下一步研究工作將側(cè)重于進(jìn)一步降低網(wǎng)絡(luò)規(guī)模優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)。