◆張奔 賈婧 王偉
基于YOLOv3的軍事目標(biāo)檢測算法改進(jìn)
◆張奔 賈婧 王偉
(北方自動控制技術(shù)研究所 山西 030006)
YOLOv3目標(biāo)檢測模型預(yù)設(shè)的anchor boxes是在VOC數(shù)據(jù)集上采用K-means聚類算法得到,并不適用于本文研究的巡飛彈對地目標(biāo)偵察的使用場景。同時(shí),K-means聚類算法在訓(xùn)練數(shù)據(jù)集上無法得到穩(wěn)定的最優(yōu)解。本文通過改進(jìn)聚類算法,并對軍事目標(biāo)數(shù)據(jù)集重聚類后,更新anchor boxes數(shù)據(jù)。訓(xùn)練模型后的avg-IOU和loss曲線表明,改進(jìn)算法使模型更快速地收斂,同時(shí)能夠獲得更高質(zhì)量的目標(biāo)檢測結(jié)果。
YOLOv3;k-means;軍事目標(biāo);重聚類
巡飛彈在執(zhí)行作戰(zhàn)任務(wù)的過程中,對地目標(biāo)偵察是非常重要的一個(gè)環(huán)節(jié)[1],而YOLO系列目標(biāo)檢測模型在實(shí)時(shí)目標(biāo)檢測領(lǐng)域具有優(yōu)秀的性能[2]?;谔卣髅枋鲎拥姆椒ㄔO(shè)計(jì)局部紋理特征,然后進(jìn)行全局特征目標(biāo)檢測[3]。后續(xù)基于深度神經(jīng)網(wǎng)絡(luò)的方法有R- CNN,在此基礎(chǔ)上又發(fā)展出了Fast R-CNN、Faster R-CNN等[4]。本文通過對均值聚類算法的研究,改進(jìn)K-means算法,從而提高聚類結(jié)果穩(wěn)定性,改善模型訓(xùn)練過程和目標(biāo)檢測效果。
YOLOv3算法首先通過特征提取網(wǎng)絡(luò)Darknet53對輸入圖像提取特征[5],得到圖像對應(yīng)的特征圖,大小比如13×13,然后輸入圖像可以被認(rèn)為分成了13×13個(gè)grid cells,接著如果真實(shí)圖像中某個(gè)目標(biāo)的中心坐標(biāo)落在哪個(gè)grid cell中,那么就由該grid cell來預(yù)測該目標(biāo)。每個(gè)grid cell都會預(yù)測3個(gè)邊界框,并給出相應(yīng)的objectness score。最后通過非極大值抑制算法排除冗余的預(yù)測候選框,完成對圖像中目標(biāo)的檢測。如圖1所示,網(wǎng)絡(luò)在每個(gè)Cell上會預(yù)測3個(gè)邊界框,其中每個(gè)邊界框會用5個(gè)預(yù)測值表示,分別是:,tx,ty,th,tw,to,其中前四個(gè)是邊界框坐標(biāo)的offset值,最后一個(gè)是置信度。如果預(yù)測邊框的中心點(diǎn)距離對應(yīng)Cell左上角的邊距為(cx,cy),而采用k均值算法得到的邊界框先驗(yàn)維度(Bounding Box Prior)的高與寬分別為(ph,pw),則預(yù)測邊框的實(shí)際值見下圖1:
圖1 YOLOv3預(yù)測框計(jì)算
YOLOv3的損失函數(shù)為:
損失函數(shù)分別表示定位損失、置信度損失和分類損失,從函數(shù)的定位損失部分可以看出:在訓(xùn)練的過程中,實(shí)際求得的是網(wǎng)絡(luò)預(yù)測值與聚類得到的anchor boxes值之間的偏移值。因此,改善聚類算法,使之得到穩(wěn)定的最優(yōu)解并且針對特定訓(xùn)練數(shù)據(jù)集做重聚類,能夠改善模型的收斂狀況,獲得更佳的識別效果。
YOLOv3目標(biāo)檢測模型使用K均值聚類算法對voc數(shù)據(jù)集進(jìn)行維度聚類,得到9個(gè)不同長寬比的anchor boxes ,以此代替配置文件中采用的原Faster R CNN中人為設(shè)定的anchor值[6]。
K-means聚類分析是利用數(shù)據(jù)的相似性,對聚類數(shù)據(jù)集進(jìn)行劃分[7]。其數(shù)據(jù)類別相似性指標(biāo)一般采用歐式距離。對數(shù)據(jù)集劃分成k個(gè)預(yù)先設(shè)定的類別,使每個(gè)類別所包含的數(shù)據(jù)點(diǎn)最為相似且不同類別之間的數(shù)據(jù)差異盡可能最大化。假設(shè)數(shù)據(jù)集X包含n個(gè)m維的數(shù)據(jù)點(diǎn),相似性指標(biāo)采用歐式距離分成K個(gè)類別,則各類包含數(shù)據(jù)點(diǎn)的聚類平方和最小時(shí),達(dá)到聚類目標(biāo):
K-means通過多次迭代得到最終的k個(gè)聚類中心,算法流程如下:
(1)隨機(jī)產(chǎn)生k個(gè)分別代表一個(gè)聚類中心的初始質(zhì)心;
(2)對每個(gè)數(shù)據(jù)點(diǎn)對象都計(jì)算與各個(gè)初始質(zhì)心的歐式距離,以最小距離為標(biāo)準(zhǔn)進(jìn)行歸類;
(3)對每個(gè)類別中所有屬于該類的數(shù)據(jù)點(diǎn)位置統(tǒng)計(jì)計(jì)算,得到新的質(zhì)心;
(4)重復(fù)2、3步驟,直到各個(gè)類別的質(zhì)心不再改變,從而得到最終的聚類結(jié)果。
K-means這種采用貪心算法的聚類思路,前提是需要人為指定k值。從相關(guān)的仿真實(shí)驗(yàn)中可以看出,采用K-means算法對數(shù)據(jù)集多次聚類,聚類結(jié)果有較大差異性,很難得到穩(wěn)定的最優(yōu)解。
針對上述問題,對K-means聚類算法的改進(jìn)集中在選擇相互衡量指標(biāo)盡可能大的點(diǎn)作為初始質(zhì)心,改進(jìn)算法的流程如下:
(1)隨機(jī)選擇數(shù)據(jù)集中的一個(gè)數(shù)據(jù)點(diǎn)作為第一個(gè)聚類中心;
(2)計(jì)算每個(gè)數(shù)據(jù)點(diǎn)與其最近的聚類中心之間的距離d(x),統(tǒng)計(jì)得到距離累加結(jié)果sum(d(x));
(3)隨機(jī)采用一個(gè)閾值,若累加后的種子點(diǎn)距離高于閾值,則設(shè)為下一個(gè)種子點(diǎn),然后嘗試更新選擇作為聚類中心的數(shù)據(jù)點(diǎn),選擇包含數(shù)據(jù)較多的點(diǎn),被選中作為新的聚類中心的概率應(yīng)較大;
(4)重復(fù)2、3步驟,直至選出k個(gè)初始質(zhì)心;
(5)執(zhí)行K-means算法,得到最終聚類結(jié)果。
目標(biāo)檢測的圖像數(shù)據(jù)集,采用矩形框來人工標(biāo)注圖像中的目標(biāo)。大小不同的矩形框做聚類時(shí),若采用歐式距離,會產(chǎn)生較多的損失誤差。聚類的目的是要獲得相對于所有矩形框而言更高的交并比得分,而這個(gè)分?jǐn)?shù)實(shí)際上是與矩形框的大小沒有關(guān)系,所以改進(jìn)算法所采用的聚類標(biāo)準(zhǔn)為IoU距離公式:
實(shí)驗(yàn)圖像數(shù)據(jù)采用模擬器生成,以巡飛彈對地偵察目標(biāo)為應(yīng)用背景,采集空中俯視角度下的自行火炮、軍用卡車、軍用吉普車3種軍事目標(biāo)圖像資料。模擬圖像的尺寸為1920×1080,其中目標(biāo)所占像素點(diǎn)分布在50×50到300×300之間。整個(gè)軍事目標(biāo)數(shù)據(jù)集包含2191張圖片,其中包含目標(biāo):自行火炮6436輛,軍用卡車1998輛,軍用吉普車3009輛。數(shù)據(jù)集按照4:1的比例分為訓(xùn)練集和驗(yàn)證集。使用標(biāo)圖軟件對上述3種類別的目標(biāo)全部進(jìn)行標(biāo)記,生成2191個(gè)xml文件。
實(shí)驗(yàn)環(huán)境:操作系統(tǒng)為ubuntu16.04;中央處理器為;GPU為GTX2080TI;GPU加速庫:CUDA10.1、CUDNNv7.5.6、OPENCV-3.4.4;編程語言為Python2.7、C++語言。深度神經(jīng)網(wǎng)絡(luò)的配置參數(shù)如表1所示。
表1 訓(xùn)練配置文件主要參數(shù)設(shè)置
按照K-means算法和改進(jìn)聚類算法的流程,分別編寫兩個(gè)python腳本文件,將聚類K值設(shè)定為9,在ubuntu系統(tǒng)的終端下分別運(yùn)行,得到聚類結(jié)果。由于YOLOv3的特征提取網(wǎng)絡(luò)對輸入圖像進(jìn)行32倍下采樣,故聚類得到的9對高寬比需要乘32后寫入到訓(xùn)練配置文件中才能正確應(yīng)用。
K-means算法和改進(jìn)聚類算法分別對軍事目標(biāo)數(shù)據(jù)集聚類得到anchor boxes,保持模型的其他參數(shù)一致的情況下,分別采用兩種聚類方法得到的anchor boxes對模型進(jìn)行訓(xùn)練,對比實(shí)驗(yàn)結(jié)果。
如圖2所示,黑色矩形圖標(biāo)表示VOC數(shù)據(jù)集下聚類得到的anchor boxes,紅色圖標(biāo)表示采用K-means算法對軍事目標(biāo)數(shù)據(jù)集進(jìn)行10次聚類后的結(jié)果,可以看到,聚類的結(jié)果并不穩(wěn)定。
采用改進(jìn)聚類算法對軍事目標(biāo)數(shù)據(jù)集進(jìn)行10次聚類,結(jié)果穩(wěn)定,最后的聚類結(jié)果為:0.43、1.11、0.71、0.79、2.07、1.10、1.18、1.33、3.23、1.75、1.78、1.94、5.24、2.75、2.76、3.79、4.57;平均IoU為0.733485。隨機(jī)選取K-means算法的一組聚類結(jié)果:0.49、0.87、0.67、1.75、0.94、0.92、1.11、2.59、1.57、4.15、1.61、1.63、2.35、5.63、2.62、2.59、3.83、4.18;平均IoU為0.729859,分別乘32后寫入配置文件進(jìn)行訓(xùn)練,實(shí)驗(yàn)結(jié)果如圖3、4、5所示。
圖2 聚類結(jié)果對比
圖3 K-means算法訓(xùn)練loss和Avg IOU曲線
圖4 改進(jìn)算法訓(xùn)練loss和Avg IOU曲線
圖5 采用改進(jìn)算法(右)聚類結(jié)果的識別效果對比
采用改進(jìn)聚類算法結(jié)果的模型相比K-means算法,在反映模型訓(xùn)練過程的loss和Avg IOU曲線圖中都有更好的表現(xiàn),識別效果圖中也可以看出對目標(biāo)的標(biāo)記更加精準(zhǔn)。
本文研究了YOLOv3算法中對訓(xùn)練數(shù)據(jù)集進(jìn)行聚類分析的算法,針對聚類得到的anchor boxes對模型神經(jīng)網(wǎng)絡(luò)訓(xùn)練的影響作用,做了針對性的改進(jìn)。對比實(shí)驗(yàn)結(jié)果表明改進(jìn)算法能夠得到穩(wěn)定的聚類結(jié)果,并且對網(wǎng)絡(luò)訓(xùn)練的收斂情況有明顯的提升,同時(shí)最后模型的目標(biāo)檢測效果也有所改善。
[1]郭美芳,范寧軍,袁志華.巡飛彈戰(zhàn)場應(yīng)用策略[J].兵工學(xué)報(bào),2006,27(5):944-947.
[2]Redmon J,Divvala S, Girshick R, et al.You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition.2016:779-788.
[3]Dalal N,Triggs B. Histograms of oriented gradients for human detection[C]. Computer Vision and Pattern Recognition.2005:886-893.
[4]邢志祥,顧凰琳,錢輝,等.基于卷積神經(jīng)網(wǎng)絡(luò)的行人檢測方法研究新進(jìn)展[J].安全與環(huán)境工程,2018,25(6): 100-105.
[5]Redmon J,F(xiàn)arhadi A. Yolov3:An incremental improvement[J]. arXiv preprint arXiv:1804.02767,2018.
[6]蘇飛.高維數(shù)據(jù)的聚類分析研究與應(yīng)用[D].華北水利水電大學(xué),2017.
[7]田瀟瀟.基于多分類的主動學(xué)習(xí)改進(jìn)算法[D].河北大學(xué),2017.