劉永峰,沈延安,韋 哲,李從利
(1 陸軍炮兵防空兵學院兵器工程系,合肥 230031;2 陸軍炮兵防空兵學院無人機應用系,合肥 230031)
當前,軍用無人機已成為現(xiàn)代戰(zhàn)爭中不可忽視的空中力量,世界各國都將其置于優(yōu)先發(fā)展的地位。利用其攜帶的可見光/紅外成像設備對戰(zhàn)場目標進行檢測與識別,是無人機的主要功能之一。但由于軍用無人機飛行的特殊性和戰(zhàn)場環(huán)境的復雜性,使得無人機圖像具有以下特點:無人機飛行高度一般在3~5 km,導致在對地面特定目標(如裝甲目標、民用車輛、人員等)進行搜索時,目標在視場中所占的像素比例較小、特征信息少;成像設備在拍攝時會受到低空的云層、煙霧的遮擋,同時成像平臺處于抖動狀態(tài),造成成像質量較差;無人機飛行高度、角度實時變化,加之成像設備采用變焦技術,使得目標在圖像中的尺度變化大;飛行次數(shù)有限,造成軍事目標樣本數(shù)據(jù)量少。以上特點給無人機圖像目標檢測帶來了一定的挑戰(zhàn)。
現(xiàn)階段,基于深度學習的目標檢測技術正蓬勃發(fā)展[1-2],可分為兩類,一類是兩階段(two-stage)檢測算法,此類算法在檢測時首先進行區(qū)域生成(region proposal,RP),即首先確定一系列可能包含待檢物體的候選建議框,再通過卷積神經(jīng)網(wǎng)絡分別對候選框進行分類和定位的回歸操作,這類方法檢測精度高但處理速度較慢,常見算法有R-CNN,SPP-Net,F(xiàn)ast R-CNN,F(xiàn)aster R-CNN[3-6]等;另一類是單階段(one-stage)檢測算法,這類算法不再使用區(qū)域生成,而是直接在網(wǎng)絡中同時實現(xiàn)對目標的分類和定位任務,達到端對端的檢測,因此檢測速度快,但檢測精度較低,常見算法有OverFeat,YOLO_v1,YOLO_v2,YOLO_v3,SSD[7-9]等。無人機實施空中偵察時,需快速檢測在視場中是否存在軍事目標,要求檢測算法必須具備實時性,因此后者更適用于實時性較高的無人機圖像目標檢測問題[10-12]。
黃梓桐等[13]提出了改進SDD的無人機圖像行人與車輛目標檢測方法,通過減小網(wǎng)絡通道與卷積量、提出感受野和上下文模塊以提高目標檢測的實時性和準確性。郭智超等[14]改進了SDD網(wǎng)絡,增加了特征層數(shù)量并增強了各層間的關聯(lián),從而提高了目標檢測精度。于博文等[15]提出了改進YOLO_v3的算法,引入可形變ResNet50-D網(wǎng)絡、雙注意力機制和特征重構模塊以提升目標表征能力,同時改進了損失函數(shù),以提高檢測精度和速度,并在自建軍事目標數(shù)據(jù)集上進行了驗證。黃文斌等[16]提出類別均衡化和隨機場景組合的數(shù)據(jù)增強訓練方法,提升了訓練效率和模型精度,并提出了模型壓縮方案,在通道剪枝基礎上對殘差層修剪,提升了目標檢測速度。但是,以上方法存在一定的誤檢率,這對軍事目標檢測而言影響較大,同時缺乏在嵌入式計算平臺上的探索研究。
文中提出了一種基于改進的YOLO_v3-SPP目標檢測算法,并在此基礎上引入異常檢測的思想,剔除誤檢目標,提高目標檢測精度,并將算法移植到嵌入式計算平臺。
YOLO_v3-SPP網(wǎng)絡的具體結構如圖1所示。網(wǎng)絡使用DarkNet-53對輸入圖像的特征進行提取,整個結構里沒有全連接層。圖像在前向傳播時,輸出特征的尺寸壓縮是通過改變卷積操作的步長(stride)來實現(xiàn)的。另外在DarkNet-53中由于引入了residual結構,訓練深層網(wǎng)絡難度大大減小,同時檢測精度也有了明顯的提升。DBL模塊為檢測模型的基本組件,其組成結構為Conv2d+BN+Leaky relu。
圖1 YOLO_v3-SPP網(wǎng)絡
圖2 SPP模塊
特征圖經(jīng)過局部特征與全局特征相融合后,豐富了特征圖的表達能力,有利于待檢測圖像中目標大小差異較大的情況,尤其是對于復雜的多目標檢測,對檢測精度有很大的提升。
該網(wǎng)絡結構中,損失函數(shù)定義為:
(1)
由于無人機圖像的特點和戰(zhàn)場環(huán)境的特殊性,運用該網(wǎng)絡進行目標檢測時,會存在一定的漏檢和誤判概率,對作戰(zhàn)指揮、偵察等產(chǎn)生不良影響。
為解決漏檢及誤判問題,在原網(wǎng)絡結構上針對偵察無人機圖像的特點進行了相應的改進。
為提高目標多尺度檢測的準確度,在網(wǎng)絡結構上選擇了更多特征尺度上的信息融合,使得網(wǎng)絡在檢測時可以提取到更多尺度信息。將DarkNet-53中的第3、第4卷積層的信息經(jīng)下采樣后,送入網(wǎng)絡中進行融合,可更多提取到局部和全局特征,有利于對目標差異較大時的檢測,如圖3所示。
大數(shù)據(jù)最典型的特征是多源異構。原始數(shù)據(jù)中會包含一些“臟數(shù)據(jù)”,比如離群點,值缺失等狀況。因此首先需要進行數(shù)據(jù)的預處理和集成,為將來的數(shù)據(jù)分析和挖掘提供方便處理的數(shù)據(jù)集。目前市面上常見的方法大體可分為4類:基于物化或ETL引擎方法、基于聯(lián)邦數(shù)據(jù)庫或中間件方法、基于數(shù)據(jù)流引擎方法以及基于搜索引擎方法。
圖3 基于YOLO_v3-SPP改進的網(wǎng)絡結構
另外,在損失函數(shù)部分修改了YOLO_v3-SPP中采用IoU計算邊界框損失的方法,將其替換為CIoU的損失計算方法。CIoU的表達式為:
(2)
式中:b,bgt分別代表預測邊界框和目標框的中心點;ρ代表計算預測框與真實框的中心點間的歐式距離;c代表能夠同時覆蓋兩個框的最小矩形的對角線距離;參數(shù)α和v的表達式為:
(3)
(4)
式中:α用于平衡比例的參數(shù);v用來衡量anchor框和目標框之間的比例一致性。
為解決檢測過程中的誤判問題,在檢測網(wǎng)絡輸出前增加了異常檢測網(wǎng)絡模塊,通過預先訓練網(wǎng)絡的模型,對檢測網(wǎng)絡輸出的結果進行二次判定,判斷其是否屬于檢測目標或背景,經(jīng)過閾值篩選,降低網(wǎng)絡的誤判率。
深度單類分類通過學習神經(jīng)網(wǎng)絡映射輸出空間中心c附近的標稱樣本來進行異常檢測,從而導致異常被映射出去。這里使用超球面分類器(HSC)為損失函數(shù)[17]:
(5)
式中:yi為對應的標簽,yi=0表示正常樣本,yi=1為異常樣本;Xi為第i個樣本;c∈Rd為預先設定的中心,這里簡單地置0;φ(·):Rc×h×w→Rd為單類分類網(wǎng)絡,權值為ω;c,h,w分別為輸入圖像的通道數(shù)、高、寬;d為輸出特征向量的維度。
(6)
當輸入正常樣本時,損失函數(shù)第二項為0,φ(·)傾向于將其映射到c附近,從而使第一項趨于0;當輸入異常樣本時,損失函數(shù)第一項為0,φ(·)傾向于將其映射到遠離c,h(a)→∞,從而使第二項趨于0。
設計的異常檢測網(wǎng)絡φ(·)結構如圖4(a)所示,輸入圖像經(jīng)過一層7×7的卷積層,進入以ResNet-50為主干網(wǎng)的卷積層,得到特征。其中,ResBlock模塊結構如圖4(b)所示,C表示通道數(shù)。訓練時,通過標簽計算損失,并以梯度下降更新網(wǎng)絡參數(shù)。
圖4 異常檢測網(wǎng)絡結構
訓練的正樣本為數(shù)據(jù)集標注的軍事目標子圖,負樣本包含兩部分:數(shù)據(jù)集中人工選取的背景子圖,以及在外部航拍數(shù)據(jù)集中隨機采樣的子圖,保證正負樣本數(shù)量均衡。使用SGD作為優(yōu)化算法,批量為512,進行40輪訓練。結束后,由于h(·)預測越大,表示負例的可能性越大,但判斷的閾值并未確定,因此需對預測的正負樣本閾值進行遍歷,選取使判斷正確率最大的閾值thresh。測試時,當對樣本的預測大于thresh時則認為是誤檢,并在最終結果中去除。
圖5即為改進后的目標檢測網(wǎng)絡結構。輸入圖像經(jīng)過改進的YOLO_v3-SPP網(wǎng)絡后,輸出檢測到的輸入圖片的目標信息及邊界框信息,即中間結果,該信息送入異常檢測網(wǎng)絡后,網(wǎng)絡根據(jù)標注的邊界框信息,提取出目標區(qū)域,對該區(qū)域進行特征提取,并計算出異常得分,算出得分后與選定的閾值進行對比,如果得分大于閾值,就證明該邊界框中包圍的是背景而非目標,如果得分小于閾值,就證明該邊界框內確為檢測目標,經(jīng)過全部判定以后,最終輸出檢測結果。
圖5 文中方法框圖
由于軍事偵察圖像樣本的特殊性,基本沒有公開的含有大量軍事目標的偵察圖像數(shù)據(jù)集。因此,首先在公開的航拍圖像數(shù)據(jù)集DOTA[18]上對網(wǎng)絡進行預訓練。在訓練前首先對圖像進行裁剪,從而提升讀取和寫入速度,便于模型快速迭代。為提升算法的魯棒性和推廣泛化能力,采用了鏡像、縮放、旋轉等數(shù)據(jù)增廣策略。模型收斂后,在自建的小樣本軍事目標數(shù)據(jù)集上進行遷移學習,共搜集了約2 000張含裝甲目標的航拍圖像,主要取自偵察無人機、民用無人機及軍事仿真軟件平臺上所獲取的圖像,并將標注好的圖像按8∶2的比例劃分為訓練集和驗證集。
對于異常檢測網(wǎng)絡訓練集,應區(qū)分正負樣本,正樣本根據(jù)DOTA數(shù)據(jù)集中的標注信息,截取了約2萬張目標實例樣本做正樣本,同時截取2萬張背景做負樣本。
實驗用設備為超微工作站,GeForce RTX 2080Ti GPU,20核intel Xeon E5-2630v4 CPU。
訓練改進的YOLO_v3-SPP網(wǎng)絡時,在預訓練后,利用自建小樣本數(shù)據(jù)集進行微調,設置學習率為0.000 1,最大迭代輪次(epoch)為100,學習率分別在25個epoch、50個epoch、75個epoch時衰減10倍。
訓練異常檢測網(wǎng)絡時,經(jīng)過40輪訓練,獲得了收斂網(wǎng)絡模型。在驗證集上對閾值thresh進行遍歷,發(fā)現(xiàn)當thresh取0.81時,異常檢測網(wǎng)絡的判定準確度最高(90.833%),故選擇該值為最終測試的閾值。當應用于其他場合時,需根據(jù)訓練數(shù)據(jù)調整。
由于文獻[13-16]沒有公開源碼,這里僅與YOLO_v3-SPP網(wǎng)絡進行對比實驗。
在DOTA數(shù)據(jù)集上的檢測結果對比如表1所示??梢钥闯?,改進后的網(wǎng)絡的平均精度(mean average precision, mAP)相對于原網(wǎng)絡有了一定的提升。
表1 DOTA數(shù)據(jù)集上的檢測結果對比 單位:%
在真實數(shù)據(jù)上的檢測效果如圖6所示。測試發(fā)現(xiàn),當無人機上成像設備的焦距發(fā)生較大變化時,原網(wǎng)絡存在漏檢和誤判行為,而文中方法改進了YOLO_v3-SPP網(wǎng)絡,增加了更多尺度特征融合,降低了目標漏檢率,同時增加了異常檢測網(wǎng)絡,一定程度剔除了誤檢樣本,從而有效提高了目標檢測率。
圖6 真實數(shù)據(jù)實驗結果
選用華為Hi3559AV100作為硬件計算平臺,該平臺集成了兩個神經(jīng)網(wǎng)絡推理機(neural network inference engine,NNIE),可實現(xiàn)并行計算。系統(tǒng)外形尺寸為185 mm×150 mm×30 mm,平均功耗6 W。將文中算法以caffe工具為模型框架,轉為wk模型并運行在該平臺上,實現(xiàn)目標檢測功能。
為提高平臺計算速度,當輸入圖像大小為1 920像素×1 080像素時,首先在Image Subsystem中被壓縮為740像素×416像素,隨后被分切為兩幅416像素×416像素尺寸圖像并交給兩個NNIE開始并行計算,由此將每一幀數(shù)據(jù)處理耗時降低到40 ms以下,滿足視頻檢測需求。
為檢驗系統(tǒng)效果,自建了目標檢測測試集。測試集由1 000幅圖像組成,圖像成像高度2 500~4 500 m,距離目標3~6 km,包含民用車輛、裝甲車、人員3類目標,標注約4 500個目標樣本,如圖7所示。
圖7 測試集示例
利用自建測試集對系統(tǒng)進行測試,對民用車輛、人和裝甲車的檢測準確率分別為92.7%、83.2%和96.3%,平均交并比為84.4%。對3類目標的平均漏檢率和誤檢率分別為0.2%和1.3%,與YOLO_v3-SPP網(wǎng)絡(硬件條件相同)相比,分別降低了1.1%和4.5%。
同時,系統(tǒng)對視頻中的目標檢測效果良好,移動目標檢測框與實際位置像素偏移平均值為9.6行(列)。系統(tǒng)測試效果如圖8所示。
圖8 系統(tǒng)測試效果
針對無人機圖像的特點,在YOLO_v3-SPP網(wǎng)絡的基礎上進行了改進,主要包括多級特征融合、損失函數(shù),在檢測網(wǎng)絡后增加異常檢測網(wǎng)絡進行二次篩查等。經(jīng)過改進后,在公開DOTA數(shù)據(jù)集上進行驗證,對比結果發(fā)現(xiàn),檢測算法的mAP較原有算法有了一定提高。最后,對所設計的算法進行了移植,取得了較好的效果。
大量的圖像數(shù)據(jù)是基于深度學習的目標檢測的基礎,目前的數(shù)據(jù)樣本較少,同時還應該考慮背景、光線、氣候、遮擋、偽裝、目標大小、姿態(tài)等因素。因此,需要有針對性的實驗測試數(shù)據(jù)集,進行模型的訓練和完善,以進一步提高檢測效果。