叢 眸,張 平,王 寧
(1.長春理工大學 計算機科學技術(shù)學院, 長春 130022; 2.陸軍裝甲兵學院, 北京 100072;3.公安部第三研究所, 北京 100142)
基于圖像的目標檢測技術(shù)是指利用計算機視覺等相關技術(shù),將既定類別的物體自動從圖像中檢測出來,并對物體的類別、位置、大小進行判斷[1]。近年來,目標檢測技術(shù)取得了巨大的成功,已在海防監(jiān)視、精確制導、視頻監(jiān)控等多個領域得到廣泛應用。裝甲車輛作為地面戰(zhàn)場最主要的作戰(zhàn)力量,通過計算機視覺技術(shù)實現(xiàn)對裝甲車輛目標的自動檢測,有利于我方獲取更準確的敵我雙方戰(zhàn)場態(tài)勢情況,進而根據(jù)戰(zhàn)場態(tài)勢的變化做出準確靈活的作戰(zhàn)策略,占據(jù)戰(zhàn)場的主動性[2-3]。
當前,基于卷積神經(jīng)網(wǎng)絡的目標檢測方法已成為目標檢測領域的主流,這些方法主要可以分為基于建議區(qū)域提取的方法和基于回歸的方法[4-5]。前者的代表作為有R-CNN[6]、faster R-CNN[7]等方法,其特點是檢測精度較高,但檢測速度較慢;后者的代表作有SSD[8]、YOLO[9]等方法,其特點是檢測速度較快。YOLOv3[10]是在YOLO的基礎上發(fā)展而來的,是YOLO系列方法的集大成者,具有檢測精度高、速度快的優(yōu)點。本研究以YOLOv3網(wǎng)絡為基礎,利用K-means++算法計算出適用于裝甲車輛目標的錨框,然后利用空間金字塔池化(SPP)模塊[11]豐富卷積特征的表達能力并結(jié)合卷積特征融合機制對多層級卷積特征進行融合,從而提高裝甲車輛目標的檢測效果。實驗結(jié)果表明,改進的YOLOv3方法在本文構(gòu)建的裝甲車輛目標檢測數(shù)據(jù)集上具有更好的檢測精度,同時能滿足實時性需求。
YOLOv3使用Darknet53網(wǎng)絡提取圖像的卷積特征,而后通過yolo層實現(xiàn)多尺度預測。YOLOv3使用較多的CBR和Res結(jié)構(gòu),其中CBR表示將1×1或3×3的卷積核進行標準規(guī)范化操作,而后使用Leaky rule激活函數(shù)進行非線性化;Resn由CBR與n個Res unit組成,而Res unit由2個不同尺度的卷積核組成的CBR和短連接組成。為實現(xiàn)細粒度檢測,YOLOv3使用了多尺度特征進行目標檢測,而Darknet53最后的卷積層輸出的卷積特征尺度為13×13×1 024,因此YOLOv3通過采用了上采樣與淺層卷積特征圖連接,輸出3個不同尺度的卷積特征,并在不同尺度的應用不同尺度的錨框,從而得到最終的檢測結(jié)果。YOLOv3借鑒了殘差網(wǎng)絡結(jié)構(gòu),從而形成了更深的網(wǎng)絡層級,并結(jié)合多尺度檢測,提升目標檢測的性能,特別是對小目標檢測的性能。此外,在整個YOLOv3網(wǎng)絡舍棄了目標檢測模型中經(jīng)常使用的池化層,而是通過在前向傳播過程中改變卷積的步長來實現(xiàn)卷積特征尺度的變化,降低了網(wǎng)絡的計算量,使其具有較高的檢測速度。
目標檢測模型的損失通常由位置損失和分類損失組成,而YOLOv3的損失lall除了由分類損失lclass和位置損失lcoord之外,還增加了置信度損失lconf,其中置信度損失lconf由存在目標的網(wǎng)格的損失與不存在目標的網(wǎng)格的損失組成,其計算公式為:
(1)
本文在YOLOv3的基礎上,針對裝甲車輛數(shù)據(jù)集的特點對其進行改進。主要的改進點有三處:一是通過改進錨框設計方法來獲取更精確的錨框尺度,從而加快網(wǎng)絡的收斂速度;二是改進特征提取網(wǎng)絡,通過在Darknet53的第5層與第6層之間集成SPP模塊來豐富卷積特征的表達能力;三是在特征提取網(wǎng)絡之后,結(jié)合卷積特征聚合機制來融合多層級卷積特征,從而提高目標檢測的性能。改進后的網(wǎng)絡結(jié)構(gòu)如圖1所示。
圖1 本文方法的整體結(jié)構(gòu)框圖
網(wǎng)絡模型能夠通過不斷的學習訓練來調(diào)整邊界框的大小,但合適的初始化邊界框尺寸能夠加快網(wǎng)絡的訓練并提高網(wǎng)絡模型的性能。YOLOv3中引入了錨框的思想并通過K-means方法計算錨框的大小,即首先隨機選取數(shù)據(jù)集中K個點作為聚類中心,然后針對數(shù)據(jù)集中的每個樣本計算其到K個聚類中心的距離并將其分類到距離最小的聚類中心所對應的類別中,接著再針對每個類別重新計算聚類中心,最后重復上述2個步驟,直到聚類中心的位置不再變化。通過K-means得到的錨框尺度有效地提升了YOLOv3的性能,但直接使用已有的錨框尺度并不適用于本文數(shù)據(jù)集。此外,由于K-means的聚類結(jié)果受初始點的選取影響較大。為更好地選取錨框的尺寸,本文使用K-means++算法代替原有的K-means方法。與K-means相比,K-means++對初始點的選擇進行了改進,放棄了原有的隨機選擇K個聚類中心的理念,而是通過隨機選取一個聚類中心之后通過輪盤法選取后續(xù)的聚類中心,使得K個聚類中心的距離足夠遠。在得到K個聚類中心之后再繼續(xù)原K-means計算錨框尺寸。與K-means相比,K-means++計算初始點的選擇時耗費了一點的時間,但在迭代過程中能夠更快地收斂,提高了網(wǎng)絡訓練速度。本文通過K-means++方法得到的9個錨框尺寸分別為(10,12),(13,20),(18,28),(22,35),(30,42),(37,55),(41,60),(55,75),(72,108)。
SPP由微軟研究院的何凱明提出,其最初目的是用于解決目標檢測模型中對圖像區(qū)域裁剪、縮放時圖像失真問題以及對圖像重復提取卷積特征的問題。隨著研究的不斷深入,SPP可以用于實現(xiàn)全局特征與局部特征的融合,從而豐富卷積特征的表達能力,更有利于實現(xiàn)對不同尺度目標的自動檢測。SPP模塊的結(jié)構(gòu)如圖2所示。
圖2 SPP模塊結(jié)構(gòu)框圖
本文在YOLOv3中的第5層與第6層之間集成了SPP模塊。SPP模塊有4個并行的分支組成,分別是卷積核尺度為5×5、9×9和13×13的池化操作以及一個短連接,其中池化操作采取的池化方式為步長為1的最大值池化,最后聯(lián)合4個分支的卷積特征并通過1×1和3×3的卷積核進行再次融合。SPP模型能夠有效地提升YOLOv3的檢測效果,在后文的實驗部分,本文比較了沒有集成SPP模型與集成了SPP模型的檢測效果。
隨著深度卷積神經(jīng)網(wǎng)絡層級的不斷提升,深層卷積特征的分辨率不斷降低,但具有更好的特征表達能力,而淺層的卷積特征的分辨率較大,特征表達能力不如深層卷積特征。雖然YOLOv3利用了多層卷積特征來實現(xiàn)對目標的檢測,但對于多層卷積特征沒有進行較好地融合,本文通過在YOLOv3中結(jié)合特征聚合機制,使得輸入到y(tǒng)olo檢測層之前的卷積特征更好地融合了深度卷積特征與淺層卷積特征。卷積特征聚合主要分為2部分:自下而上的特征聚合以及自上而下的特征聚合,其結(jié)構(gòu)圖1中陰影框內(nèi)所實話,具體實現(xiàn)方式如下:首先,將SPP模塊得到的卷積特征進過CBR送入P1,并將其通過上采樣增大一倍的分辨率,使其與darknet53的第5層卷積特征具有相同的尺寸;接著,將上采樣后的卷積特征與第5層的卷積特征進行融合得到P2,將P2再次通過上采樣增大一倍的分辨率并與darknet53的第4層卷積特征相融合得到P3,上述部分為自下而上的特征聚合;然后,將P3通過池化降低一倍的分辨率并與P2相融合,得到卷積特征N2;最后,按照同樣得到步驟,將N2降低一倍的分辨率并與P1相融合,上述步驟為自上而下的特征聚合。至此,特征聚合步驟完成,而后將N1、N2以及P3分別送入YOLOv3原有的網(wǎng)絡結(jié)構(gòu)中,并完成后續(xù)的目標檢測流程。相比于YOLOv3直接使用單層卷積特征(如Y1)或簡單融合多層卷積特征,本文通過特征聚合機制能夠更好對多層卷積特征進行融合,使得融合后的卷積特征同時具有淺層卷積特征與深層卷積特征的特點,有利于更好地實現(xiàn)對目標的自動檢測。
通過多種途徑獲取2 156張裝甲車輛圖像,構(gòu)建一個小型的裝甲車輛目標檢測數(shù)據(jù)集。該數(shù)據(jù)集中包含了坦克、步戰(zhàn)車、自行火炮等不同類型的裝甲車輛目標,同時考慮到了遮擋、氣象、煙霧等多種地面戰(zhàn)場復雜情況。隨后,按照 Pascal VOC數(shù)據(jù)集[12]的格式對裝甲車輛目標檢測數(shù)據(jù)集進行標注,便于后期的網(wǎng)絡訓練與測試。最后,將數(shù)據(jù)集中的圖像隨機分為訓練集與測試集,其中,訓練集的圖像數(shù)量為 1 600 張圖像,共包含1 867個裝甲車輛目標;測試集的圖像數(shù)量為556張圖像,共包含684個裝甲車輛目標。
為驗證本文方法的有效性,在裝甲車輛目標檢測數(shù)據(jù)集上進行了訓練與測試。所有網(wǎng)絡模型的訓練與測試均在CPU:i7-8700/GPU:RTX 2080Ti的圖像處理工作站上進行,操作系統(tǒng)為ubuntu16.04,采用的深度學習架構(gòu)為keras。在訓練時初始時學習率為0.001,在迭代次數(shù)為2 000時學習率降為0.000 1,并在迭代次數(shù)為3 000時學習率降為0.000 01,在迭代次數(shù)為4 000時訓練終止,其他參數(shù)均相同。因本文構(gòu)建的裝甲車輛目標檢測數(shù)據(jù)集中樣本圖像較少,因此在網(wǎng)絡訓練時使用了數(shù)據(jù)增強技術(shù),如旋轉(zhuǎn)、平移、縮放等,來提高模型的泛化能力。
首先采用信息檢索領域中對相關性的評價指標Precision-Recall曲線來反映各模型對檢測出的目標準確程度與召回程度,即查準率P、查全率R以及綜合指數(shù)F1分數(shù)。
(2)
式中:TP為正確檢測出目標的數(shù)量;FP為沒有檢測出的目標數(shù)量;FN為錯誤檢測出目標的數(shù)量。由于地面戰(zhàn)場環(huán)境瞬息萬變,對目標檢測的速度具有一定的要求,因此本文將單幀圖像的平均檢測耗時作為一項評價指標。
與YOLOv3相比,本文提出的網(wǎng)絡結(jié)構(gòu)有多點改進之處,在測試時需要對各改進策略進行了單獨測試,因此本文在裝甲車輛目標檢測數(shù)據(jù)集上的測試模型共有4種,分別是原YOLOV3、集成SPP模塊的YOLOv3(YOLOv3-spp)、結(jié)合卷積特征聚合機制的YOLOv3(JH-YOLOv3)以及本文方法。各方法的測試結(jié)果如表1所示。
表1 各方法的測試結(jié)果
從表1可以看出,相比于YOLOv3,本文提出的改進措施均能夠有效地提高查準率、查全率以及F1分數(shù)。通過在特征提取網(wǎng)絡上集成SPP模塊來豐富特征的表達能力,查準率與查全率分別提升了7.6%和2.0%;通過卷積特征聚合機制來融合多層級卷積特征,查準率與查全率分別提升了9.8%和1.0%;而綜合使用上述2種改進措施,則查準率與查全率分別提升了14.5%和4.2%,綜合指標F1分數(shù)提升了9.5%。在單幀圖像檢測耗時方面,YOLOv3的單幀圖像平均檢測耗時最低,只有31.8 ms,而本文方法的平均耗時最高,達到了38.9 ms,但本文方法仍然能夠滿足實時性需求(低于40 ms)。圖3展示了本文方法取得的PR曲線。
本文還根據(jù)獲得的PR曲線計算曲線下的面積,從而得到了各方法的平均精確度(AP)。各方法的AP值如表2所示。從表2可以看出,本文方法提出的2種改進措施分別將AP提升了3.1%和2.4%,綜合2種改進措施則能夠?qū)P從原來的80.3%提升至85.6%,證明了本文方法能夠有效地提高對裝甲車輛目標檢測的能力。
圖3 本文方法取得的PR曲線
表2 各方法取得的平均精確度
圖4展示了本文方法的部分測試樣本檢測結(jié)果,其中,左上角的圖片中存在2輛位于荒漠場景中的裝甲車輛,展現(xiàn)了裝甲車輛典型的正面和斜側(cè)形象,本文方法能夠精確檢測到裝甲車輛目標;右上角的圖片中主要展現(xiàn)了裝甲車輛背面具有的典型形象,本文方法也能準確地檢測到目標;左下角的圖片中存在3輛位于雪地場景中的裝甲車輛,主要展現(xiàn)了目標反側(cè)與背面具有的典型形象,本文方法也能檢測到所有的目標;右下角的圖片中存在3輛位于草原場景中的裝甲車輛目標,本文方法檢測到了這3個目標,但圖片中左下角有2塊的體積較大的巖石,本文方法將其中一塊巖石誤檢成了一輛裝甲車輛。
圖4 典型樣本的檢測結(jié)果
1) 針對裝甲車輛目標檢測任務,在YOLOv3的基礎上,通過在特征提取網(wǎng)絡上集成SPP模塊來豐富卷積特征的表達能力以及使用卷積特征聚合機制來融合多層級卷積特征,提出了一種改進方法。
2) 在確保目標檢測實時性需求的前提下,提出了兩種改進措施能夠有效地提升查準率、查全率、F1分數(shù)以及平均精確度。
3) 本文方法綜合了兩種改進措施,進一步地提升目標檢測的性能。
4) 本文構(gòu)建的裝甲車輛目標檢測數(shù)據(jù)集還存在樣本圖像不足的問題,在后續(xù)的研究過程中,還需要進一步補充完善。