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