叢 眸 張 平 王 寧
1(長春理工大學計算機科學技術學院 吉林 長春 130022) 2(陸軍裝甲兵學院 北京 100072) 3(公安部第三研究所 北京 100142)
航拍圖像中的車輛目標檢測在空中監測等領域具有重要的應用,但航拍圖像中的車輛目標存在目標體積小、細節不充分等特點,給目標檢測任務帶來了極大的挑戰[1]。隨著計算機視覺技術的快速發展,基于卷積神經網絡(Convolutional Neural Networks,CNN)的目標檢測方法因其無須人工提取特征以及適應性強等特點已成為目標檢測領域中的主流方法,并得到了廣泛的應用[2]。目前,基于CNN的目標檢測方法主要可以分為兩種:基于建議區域提取的方法和基于回歸的方法[3-4]。基于建議區域提取的方法的思路是首先在卷積特征圖上提取建議區域,而后對建議區域進行精確檢測。這種方法具有檢測精度較高,但檢測速度較慢的特點,其代表方法有R-CNN[5]、Faster R-CNN[6]、R-FCN[7]等。基于回歸的方法主要從回歸的角度進行目標檢測,只需要進行單次檢測就能得到檢測結果,檢測速度快,代表方法有SSD[8]、YOLO[9]等。
YOLOv3[10]是在YOLO的基礎上發展而來的,是YOLO系列方法的集大成者,具有檢測精度高、速度快等優點。目前,YOLOv3在諸多目標檢測場景中得到了廣泛的應用,并針對具體應用場景進行了相應的改進。王兵等[11]針對安全帽的檢測任務,在YOLOv3的基礎上,改進了廣義交并比的計算方法以及模型的損失函數,改進后的算法取得了較好的檢測效果。Kharchenko等[12]將簡化后的YOLOv3應用于航拍圖像的目標檢測,通過遷移學習以及重新設計錨框等,實現了較好的檢測效果。
本文將YOLOv3應用于航拍圖像中的車輛目標檢測領域,為提高目標檢測的精度,對YOLOv3的網絡參數與結構進行了改進。使用K-means++方法[13]對航拍圖像車輛數據集進行維度聚類,并對YOLOv3的錨框參數進行修改,從而加快網絡訓練時的收斂速度。針對航拍車輛數據集中的目標尺度較小以及特征不明顯等特點,通過改進網絡結構,在特征提取網絡中集成空間金字塔池化(Spatial Pyramid Pooling,SPP)模塊[14]來豐富卷積特征的表達能力,以及設計4個不同尺度的卷積特征圖并通過卷積特征融合機制來實現對多層級卷積特征的融合,從而實現對航拍圖像車輛目標的精確檢測。
YOLOv3是Redmon等[15]在YOLOv2的基礎上改進而來的,采用Darknet53網絡提取圖像的卷積特征,并結合殘差網絡中的短連接以及多尺度檢測的思想,在最后的特征金字塔網絡上通過YOLO層來實現對目標的精確檢測,網絡結構如圖1所示。

圖1 YOLOv3的網絡結構
YOLOv3使用較多的CBR和Res結構,其中CBR表示將1×1或3×3的卷積核進行標準規范化操作,而后使用Leaky rule激活函數進行非線性化;Resn由CBR與n個Res unit組成,其中,Res unit由2個不同尺度的卷積核構成的CBR和短連接組成。為實現細粒度檢測,YOLOv3使用了多尺度特征進行目標檢測,而Darknet53最后的卷積層輸出的卷積特征尺度為16×16,因此YOLOv3通過采用了上采樣與淺層卷積特征圖連接,輸出3個不同尺度的卷積特征,并在不同尺度應用不同尺度的錨框,從而得到最終的檢測結果。YOLOv3借鑒了殘差網絡結構,從而形成了更深的網絡層級,并結合多尺度檢測,提升目標檢測的性能,特別是對小目標檢測的性能。此外,在整個YOLOv3網絡舍棄了目標檢測模型中經常使用的池化層和全連接層,而是通過在前向傳播過程中改變卷積的步長來實現卷積特征尺度的變化,極大地降低了網絡的計算量,使其具有較高的檢測速度。
目標檢測模型的損失通常由位置損失和分類損失組成,而YOLOv3的損失lall除了由分類損失lclass和位置損失lcoord之外,還增加了置信度損失lconf,其中置信度損失lconf由存在目標的網格的損失與不存在目標的網格的損失組成。
網絡模型能夠通過不斷地學習訓練來調整邊界框的大小,但合適的初始化邊界框尺寸能夠加快網絡的訓練并提高網絡模型的性能。YOLOv3中引入了Faster R-CNN中錨框的思想,并通過K-means方法計算錨框的大小,即首先隨機選取數據集中K個點作為聚類中心,然后針對數據集中的每個樣本計算其到K個聚類中心的距離并將其分類到距離最小的聚類中心所對應的類別中,接著再針對每個類別重新計算聚類中心,最后重復上述2個步驟,直到聚類中心的位置不再變化。通過K-means[16]得到的錨框尺度有效地提升了YOLOv3的性能,但直接使用已有的錨框尺度并不適用于航拍圖像車輛數據集。此外,由于K-means的聚類結果受初始點的選取影響較大。為更好地選取錨框的尺寸,本文使用K-means++算法代替原有的K-means方法。與K-means相比,K-means++對初始點的選擇進行了改進,放棄了原有的隨機選擇K個聚類中心的理念,而是通過隨機選取一個聚類中心之后通過輪盤法選取后續的聚類中心,使得K個聚類中心的距離足夠遠。在得到K個聚類中心之后再繼續原K-means計算錨框尺寸。與K-means相比,K-means++計算初始點的選擇時耗費了一點的時間,但在迭代過程中能夠更快收斂,提高了網絡訓練速度。
由于改進后的網絡在4個不同分辨率的卷積特征圖上進行目標檢測,因此本文通過K-means++算法得到了12個錨框尺度,并按照錨框大小按照卷積特征圖的分辨率將12個錨框尺度平均分配到每個卷積特征圖上,即每個卷積特征圖上分配3個不同尺度的錨框。
在YOLOv3的基礎上,針對航拍圖像中車輛目標的特點,通過在Darknet53的第5層與第6層之間集成SPP模塊來豐富卷積特征的表達能力,以及在特征提取網絡之后結合卷積特征融合制來融合多層級卷積特征,并設計4個不同尺度的卷積特征圖來預測目標來提高目標檢測的性能。改進后的網絡結構如圖2所示。

圖2 改進后的YOLOv3網絡結構
2.2.1集成SPP模塊的特征提取網絡
SPP由微軟研究院的何凱明提出,其最初目的是用于解決目標檢測模型中對圖像區域裁剪、縮放時圖像失真問題、對圖像重復提取卷積特征的問題。隨著研究的不斷深入,SPP可以用于實現全局特征與局部特征的融合,從而豐富卷積特征的表達能力,更有利于實現對不同尺度目標的自動檢測。
SPP模塊的詳細結構如圖3所示。本文在YOLOv3中的第5層與第6層之間集成了SPP模塊。SPP模塊有4個并行的分支組成,分別是卷積核尺度為5×5、9×9和13×13的池化操作以及一個短連接,其中池化操作采取的池化方式為步長為1的最大值池化,最后聯合4個分支的卷積特征并通過1×1和3×3的卷積核進行再次融合。SPP模塊能夠有效地提升YOLOv3的檢測效果。

圖3 SPP模塊詳細結構
2.2.2融合多層卷積特征的特征金字塔
隨著深度CNN層級的不斷提升,深層卷積特征的分辨率不斷降低,但具有更好的特征表達能力,而淺層的卷積特征的分辨率較大,特征表達能力不如深層卷積特征。YOLOv3利用了3個不同分辨率的卷積特征來實現對目標的檢測,但對于這些不同分辨率的卷積特征圖沒有進行較好的融合,本文針對航拍圖像中車輛目標尺度較少的特點,設計了4層卷積特征金字塔來對目標進行檢測,并通過結合特征融合機制,使得輸入到YOLO檢測層之前的卷積特征更好地融合了深層卷積特征與淺層卷積特征。卷積特征融合網絡主要分為2部分:自下而上的特征融合以及自上而下的特征融合,其結構如圖2中虛線框內所示,具體實現方式如下:首先,將SPP模塊得到的卷積特征經過CBR送入P1,并將其通過上采樣增大一倍的分辨率,使其與darknet53的第5層卷積特征具有相同的尺寸;接著,將上采樣后的卷積特征與第5層的卷積特征進行融合得到P2,將P2再次通過上采樣增大一倍的分辨率并與darknet53的第4層卷積特征相融合得到P3,并按照類似的步驟得到P4,上述部分為自下而上的特征融合;然后,將P4通過池化降低一倍的分辨率并與P3相融合,得到卷積特征N3,并按照類似步驟得到P2;最后,將N2降低一倍的分辨率并與P1相融合,上述步驟為自上而下的特征融合。至此,特征融合步驟完成,而后將N1、N2和N3分別送入YOLOv3原有的網絡結構中,并按照相同的網絡結構設計出應用于P4的檢測層,并完成后續的目標檢測流程。相比于YOLOv3直接使用單層卷積特征(如Y1)或簡單融合多層卷積特征,本文通過特征融合機制能夠更好地對多層卷積特征進行融合,使得融合后的卷積特征同時具有淺層卷積特征與深層卷積特征的特點,有利于更好地實現對目標的自動檢測。
VEDAI航拍圖像車輛目標檢測數據集[17]由原始大視場衛星圖像分割成較小圖像組成,共分為4個子集,即大尺度彩色圖像(LCI)、小尺度彩色圖像(SCI)、大尺度紅外圖像(LII)、小尺度紅外圖像(SII)。其中,小尺度圖像的分辨率512×512,是分辨率為1 024×1 024的大尺度圖像的縮小版。由于本文主要針對彩色圖像進行目標檢測以及輸入圖像的分辨率為512×512,因此本文選擇了VEDAI數據集的子集SCI作為航拍圖像車輛目標檢測數據集。SCI數據集共標注了6種類型的車輛,并將這6種不同類型的車輛目標分為小型車輛與大型車輛等2大類,各類型車輛的目標數量如表1所示。

表1 SCI數據集中各類目標的數量
根據SCI數據集中對目標類型的分類,采用2種方法來驗證改進后的YOLOv3對車輛目標的檢測性能,并與原YOLOv3進行對比:1) 將SCI數據集中的車輛類型分為2類,即小型車輛與大型車輛,并隨機挑選出80%的圖像作為訓練集,其余的20%作為測試集;2) 對SCI數據集中的6類車輛目標進行檢測,并對網絡進行模型分解實驗,驗證本文提出各改進策略的有效性。
所有的實驗均在操作系統為ubuntu16.04、CPU:i7- 8700/GPU:RTX 2080Ti的圖像處理工作站上進行,采用的深度學習架構為Keras。對YOLOv3以及改進后的YOLOv3分別進行訓練與測試,其中訓練階段的初始學習率為0.001,當訓練迭代次數為10 000次和20 000次時,學習率分別降為0.000 1和0.000 01,并在迭代次數為30 000時終止網絡訓練。由于SCI數據集中圖像以及目標數量相對較少,本文還通過圖像旋轉、增加對比度等數據增強手段來提高網絡的泛化能力。
3.2.1實驗1
將SCI數據集中的車輛目標分為2類:小型車輛與大型車輛,分別對YOLOv3以及改進后的YOLOv3進行測試。采用信息檢索領域中對相關性的評價指標Precision-Recall曲線來反映各模型對檢測出的目標準確程度與召回程度,即查準率P、查全率R、綜合指數F1、PR曲線下面積,即平均均值精度(mean average precision,mAP)。測試結果如表2所示。本文方法的PR曲線如圖4所示。

表2 不同方法對2類目標檢測結果的對比(%)

圖4 本文方法取得的PR曲線
從表2可以看出,與YOLOv3相比,本文提出的改進YOLOv3能夠有效地提升對航拍圖像中的車輛目標的檢測性能,其中查準率由84.9%提升到88.4%,查全率由86.9%提高到90.7%,綜合指數F1由85.8%提高到89.5%,mAP由85.5%提高到89.6%。
3.2.2實驗2
分別應用YOLOv3以及本文方法對SCI數據集中的6類車輛目標進行檢測,并計算各類目標的均值精確度(Average Precision,AP)以及整體的mAP。測試結果如表3所示,改進后的YOLOv3將mAP從59.7%提升到了64.2%,其中6類目標中有5類目標的AP得到了提升,只有卡車類目標的AP略有下降,但下降幅度較少。

表3 不同方法對6類目標檢測結果的對比(%)
與YOLOv3相比,本文提出的網絡結構有3處改進,因此在測試時需要對各改進策略進行單獨測試。此外,本文主要針對小目標進行檢測,因此還與經典的小目標檢測模型FPN[18]進行了對比。在SCI數據集上的測試模型共有5種,分別是原YOLOv3、在卷積特征提取網絡中集成SPP模塊的YOLOv3(YOLOv3-spp)、結合卷積特征融合機制的YOLOv3(RH-YOLOv3)、采用4層卷積特征金字塔改進的YOLOv3(YOLOv3-ft)、本文方法、FPN。各方法在SCI數據集上取得的mAP如表4所示。

表4 各方法在SCI數據集上取得的mAP(%)
可以看出,本文提出的幾種改進措施均能有效地提升航拍圖像車輛目標檢測的mAP,其中,在特征提取網絡上集成SPP模塊來豐富特征的表達能力能夠使mAP提升1.5百分點;通過卷積特征融合機制來融合多層級的卷積特征可以使mAP提升3.1百分點;使用4層卷積特征金字塔則能夠使mAP提升1.9百分點;綜合使用上述幾種改進措施,則能夠使mAP提升4.5百分點,這也證明了本文使用的上述3種策略的有效性。FPN取得的mAP為63.3%,比本文方法取得的mAP低了0.9百分點,這也證明了本文方法能夠更好地適用于航拍圖像中車輛目標檢測任務。
圖5展示了本文方法和YOLOv3的部分檢測結果。對于第一行中圖像,YOLOv3和本文方法均能檢測出航拍圖像中的2個汽車目標,但本文方法的檢測置信度高于YOLOv3。在第2行的航拍圖像中存在3個目標,但YOLOv3只檢測出了2個目標,漏檢了圖像右側的卡車目標,而本文方法檢測出了全部的目標,且具有較高的置信度。

(a) YOLOv3 (b) 本文方法圖5 YOLOv3與本文方法的部分檢測結果對比
本文針對航拍圖像中的車輛目標檢測任務,提出一種YOLOv3改進方法。使用K-means++聚類方法來優化錨框參數并提高網絡訓練效率。在YOLOv3的基礎上,通過在特征提取網絡中集成SPP模塊,以及通過卷積特征融合網絡來融合多層級的卷積特征并設置4層卷積特征金字塔來預測航拍圖像中的車輛目標。改進的YOLOv3使mAP從原來的59.7%提升到了64.2%,有效地提高了航拍圖像中車輛目標檢測的精度。