陳 皋,王衛(wèi)華,林丹丹
(1.國防科技大學(xué) 電子科學(xué)學(xué)院 ATR 重點實驗室,湖南 長沙 410073;2.昆明物理研究所,云南 昆明 650233)
通過卷積層、池化層、激活函數(shù)等模塊層層堆疊的結(jié)構(gòu)設(shè)計,卷積神經(jīng)網(wǎng)絡(luò)具有強大的特征提取和擬合能力,為計算機視覺領(lǐng)域帶來了翻天覆地的變化,已經(jīng)在圖像分類、目標檢測、實例分割等任務(wù)上取得了優(yōu)異成績。目標檢測需要在圖像中確定目標的位置和類別,對應(yīng)著定位和分類兩個子任務(wù)。傳統(tǒng)方法將多種算法應(yīng)用于檢測任務(wù)的不同階段,如閾值分割[1]用于目標定位、梯度直方圖特征[2]用于目標特性描述、支持向量機[3]用于特征分類。不同于傳統(tǒng)的處理思路,深度學(xué)習(xí)方法采用了一體化設(shè)計的卷積神經(jīng)網(wǎng)絡(luò),克服了手工設(shè)計特征難度大且適用范圍窄的缺陷,實現(xiàn)了圖像輸入和檢測結(jié)果輸出的端到端式處理流程,相較于傳統(tǒng)方法,檢測效果有著顯著提升,已經(jīng)成為當前的主流研究方向。根據(jù)網(wǎng)絡(luò)設(shè)計思路的不同,基于卷積神經(jīng)網(wǎng)絡(luò)的目標檢測算法可分為雙階段和單階段兩類,包括Faster RCNN[4]、Thunder Net[5]、YOLO[6]、Center Net[7]等。
雙階段算法也被稱為基于分類的檢測,F(xiàn)aster RCNN[4]首先通過區(qū)域建議網(wǎng)絡(luò)在圖像上獲取目標所在區(qū)域的建議,然后根據(jù)這些建議區(qū)域的特征進行分類和位置優(yōu)化。Thunder Net[5]作為面向移動端的實時檢測網(wǎng)絡(luò),采用輕量化的網(wǎng)絡(luò)設(shè)計,是第一個基于ARM 平臺的實時檢測算法。文獻[8]利用數(shù)據(jù)挖掘的方法從生成的anchor中篩選出難樣本(Hard negative),設(shè)計了用于檢測航拍圖像中車輛的卷積神經(jīng)網(wǎng)絡(luò)。單階段算法也被稱為基于回歸的檢測。以YOLO[6]算法為例,整體網(wǎng)絡(luò)由骨架網(wǎng)絡(luò)和YOLO 網(wǎng)絡(luò)兩部分構(gòu)成,前者用于提取圖像的特征,后者根據(jù)特征實現(xiàn)對目標位置、類別和置信度的預(yù)測,單階段算法計算量少,檢測速度快。Center Net[7]對于目標的檢測不再基于anchor,而是基于中心點,有效提高了目標遮擋時的檢測效果。
深度學(xué)習(xí)方法需要大量的圖像和標注用于訓(xùn)練,訓(xùn)練數(shù)據(jù)的不足容易導(dǎo)致過擬合,通常會使用Image Net[9]、MSCOCO[10]等大規(guī)模數(shù)據(jù)集預(yù)訓(xùn)練的權(quán)重進行網(wǎng)絡(luò)的初始化,再在此基礎(chǔ)上用實驗數(shù)據(jù)進行訓(xùn)練。在進行紅外目標檢測時,樣本獲取的成本高、難度大,少量的實驗樣本難以支撐網(wǎng)絡(luò)的從頭訓(xùn)練,需要借助預(yù)訓(xùn)練權(quán)重來初始化網(wǎng)絡(luò)。但在紅外領(lǐng)域并沒有公開的大規(guī)模數(shù)據(jù)集,因此不得不選擇可見光圖像預(yù)訓(xùn)練的權(quán)重。然而網(wǎng)絡(luò)結(jié)構(gòu)與權(quán)重是一一對應(yīng)的,一旦結(jié)構(gòu)發(fā)生改變,原本的權(quán)重就不再適用,而重新訓(xùn)練來獲取預(yù)訓(xùn)練權(quán)重的代價往往十分昂貴,需要消耗大量的人力物力,也就是說,預(yù)訓(xùn)練權(quán)重嚴重制約了卷積神經(jīng)網(wǎng)絡(luò)在紅外目標檢測中的實際應(yīng)用,為了擺脫這種依賴,本文對無預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)展開研究。以紅外熱像儀拍攝的城市街道場景的車輛為檢測目標,基于YOLO v3[11]網(wǎng)絡(luò)進行實驗。在設(shè)計網(wǎng)絡(luò)時,為提升網(wǎng)絡(luò)的特征提取能力,在網(wǎng)絡(luò)結(jié)構(gòu)中融入注意力模塊,包括SE(squeeze excitation)[12]和CBAM(convolution block attention module)[13],使其能從有限的訓(xùn)練樣本中獲取更多的有用信息。實驗結(jié)果表明,改進后網(wǎng)絡(luò)的檢測能力得到大幅提升,結(jié)合訓(xùn)練次數(shù)的調(diào)整,最終實現(xiàn)了對有預(yù)訓(xùn)練網(wǎng)絡(luò)的超越,檢測精度可達86.3 mAP。
YOLO算法將目標檢測看作是回歸問題,輸入圖像后,同時得到目標位置和類別的預(yù)測,計算量小,處理速度快。改進版本YOLO v3[11]中,加入了anchor機制,并采用殘差設(shè)計加深骨架網(wǎng)絡(luò),根據(jù)目標的大小在3個尺度上進行預(yù)測,有效提升了對于小目標的檢測精度。
網(wǎng)絡(luò)深度的加深在一定程度上使網(wǎng)絡(luò)特征提取的能力得到增強,但在梯度反向傳播時,過深的網(wǎng)絡(luò)容易導(dǎo)致梯度彌散,使訓(xùn)練難以進行。YOLO v3 在設(shè)計骨架網(wǎng)絡(luò)時借鑒了Res Net[14]的設(shè)計思想,在卷積模塊的輸入和輸出之間加入短接(Shortchut)結(jié)構(gòu),卷積層輸出的是期望特征與輸入之間的殘差,降低了數(shù)據(jù)擬合的難度,再利用短接結(jié)構(gòu)與輸入相加,最終得到期望的特征輸出。該骨架網(wǎng)絡(luò)包含53個卷積層,被稱為DarkNet-53。
為了提升對目標位置預(yù)測的精度,YOLO v3中加入了anchor 機制。事先對訓(xùn)練集中的目標位置信息進行K-Means[15]聚類,即緊密貼合目標的矩形框中心點坐標、寬度和長度,聚類中心作為anchor的默認設(shè)置。在YOLO v3中,一共得到9個聚類結(jié)果,并根據(jù)面積大小分配到3個不同的預(yù)測分支。面積較小的anchor 負責對小目標的檢測,對應(yīng)于較為淺層的特征輸出;面積較大的anchor 負責對大目標的檢測,對應(yīng)了深層的特征輸出。通過在多個尺度的特征圖進行目標檢測,大幅提升了小目標檢測的精度,補足了原有方法的缺陷。
YOLO 將圖像劃分為s×s個網(wǎng)格,對應(yīng)骨架網(wǎng)絡(luò)輸出的大小為s×s的特征圖,每個網(wǎng)格負責預(yù)測3個邊界框。網(wǎng)絡(luò)并不直接預(yù)測邊界框的位置信息,而是預(yù)測邊界框與anchor之間的偏移量,具體的對應(yīng)關(guān)系如圖1所示。其中,(tx,ty,tw,th)為網(wǎng)絡(luò)輸出,(cx,cy)為所在網(wǎng)格左上點的坐標,σ(·)為sigmoid函數(shù),(pw,ph)為對應(yīng)anchor的寬度和高度,(bx,by,bw,bh)為預(yù)測的目標位置坐標。
圖1 YOLO v3中目標位置的預(yù)測Fig.1 The prediction of the target location in the YOLO v3
在人眼接觸某一場景信息時,為了及時準確地做出應(yīng)對措施,在快速搜索過后,我們的注意力會重點關(guān)注場景中的某些區(qū)域。在注意力的指導(dǎo)下,后續(xù)“資源”會被更高效合理地調(diào)度。換句話說,人注意力的分布是不均勻的,并且這種分布會朝著獲取更有用信息的方向移動,而這些有用信息會最終服務(wù)于人的自然反應(yīng)或主觀意志[12]。
多數(shù)基于卷積神經(jīng)網(wǎng)絡(luò)的目標檢測算法可以看作是一種編碼-解碼模型,輸入一幅圖像進行編碼,再從中解碼出目標的位置和類別信息作為輸出。在這一過程中,可以加入注意力機制。通過對編碼信息加權(quán)處理,模擬人注意力的不均勻分布,偏向性分配可利用的計算資源,從而獲得更加有用的編碼信息。訓(xùn)練中,權(quán)值分布朝著損失函數(shù)下降的方向不斷移動,網(wǎng)絡(luò)學(xué)習(xí)到不同信息的重要程度,直至收斂,最終完成目標檢測任務(wù)。
目標檢測網(wǎng)絡(luò)中卷積層輸出的特征圖即為編碼信息,除了寬度和高度外,還有深度,一般的網(wǎng)絡(luò)對于特征圖的所有維度均勻?qū)ΥE[12]模塊在通道維度上添加了注意力機制,對于不同通道的特征圖進行權(quán)值重標定,學(xué)習(xí)不同通道的重要程度,突出重要的特征,抑制無用的特征。CBAM[13]則在通道注意力的基礎(chǔ)上,添加了空間注意力,對同一特征圖的不同位置進行加權(quán)。在注意力模塊的幫助下,網(wǎng)絡(luò)能夠提取圖像中更具信息量的成分,并最終提升目標檢測的精度。
SE[12]模塊全稱squeeze-and-excitation,包含了壓縮(squeeze)和激勵(excitation)兩步操作,能夠有效增強深度網(wǎng)絡(luò)的性能。傳統(tǒng)卷積層輸出的特征圖是由各通道直接相加得到的,有學(xué)者認為這時通道之間的相關(guān)性是隱含的,且卷積核的局部感受野導(dǎo)致了對全局信息的忽視。通過SE模塊中壓縮和激勵兩步操作,可以提取全局信息,并完成卷積響應(yīng)的重校準,增強網(wǎng)絡(luò)對有效特征的敏感度。具體的流程如圖2所示。
圖2 SE模塊的結(jié)構(gòu)Fig.2 The structure of SE module
圖中,F(xiàn)sq表示壓縮,F(xiàn)ex表示激活。對于卷積層輸出的特征圖U,(C×W×H)分別表示深度、寬度、高度,在空間維度上,利用全局平均池化對每一幅特征圖進行壓縮,得到維度為(C×1×1)的通道描述符Z,這樣可以提供感受野以外的全局信息,該過程可用下式表示:
在激活過程中,包含了bottleneck 結(jié)構(gòu)的兩個全連接層和兩個激活函數(shù),可由下式表示:
式中:fc1(·)表示維度的全連接層;δ(·)表示ReLU激活函數(shù);fc2(·)表示維度的全連接層;σ(·)表示sigmoid激活函數(shù),得到的結(jié)果S可以認為是不均勻分布的注意力,體現(xiàn)了不同通道的重要程度。通過這些操作,通道之間的相關(guān)性被更充分地挖掘出來。最后S與U相乘,完成通道校準。
CBAM[13]模塊全稱 convolution block attention module,與SE[12]模塊相比,對于卷積層輸出的特征圖,不僅生成一維的通道注意力,同時生成二維的空間注意力,進一步提升網(wǎng)絡(luò)對有效特征的提取能力。
通道注意力生成的具體步驟如圖3所示。對于卷積層輸出的特征圖,在空間維度上,對每一幅特征圖進行全局最大池化和平均池化,結(jié)果分別輸入權(quán)值共享的多層感知器,共有3層,進行的維度變化,輸出結(jié)果的各元素相加,經(jīng)過激活函數(shù)后得到最終的通道注意力。整體流程可由下式表示:
式中:avg(·)表示全局平均池化;max(·)表示全局最大池化;fc1(·)表示維度的全連接層;δ(·)表示ReLU函數(shù);fc2(·)表示維度的全連接層;σ(·)表示sigmoid函數(shù)。
空間注意力生成的具體步驟如圖4所示。對于卷積層的輸出,在通道維度上進行最大池化和平均池化,得到二維的中間結(jié)果,將兩者在通道維度上相連,輸入卷積層,結(jié)果經(jīng)過損失函數(shù),得到單通道二維的空間注意力。整體流程由下式表示:
式中:AVG(·)表示通道維度上的平均池化;MAX(·)表示通道維度上的最大池化;conv2,1,k(·)表示輸入通道為2,輸出通道為1,卷積核為k的卷積;σ(·)表示sigmoid函數(shù)。
通道注意力Sc和空間注意力Ss先后與U相乘得到優(yōu)化后的輸出特征圖,整體流程如圖5所示。
圖3 CBAM模塊中的通道注意力Fig.3 The channel attention in the CBAM
圖4 CBAM模塊中的空間注意力Fig.4 The spatial attention in the CBAM
圖5 CBAM模塊的結(jié)構(gòu)Fig.5 The structure of CBAM
卷積神經(jīng)網(wǎng)絡(luò)中的注意力模塊模仿了人接觸外界信息時注意力的不均勻分布,計算量略微提升,但能夠有效增強網(wǎng)絡(luò)對有效特征的敏感度。同時,作為一個即插即用模塊,注意力模塊能夠十分方便地嵌入已有網(wǎng)絡(luò)。
預(yù)訓(xùn)練權(quán)重初始化的YOLO v3算法對可見光通用目標有著優(yōu)越的檢測效果,但對于紅外目標檢測來說,目前沒有類似的大規(guī)模紅外數(shù)據(jù)集可供預(yù)訓(xùn)練,多數(shù)情況下,不得不利用可見光數(shù)據(jù)預(yù)訓(xùn)練的權(quán)重進行網(wǎng)絡(luò)初始化。但紅外圖像與可見光圖像的成像機理截然不同,兩種圖像中目標的特性也有著顯著差別,往往需要修改原有的檢測可見光目標的網(wǎng)絡(luò),從而更好地適應(yīng)紅外場景。但是網(wǎng)絡(luò)結(jié)構(gòu)與網(wǎng)絡(luò)權(quán)重是一一對應(yīng)的,一旦根據(jù)紅外目標檢測的特點進行了修改,已有的預(yù)訓(xùn)練權(quán)重不再適用。如果利用MSCOCO 數(shù)據(jù)集重新進行預(yù)訓(xùn)練,有著巨大的人力、物力和時間成本。如果直接在實驗數(shù)據(jù)上訓(xùn)練,檢測效果將十分依賴數(shù)據(jù)量的大小,而收集并標注大量的紅外數(shù)據(jù)也是費時費力的。為解決卷積神經(jīng)網(wǎng)絡(luò)檢測紅外目標時遇到的上述困難,我們改進了YOLO v3算法,將注意力模塊嵌入原始網(wǎng)絡(luò)中。在不進行預(yù)訓(xùn)練的情況下,有效提升網(wǎng)絡(luò)的特征提取能力,從有限的訓(xùn)練樣本中挖掘出更多的有用信息,最終提高檢測性能。
如圖6所示,在骨架網(wǎng)絡(luò)DarkNet-53的每一個殘差塊中加入注意力模塊,3個預(yù)測分支中,最后一個卷積層之前也加入注意力模塊。改進后的YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)如表1、2所示。
圖6 改進前后的殘差塊Fig.6 The residual block before and after improvement
實驗數(shù)據(jù)由一臺長波紅外熱像儀拍攝,目標為城市街道場景中的車輛,包括轎車、卡車和公交車3類目標??紤]到不同的外界環(huán)境,分別在中午11點、下午4點和晚上7點3個時間段采集數(shù)據(jù),每個時間段的數(shù)據(jù)包括了大小兩個視場,涵蓋了目標不同的角度和尺寸。圖像分辨率為1024×768,共630張,為考察訓(xùn)練樣本稀少時的網(wǎng)絡(luò)性能,不進行數(shù)據(jù)增廣,并按照7:3的比例隨機劃分訓(xùn)練集441張,測試集189張。
實驗平臺為Linux 操作系統(tǒng),CPU為Intel Xeon E5-2678 v3,GPU為Nvidia RTX 2080ti,內(nèi)存128 G。實驗基于Pytorch,訓(xùn)練的初始學(xué)習(xí)率為0.01,隨著訓(xùn)練輪次的增加,按照余弦函數(shù)進行學(xué)習(xí)率衰減。采用SGD(stochastic gradient descent)算法進行參數(shù)更新,動量為0.937,權(quán)重衰減為0.0005。
表1 改進的DarkNet-53 結(jié)構(gòu)Table1 The structure of improved DarkNet-53
實驗指標包括IoU 閾值為0.5時的mAP,置信度閾值為0.4時的準確率(Precision)和召回率(Recall)。其中mAP@0.5為主要指標,綜合考慮了所有的置信度閾值。
表2 改進的預(yù)測分支結(jié)構(gòu)Table2 The structure of improved prediction subnet
訓(xùn)練120個輪次后,不同網(wǎng)絡(luò)的實驗結(jié)果如表3所示,使用MSCOCO 預(yù)訓(xùn)練權(quán)重進行初始化的YOLO v3算法實現(xiàn)了84.7 mAP。一旦不進行預(yù)訓(xùn)練,檢測結(jié)果會出現(xiàn)劇烈的下降,僅為38.9 mAP,加入注意力模塊后,下降的幅度得到了緩解,說明注意力模塊能夠提高網(wǎng)絡(luò)對圖像中有用信息的敏感度,幫助提升檢測性能,證明了所提方法的合理性。對比兩個不同的注意力模塊,CBAM的效果要好于SE,這歸功于空間注意力的加入,進一步提升了網(wǎng)絡(luò)的檢測性能。圖7展示了不同訓(xùn)練輪次時的測試結(jié)果。
表3 訓(xùn)練120輪次的實驗結(jié)果對比Table3 The comparison of results when epoch=120
圖7 訓(xùn)練120輪次的測試結(jié)果Fig.7 The results on the test dataset when epoch=120
在訓(xùn)練120個輪次時,即使加入了注意力模塊,不進行預(yù)訓(xùn)練帶來的檢測性能下降也不能被完全消除。因此,將訓(xùn)練輪次調(diào)整到300,實驗結(jié)果如表4所示。
訓(xùn)練300個輪次后,在測試集上,3個不經(jīng)過預(yù)訓(xùn)練的網(wǎng)絡(luò)的檢測表現(xiàn)都有了明顯提升,但對于未經(jīng)改動的YOLO v3 來說,80.6 mAP的結(jié)果依然要低于預(yù)訓(xùn)練的網(wǎng)絡(luò)。而加入注意力模塊后,即使不進行預(yù)訓(xùn)練,通過訓(xùn)練次數(shù)的增加,網(wǎng)絡(luò)最終的檢測結(jié)果為86.3 mAP,超過了預(yù)訓(xùn)練網(wǎng)絡(luò)。對于兩個不同的注意力模塊,CBAM 結(jié)合了通道注意力和空間注意力,效果要好于只加入了通道注意力的SE模塊。不同訓(xùn)練輪次時的測試結(jié)果如圖8所示。測試集上的部分檢測結(jié)果如圖9所示。
表4 訓(xùn)練300輪次的實驗結(jié)果對比Table4 The comparison of results when epoch=300
圖8 訓(xùn)練300輪次的測試結(jié)果Fig.8 The results on test dataset when epoch=300
圖9 測試集的部分檢測結(jié)果Fig.9 Part of detection results on the test dataset
當卷積神經(jīng)網(wǎng)絡(luò)檢測紅外圖像中的目標時,預(yù)訓(xùn)練權(quán)重扮演著十分重要的角色,但也嚴重限制了實際的使用。一旦預(yù)訓(xùn)練權(quán)重對于網(wǎng)絡(luò)不再適用或不可獲得,網(wǎng)絡(luò)的檢測性能會出現(xiàn)大幅的衰減。為擺脫對預(yù)訓(xùn)練權(quán)重的過度依賴,本文基于YOLO v3算法,將SE和CBAM 兩種注意力模塊嵌入原始的網(wǎng)絡(luò)中,提高網(wǎng)絡(luò)對有用特征的敏感度,緩解了不進行預(yù)訓(xùn)練所帶來的檢測性能下降,并通過訓(xùn)練輪次的調(diào)整,最終使無預(yù)訓(xùn)練網(wǎng)絡(luò)的檢測表現(xiàn)超越了預(yù)訓(xùn)練網(wǎng)絡(luò),對于城市街道場景中的車輛目標有著良好的檢測效果。