楊傳棟,劉 楨,馬翰宇,謝瑞超
(1 陸軍炮兵防空兵學院, 合肥 230031;2 陸軍炮兵防空兵學院高過載彈藥制導控制與信息感知實驗室, 合肥 230031)
圖像末制導彈藥是信息化彈藥重要組成,其中彈載圖像目標檢測算法作為圖像制導中的關(guān)鍵環(huán)節(jié),提供打擊點的準確性和實時性對于調(diào)整彈藥命中目標至關(guān)重要,受到高度重視。
圖像末制導技術(shù)通常有基于圖像分割的方法[1]、基于匹配的方法[2]和基于統(tǒng)計的機器學習方法[3]。傳統(tǒng)分割方法僅適用于簡單背景且目標與背景對比度差異明顯情況,基于匹配的方法和傳統(tǒng)的基于統(tǒng)計的機器學習方法利用模板或者手動設(shè)計特征結(jié)合分類器實現(xiàn)檢測,對彈載環(huán)境下目標旋轉(zhuǎn)、尺度、光照和背景變化等因素應(yīng)對不足,并且基于滑動窗口的區(qū)域選擇策略時間復雜度高,實時性受到影響。近年來基于CNN的方法依靠大數(shù)據(jù)優(yōu)勢,省去了人工設(shè)計特征的環(huán)節(jié),通過監(jiān)督學習具有更有效的特征表達能力,成為當前圖像目標檢測領(lǐng)域最熱門的深度學習模型。目前該方法可分為基于候選框的兩階段檢測算法[4]、基于回歸的單階段檢測算法[5]及無候選框的單階段檢測算法[6]。其中以YOLO[7]為代表的基于回歸的單階段檢測算法在檢測速度上達到了實時的要求。通過網(wǎng)絡(luò)壓縮和加速等技術(shù),該類算法部署在FPGA等常用的彈載硬件平臺上能夠達到上百幀每秒的速度。
YOLO算法在精度上有一定的不足,具有提升空間。對于軍事偵察打擊任務(wù),除了要求算法快速之外,仍需達到較高的精度,保證任務(wù)順利完成。文獻[8]指出基于L1或L2的傳統(tǒng)回歸損失對尺度不具備不變性,會對訓練結(jié)果的精度造成影響,文中使用改進的IoU(GIoU)對訓練階段中的邊界框位置損失進行優(yōu)化,針對特定數(shù)據(jù)集設(shè)置先驗框在不同尺度特征圖上進行檢測,并通過快速非極大值抑制(NMS)綜合提高檢測速度和精度。
基于YOLOv3的目標檢測框架首先利用采集設(shè)備對多類軍事目標進行采集構(gòu)建數(shù)據(jù)集,在訓練集上進行模型訓練,得到網(wǎng)絡(luò)權(quán)重文件。利用訓練好的模型通過一次前向傳播并經(jīng)過非極大值抑制即可輸出最終預測的類別和位置,完成檢測任務(wù)。框架核心為YOLOv3檢測網(wǎng)絡(luò)模型,包括了特征提取網(wǎng)絡(luò)、多尺度預測分支網(wǎng)絡(luò)及訓練損失函數(shù)等。
文中使用的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 目標檢測網(wǎng)絡(luò)結(jié)構(gòu)
特征提取網(wǎng)絡(luò)選擇Darknet53結(jié)構(gòu),以416×416×3尺寸的圖像輸入為例,整個網(wǎng)絡(luò)包含了5次卷積下采樣模塊(圖中“”),特征圖每次經(jīng)過卷積下采樣模塊后,特征圖尺寸減半,使得通道數(shù)增加一倍。各個下采樣層之間設(shè)計了殘差模塊(ResBlock),用以充分融合特征,如圖2所示。
圖2 ResBlock模塊
為了應(yīng)對目標尺度變化的問題,在3個不同尺度特征圖上分別進行預測,構(gòu)成多尺度預測分支結(jié)構(gòu)。選擇第11個、第19個、第23個ResBlock輸出特征圖作為基本預測層,在預測前設(shè)計了ConvBlock模塊對基本預測層的特征進一步提取和融合。ConvBlock模塊結(jié)構(gòu)如圖3所示。經(jīng)過ConvBlock后,通過Conv 3×3和1×1卷積得到在不同尺度的特征圖上的預測結(jié)果,長寬尺度仍然跟提取層保持一致。對于淺層大尺度的特征圖,經(jīng)過ConvBlock前,將高層經(jīng)過ConvBlock輸出的特征進行上采樣并疊加(Concat)構(gòu)成新的特征,能夠起到提高預測能力的效果。
圖3 ConvBlock模塊
預測向量維度可分為類別預測和位置預測。以26×26特征圖為例,得到的預測特征維度為26×26×3×(4+1+C)。每個單元格設(shè)置了3個不同比例的先驗框,每個單元格針對一個先驗框預測4個坐標信息(tx,ty,tw,th),1個置信度分數(shù),C個類別分數(shù)。
為了能夠更好地對邊界框位置進行回歸訓練,針對不同尺度特征圖分別設(shè)置了3種預設(shè)邊界框,將直接預測相對于該尺度特征圖的預測坐標(bx,by,bw,bh)編碼為相對于每個網(wǎng)格點先驗框偏移量和寬高縮放比(tx,ty,tw,th)。位置編碼方式按照式(1)計算。
(1)
式中:(cx,cy)為預設(shè)邊界框在該層特征圖上的中心坐標;(pw,ph)為預設(shè)邊界框的寬高;通過sigmoid函數(shù)將偏移量約束在[0,1]之間,使得最后的結(jié)果始終在該網(wǎng)格中。
(2)
坐標誤差通過計算預測邊界框與真實邊界框的SmoothL1[10]距離偏差實現(xiàn)。在訓練中,認為每個預測網(wǎng)格中只包含一個真值框,并只有一個最優(yōu)先驗框與其匹配,并且只有包含目標的網(wǎng)格的預測結(jié)果會被計算邊界損失和分類損失。綜上,多任務(wù)損失函數(shù)可表示為:
L=λc,objLc,obj+λc,noobjLc_noobj+λclsLcls+λboxLbox
(3)
式中,λ為各項損失對應(yīng)的平衡系數(shù)。
YOLO算法雖然在COCO等標準數(shù)據(jù)集上取得了優(yōu)越的檢測效果,考慮到彈載目標檢測具有目標尺度變化大、位置定位精度要求高、實時性要求高等特點,針對算法不足做如下改進:
1)尺度先驗框設(shè)置。通過K-means算法對不同預測分支的特征圖上的先驗框尺寸進行維度聚類,重新定義先驗框大小。
2)位置損失改進。利用GIoU損失代替?zhèn)鹘y(tǒng)的距離損失進行模型訓練,能夠得到更高的位置精度。
3)快速非極大值抑制(NMS)算法。并行地對每個邊界框進行篩選或保留, 已經(jīng)刪除的檢測框仍然能夠用來抑制其他結(jié)果,提高了預測速度,便于硬件加速。
在構(gòu)建的數(shù)據(jù)集上對3個預測分支特征圖上的先驗框的尺寸進行K-means維度聚類,具體步驟如下:
1)輸入訓練數(shù)據(jù)集中所有目標的真值框?qū)捀撸?xj,yj,wj,hj),j∈{1,2,…,N},并令k=9得到9個初始聚類中心(Wi,Hi),i∈{1,2,…,k}。
2)按照中心重合的方式,計算每個真值框和每個聚類中心(先驗框)的IoUji。
3)計算每個真值框樣本與k個中心的距離dji(dji=1-IoUji),按照距離最小原則分配到最近的聚類中心。
5)重復步驟2)~4),直到聚類中心改變量達到要求。
6)輸出k個聚類中心,即先驗框聚類結(jié)果。
得到相對于輸入原圖尺寸如表1所示。大尺度特征圖使用小先驗框,主要針對小目標;小尺度特征圖使用大先驗框,主要針對大目標。結(jié)合多尺度預測,在特定數(shù)據(jù)集上網(wǎng)絡(luò)具有更強的目標尺度適應(yīng)能力。
表1 特征圖先驗框參數(shù)
對于邊界框回歸指標,普遍做法是用MSE、SmoothL1等距離損失衡量距離,這些方式計算損失值實際上是通過間接的相對距離計算,而忽略了檢測框本身最顯著的IoU性質(zhì)。但IoU無法直接作為回歸距離,文中使用GIoU距離作為邊界框的損失評價標準,更直接的逼近真值,具備更高的位置精度。GIoU距離計算具體步驟如下:
2)計算矩形框Bg、Bp面積,交集I、并集U面積。
6)輸出GIoU距離LGIoU=1-GIoU。
傳統(tǒng)NMS算法首先按照置信度對檢測出來的邊界框進行降序排序,然后刪除大于交并比閾值的邊界框,保留小于交并比閾值的邊界框,直到遍歷所有候選框。該種方法是采用順序遍歷的方式,需要對每一個類別進行排序篩選,會造成算法速度上的損失。文中使用了并行處理的方式,并行地對每個邊界框進行篩選或保留, 具體步驟表述如下:
1)輸入未經(jīng)過篩選的網(wǎng)絡(luò)預測結(jié)果Pcn,表示c類每類n個檢測結(jié)果,對應(yīng)置信度Ccn,IoU閾值t,置信度閾值f;
2)每個類別取不超過n個檢測結(jié)果,按照置信度分數(shù)降序排列;
3)對每一類檢測框psn兩兩計算交并比,得到c×n×n維的IoU矩陣Xcnn;
4)Xcnn中的對角線元素和下三角為自交并比和重復計算,將其置為0,即Xkij=0,?k,j,i≥j;
6)大于IoU閾值t及小于閾值f全部置0進行濾除;
7)輸出經(jīng)過篩選的檢測結(jié)果。
數(shù)據(jù)采集方式通過彈載相機拍攝、網(wǎng)絡(luò)爬取和數(shù)據(jù)增強多種方式相結(jié)合。使用標注軟件按照模型要求標注數(shù)據(jù),完成數(shù)據(jù)集的構(gòu)建。數(shù)據(jù)集包含坦克、遠程火箭炮、導彈發(fā)射車、自行火炮、飛機、跑道、機庫、艦船、航母共11類目標,平均每類目標圖像數(shù)量約3 000張。
對于某類目標檢測,設(shè)置TP表示被正確識別出的目標,F(xiàn)P表示被識別成目標的錯檢目標,F(xiàn)N表示沒有被檢測出來的漏檢目標。檢測準確率(precision)和召回率(recall)計算如式(4):
(4)
AP=1/(M(∑r∈{1/M,2/M,…,M/M}P(r)))
對于多類目標,對各個AP取平均值,即為平均檢測精度均值mAP,衡量模型在所有類別上的好壞。
(5)
實驗使用配置有內(nèi)存為16 GB和英偉達1 070 GPU的PC機,操作系統(tǒng)為ubuntu16.04,基于pytorch深度學習框架對算法模型編程實現(xiàn)。訓練中部分參數(shù)設(shè)置為:學習率取0.001,動量取0.9,權(quán)重衰減為0.000 5,批處理圖像數(shù)為16,平衡系數(shù)設(shè)為λc_obj=5,λc_noobj=1,λbox=2,λcls=1,檢測非極大值抑制閾值取0.3。
訓練迭代次數(shù)為48 000次,每100次迭代進行一次驗證,并記錄訓練損失、召回率、準確率和平均檢測精度,通過可視化輸出。為了驗證文中模型優(yōu)越性,在同等環(huán)境下對YOLOv3進行訓練,并將二者數(shù)據(jù)輸出于同一個坐標系,如圖4所示。其中藍色曲線是文中模型數(shù)據(jù),橘黃色曲線為YOLOv3算法數(shù)據(jù)??梢钥吹剑谟柧氝^程中,模型的訓練損失能夠快速下降且達到較低的水平,最后的損失值低于YOLOv3算法。同時在驗證集上的驗證結(jié)果表明,召回率、準確率和平均檢測精度均在大約10 000次迭代之后超過了傳統(tǒng)的YOLO算法并能達到更高的水平,證明了訓練能夠有效進行及模型的有效性。
圖4 訓練損失曲線及驗證集驗證曲線
在11類軍事目標測試集上,文中模型達到了最高的檢測精度93.08%,相對比傳統(tǒng)的YOLOv3提高了3.49%。其中坦克類目標達到最高的96.2%,最低為跑道類檢測精度為86.5%。整體看該模型在構(gòu)建的數(shù)據(jù)集上能夠達到較高的檢測精度。
圖5 各類別檢測精度
與對比算法相比,文中模型在不同交并比下的檢測精度均高于對比算法。隨著交并比不斷增加,檢測精度下降小于其他算法,說明文中算法預測的邊界框具有更高的準確度。使用快速NMS算法使網(wǎng)絡(luò)在預測過程中加速了1.14幀/s,實時性更好。
表2 性能比較
圖6為算法在測試集上的檢測結(jié)果樣例。可以看到,算法能夠較好的應(yīng)對不同尺度大小和不同旋轉(zhuǎn)方向的目標,正確識別包含自行火炮、坦克、遠程火箭炮、導彈發(fā)射車四類裝甲目標圖像,算法能夠應(yīng)對公路、草地等不同環(huán)境和光線特性,整體上具有較強的適應(yīng)性。同時坦克炮管等細小部件包含在輸出的目標框范圍內(nèi),識別精度高。算法可以較好的應(yīng)對艦船類目標的旋轉(zhuǎn)特性,區(qū)分出航母和普通艦船之間的差別,同時,艦船指揮塔作為艦船類目標重要組成部分,具有更高的打擊價值,因此在識別艦船本身基礎(chǔ)上,同時識別出指揮塔位置,更有實際價值。模型實現(xiàn)了對機場多要素識別,對機庫、機場指揮塔、密集地停在機場的飛機及遠處跑道均能夠完整的檢測,達到較好的識別效果。
圖6 測試集測試樣例
基于改進的YOLOv3方法對多尺度預測分支的先驗框尺寸進行聚類設(shè)置,增強了對不同尺度目標的檢測能力;使用改進位置損失函數(shù)提高位置定位能力;使用快速NMS算法提高網(wǎng)絡(luò)實時性。在所構(gòu)建的軍事目標數(shù)據(jù)集上達到更高的檢測精度和速度,能更好的完成目標檢測任務(wù)。