田 港, 張 鵬, 鄒金霖, 趙曉林
(空軍工程大學(xué)裝備管理與無人機(jī)工程學(xué)院,西安, 710051)
目標(biāo)檢測(cè)已經(jīng)在車輛檢測(cè)、人臉檢測(cè)、自動(dòng)駕駛、安全系統(tǒng)等領(lǐng)域廣泛應(yīng)用并發(fā)揮著重要的作用。相比于傳統(tǒng)檢測(cè)方法,基于深度學(xué)習(xí)的檢測(cè)模型具有檢測(cè)精度高、速度快等優(yōu)點(diǎn)。基于深度學(xué)習(xí)的檢測(cè)模型有one-stage和two-stage兩種:one-stage檢測(cè)模型主要有YOLO[1]、SSD[2]、DSSD[3]等模型,其核心是基于回歸的思想,不需要使用區(qū)域候選網(wǎng)絡(luò),可以直接經(jīng)主干網(wǎng)絡(luò)預(yù)測(cè)出軍事目標(biāo)類別、位置;以two-stage檢測(cè)模型為代表的有R-CNN[4]、SPP-Net[5]、Fast R-CNN[6]、Faster R-CNN[7]、Mask R-CNN[8]等模型,其基本思想是通過卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像進(jìn)行特征提取,然后經(jīng)過區(qū)域候選網(wǎng)絡(luò)生成候選框,再經(jīng)過“摳圖”和進(jìn)一步的特征表示,最后就可以通過分類和回歸得到軍事目標(biāo)的類別和位置。two-stage系列因其繁瑣的檢測(cè)過程導(dǎo)致檢測(cè)速度遠(yuǎn)不能滿足實(shí)時(shí)性的要求。
近年來,目標(biāo)檢測(cè)在戰(zhàn)場(chǎng)感知中的地位愈加突出。基于無人機(jī)平臺(tái)的目標(biāo)檢測(cè)具有視野大、監(jiān)測(cè)范圍廣等優(yōu)點(diǎn),但由于載重、能耗等方面的限制,無人機(jī)平臺(tái)能夠搭載的存儲(chǔ)和算力是有限的。因此,一般檢測(cè)模型在無人機(jī)上直接部署時(shí)會(huì)面臨模型占用內(nèi)存大、實(shí)時(shí)性差的問題。因此,在保證檢測(cè)精度的前提下有效解決上述問題,能夠有效提升無人機(jī)偵察的檢測(cè)速度,有助于戰(zhàn)場(chǎng)指揮員或機(jī)載系統(tǒng)及時(shí)全面分析戰(zhàn)場(chǎng)形勢(shì),做出更合理的決策。
YOLO作為one-stage檢測(cè)模型中的經(jīng)典模型,較好地兼顧了檢測(cè)精度和速度,因此應(yīng)用較為廣泛。本文以YOLOv4[9]檢測(cè)模型作為主模型,在保證檢測(cè)精度的情況下,首先,將三尺度檢測(cè)模型改進(jìn)為雙尺度檢測(cè)模型。其次,對(duì)雙尺度檢測(cè)模型進(jìn)行了通道裁剪。實(shí)驗(yàn)表明,兩種改進(jìn)方法均達(dá)到了減小模型內(nèi)存占用,提升檢測(cè)速度的目的。
YOLOv4是Alexey等人提出的一種目標(biāo)檢測(cè)模型,該模型結(jié)構(gòu)如圖1所示,由CSPDarknet53、SPP、PANet、YOLO Head模塊組成。其目標(biāo)檢測(cè)過程共分為4步:①圖像輸入;②特征提取;③特征融合;④結(jié)果預(yù)測(cè)。圖像輸入模型后,主干網(wǎng)絡(luò)CSPDarknet53對(duì)輸入圖像進(jìn)行特征提取,由圖1可知CSPDarknet53一共有5個(gè)大殘差塊,最后一個(gè)大殘差塊的輸出經(jīng)3次卷積后輸入SPP模塊,SPP模塊對(duì)輸入進(jìn)行最大池化操作。池化的結(jié)果經(jīng)過拼接和卷積處理后送入PANet模塊,第3和第4個(gè)大殘差塊的輸出也分別經(jīng)過一次卷積送入PANet。PANet是一個(gè)特征融合模塊,它可以將輸入的3個(gè)不同尺寸特征圖進(jìn)行卷積及上采樣或下采樣操作后進(jìn)行特征融合,使得不同層的特征通過采樣后融合成高層特征,增強(qiáng)特征的表達(dá)能力。PANet將融合后的結(jié)果輸入給YOLO Head,進(jìn)行預(yù)測(cè)輸出。YOLOv4采用了多尺度輸出,分別輸出52×52,26×26,13×13這3種尺度的特征圖到檢測(cè)層中。每個(gè)cell會(huì)預(yù)測(cè)出3個(gè)bounding box,每個(gè)bounding box都有自己的位置信息以及置信度,最終通過閾值來保留較為準(zhǔn)確的預(yù)測(cè)框。

圖1 YOLOv4檢測(cè)模型
YOLOv4的損失函數(shù)是基于YOLOv3的損失函數(shù)得到的,不同的是YOLOv4使用了CIOU(complete intersection over union)誤差,這使得模型預(yù)測(cè)框的回歸速度更快、檢測(cè)精度更高。YOLOv4損失函數(shù)見式(1):
Loss=Lloc+Lcls+Lconf
(1)
式中:Lloc表示預(yù)測(cè)框的回歸誤差;Lcls表示分類誤差;Lconf表示置信度誤差。
在YOLOv4檢測(cè)模型中,原圖經(jīng)過下采樣,其像素一直在減小,最終生成3個(gè)不同大小的特征圖,分別為52×52,26×26,13×13。特征圖中像素點(diǎn)和輸入圖像中像素點(diǎn)對(duì)應(yīng)關(guān)系為:
(2)
式中:X表示輸入圖像邊長(zhǎng)的像素個(gè)數(shù);Y表示特征圖邊長(zhǎng)的像素個(gè)數(shù);n表示特征圖中一個(gè)像素點(diǎn)對(duì)應(yīng)原圖中像素點(diǎn)的個(gè)數(shù)。
YOLOv4模型輸入圖像大小為416×416,52×52、26×26以及13×13特征圖中一個(gè)像素點(diǎn)分別對(duì)應(yīng)輸入圖像8個(gè)、16個(gè)以及32個(gè)像素點(diǎn),當(dāng)輸入圖像被下采樣至13×13時(shí),圖像中小于32×32像素的目標(biāo)均會(huì)被壓縮至不到一個(gè)像素點(diǎn),這樣目標(biāo)特征信息丟失較為嚴(yán)重,因此在13×13特征圖上檢測(cè)32×32像素以下的目標(biāo)意義不大。
本文使用的數(shù)據(jù)集,目標(biāo)長(zhǎng)寬都分布在0~38像素,屬于中小目標(biāo)[10],因此負(fù)責(zé)從13×13特征圖中檢測(cè)的YOLO Head3模塊對(duì)于中小目標(biāo)的檢測(cè)意義不大,反而會(huì)使得模型參數(shù)冗余,導(dǎo)致模型內(nèi)存占用過大,消耗計(jì)算資源,影響檢測(cè)速度。
針對(duì)目標(biāo)尺寸特點(diǎn),對(duì)原模型的檢測(cè)層進(jìn)行了改進(jìn),改進(jìn)后的模型結(jié)構(gòu)如圖2所示,保留了負(fù)責(zé)從52×52和26×26特征圖中檢測(cè)中小目標(biāo)的YOLO Head1和YOLO Head2模塊。移除了負(fù)責(zé)檢測(cè)大目標(biāo)的YOLO Head3模塊和其相關(guān)的采樣卷積過程,但保留了與之對(duì)應(yīng)的13×13特征圖,該特征圖屬于深層特征圖,里面包含較強(qiáng)的定位特征,52×52、26×26的淺層特征圖里面包含較強(qiáng)的語義信息,通過上采樣,將13×13特征圖中的強(qiáng)定位信息傳遞到淺中層特征層中進(jìn)行特征融合,以加強(qiáng)對(duì)中小目標(biāo)的定位精度。模型中小尺度YOLO Head1對(duì)應(yīng)的初始候選框大小為[12,16,19,36,40,28],中尺度YOLO Head2對(duì)應(yīng)的初始候選框大小為[36,75,76,55,72,146]。

圖2 YOLOv4改進(jìn)模型
相比在3個(gè)尺度上預(yù)測(cè)輸出的原模型,本文改進(jìn)后的模型僅需要在2個(gè)尺度上進(jìn)行檢測(cè),減少了模型參數(shù),節(jié)省了計(jì)算資源,模型檢測(cè)速度更快。
目前模型裁剪方法主要有權(quán)重裁剪[11]、神經(jīng)元裁剪[12]、卷積核裁剪[13]以及通道裁剪[14]。
權(quán)重裁剪的核心思想是使權(quán)重稀疏化,該方法需要多次迭代,并且裁剪一次就需要對(duì)模型修復(fù)一次,耗時(shí)耗力。神經(jīng)元裁剪是將模型中輸出為零的神經(jīng)元進(jìn)行刪除,該方法雖然操作比較簡(jiǎn)單,但是裁剪出來的模型性能較差。卷積核裁剪是對(duì)卷積核中的參數(shù)進(jìn)行處理,從而降低運(yùn)算消耗,但目前該方法的相關(guān)技術(shù)還不夠成熟,對(duì)于模型速度提升很有限。
通道裁剪流程如圖3所示,是將卷積層中不重要的通道全部刪除。該方法裁剪力度大,效果明顯,同時(shí)帶來的精度損失也大,但是通過微調(diào)可以將裁剪后的模型恢復(fù)到很好的精度,并且該方法不需要專門的軟硬件支持。通道裁剪方法適用于含有批歸一化層即BN(batch normalization)層的模型,如YOLO模型。對(duì)于沒有批歸一化層的模型該方法并不適用,如R-CNN模型。

圖3 通道裁剪流程
2.2.1 BN層稀疏化訓(xùn)練
在YOLOv4模型中,通過卷積層和激活函數(shù)中間的BN層對(duì)每一個(gè)輸入的mini-batch進(jìn)行歸一化,使網(wǎng)絡(luò)收斂更快,獲得更好的訓(xùn)練效果。YOLOv4模型中BN層的輸入和輸出之間關(guān)系為:
(3)
式中:m為每次輸入的mini-batch;γ為BN層的縮放因子;β為BN層的偏置項(xiàng);μ為BN層的均值參數(shù);σ為BN層的方差參數(shù);ε項(xiàng)可避免分母為0。
進(jìn)行模型通道裁剪首先需要對(duì)BN層進(jìn)行稀疏化訓(xùn)練,本文通過在初始損失函數(shù)中引入L1正則化來對(duì)BN層的縮放因子γ進(jìn)行稀疏化訓(xùn)練,每個(gè)特征通道對(duì)應(yīng)一個(gè)縮放因子γ,引入L1正則化的損失函數(shù)為:

(4)
式中:x,y分別為模型的輸入和輸出;W為模型的參數(shù),第1項(xiàng)為初始損失函數(shù),第2項(xiàng)為L(zhǎng)1正則損失項(xiàng),λ為兩項(xiàng)的平衡因子。本文用稀疏后的縮放因子γ來判斷特征通道對(duì)輸出重要性。γ值越大說明對(duì)應(yīng)的通道對(duì)輸出越重要,反之,說明該通道對(duì)輸出影響較小。因?yàn)橐隠1正則化后,稀疏化之后的模型中許多縮放因子γ都會(huì)趨近于零,這說明卷積層輸出值無論多大,在輸入到BN層之后,經(jīng)過BN層的變換輸出bout都會(huì)變?yōu)椋?/p>
(5)
所以,縮放因子γ趨于零對(duì)應(yīng)的特征通道對(duì)模型輸出貢獻(xiàn)很小,這些不重要的特征通道可以將其裁剪掉。
2.2.2 模型通道裁剪
如圖4所示,對(duì)已經(jīng)稀疏化的縮放因子進(jìn)行排序,根據(jù)剪枝率求得縮放因子的閾值。當(dāng)縮放因子大于或等于該閾值時(shí),該縮放因子對(duì)應(yīng)的特征通道將被保留。當(dāng)縮放因子小于該閾值時(shí),該縮放因子對(duì)應(yīng)的特征通道將會(huì)被剪掉,見圖4。

圖4 通道裁剪
通常情況下,剪裁后的模型其檢測(cè)精度會(huì)有不同程度的下降。裁剪的通道數(shù)越多,參數(shù)越少,檢測(cè)精度下降的就越明顯。為了恢復(fù)一定的檢測(cè)精度,需要用數(shù)據(jù)集將裁剪后的模型重新訓(xùn)練,在這個(gè)過程中,裁剪模型中的參數(shù)會(huì)根據(jù)訓(xùn)練樣本數(shù)據(jù)進(jìn)行調(diào)整,以恢復(fù)至較高的檢測(cè)精度。
本文以坦克、飛機(jī)、艦艇作為被偵察對(duì)象,使用高仿真模型,按照1∶20搭建縮比場(chǎng)景,然后用四旋翼無人機(jī)進(jìn)行視頻采集,采集完成后截取部分幀作為數(shù)據(jù)樣本。對(duì)采集到的數(shù)據(jù)樣本進(jìn)行旋轉(zhuǎn)、拼接、曝光、添加椒鹽噪聲等增廣處理,最終共制得圖像3 400張,其中2 720張用來訓(xùn)練,680張用來測(cè)試驗(yàn)證,圖5為部分?jǐn)?shù)據(jù)樣本。

圖5 無人機(jī)航拍數(shù)據(jù)集樣本
如圖6所示,本文用Labellmg軟件對(duì)圖像中的目標(biāo)進(jìn)行標(biāo)注,一共3類目標(biāo):坦克(tank)、飛機(jī)(plane)、艦船(ship)。具體標(biāo)注流程:①打開圖片,在圖片上創(chuàng)建包圍目標(biāo)的最小矩形框;②對(duì)創(chuàng)建的不同矩形框進(jìn)行命名;③對(duì)單張圖片中所有目標(biāo)命名保存后,軟件自動(dòng)生成對(duì)應(yīng)的xml文件;④使用格式轉(zhuǎn)換代碼將xml文件轉(zhuǎn)換為txt文件,txt文件包含用于訓(xùn)練的目標(biāo)坐標(biāo)位置等信息。
目前在目標(biāo)檢測(cè)領(lǐng)域有多種性能評(píng)價(jià)指標(biāo),如精確度、召回率、平均精確率、平均精準(zhǔn)率均值mAP、檢測(cè)速率等。以下分別為精確度(P)和召回率(R)的計(jì)算公式:
(6)
(7)
式中:WTP為被正確識(shí)別的目標(biāo)個(gè)數(shù);WFP為被錯(cuò)誤識(shí)別的目標(biāo)個(gè)數(shù);WFN為沒有被正確識(shí)別出來的目標(biāo)個(gè)數(shù)。
AP為單類目標(biāo)PR曲線與坐標(biāo)所圍成的面積,該指標(biāo)能夠綜合考慮精確度和召回率,對(duì)于單類目標(biāo)的識(shí)別效果評(píng)價(jià)較為全面。mAP為各類目標(biāo)AP值的加和平均值,即表示模型整體檢測(cè)精度,mAP越高檢測(cè)效果越好。FPS為模型一秒能夠檢測(cè)的圖片數(shù)量,F(xiàn)PS值越大說明模型的檢測(cè)速度越快。
本文實(shí)驗(yàn)所用配置如下:計(jì)算機(jī)系統(tǒng)采用Ubuntu18.04;CPU采用Intel Core i5-9500;GPU采用NVIDIA GeForce RTX 2060 ti;深度學(xué)習(xí)框架采用Darknet[15]。訓(xùn)練時(shí),模型輸入大小為416×416,batch-size為32,初始學(xué)習(xí)率為0.001,稀疏率為0.001。
訓(xùn)練過程中訓(xùn)練集損失函數(shù)和驗(yàn)證集損失函數(shù)變化情況如圖7所示。當(dāng)模型迭代至150個(gè)epoch后,兩者的損失函數(shù)值均已收斂至0.6附近,因此實(shí)驗(yàn)中epoch取160。

圖7 損失函數(shù)變化曲線
為了驗(yàn)證改進(jìn)模型的有效性,本文設(shè)置了3組實(shí)驗(yàn)進(jìn)行對(duì)比分析。
實(shí)驗(yàn)1:使用YOLOv4原模型,模型結(jié)構(gòu)見圖1。
實(shí)驗(yàn)2:使用2.1節(jié)方法,對(duì)YOLOv4原模型預(yù)測(cè)層進(jìn)行改進(jìn),生成YOLOv4-A模型,模型結(jié)構(gòu)見圖2。
實(shí)驗(yàn)3:使用2.2節(jié)方法,對(duì)YOLOv4-A模型進(jìn)行通道裁剪改進(jìn),微調(diào)生成YOLOv4-B模型。
在輸入大小為416×416的情況下,對(duì)上述3種模型使用3.2節(jié)所述數(shù)據(jù)集進(jìn)行訓(xùn)練測(cè)試,模型性能對(duì)比結(jié)果見表1。
從表1的實(shí)驗(yàn)數(shù)據(jù)可以發(fā)現(xiàn):

表1 模型性能對(duì)比
1)YOLOv4-A模型比YOLOv4原模型mAP降低了0.22%,但模型的內(nèi)存占用少了26.56%,檢測(cè)速度提升了11.63%。主要原因在于YOLOv4-A模型少了一個(gè)預(yù)測(cè)尺度,使得模型參數(shù)量減少。
2)YOLOv4-B模型是在YOLOv4-A模型的基礎(chǔ)上進(jìn)行了通道裁剪,模型檢測(cè)精度會(huì)有明顯降低,為了恢復(fù)檢測(cè)精度進(jìn)行了微調(diào),微調(diào)后YOLOv4-B模型較YOLOv4-A模型mAP降低了1.30%,但模型內(nèi)存占用減少了85 MB,F(xiàn)PS也提高了10幀/s。首先mAP的降低是因?yàn)椴眉裟P驮谧詈笪⒄{(diào)的時(shí)候參數(shù)量無法增加,這使得模型精度只能在有限的范圍內(nèi)進(jìn)行調(diào)整提升。其次內(nèi)存占用和FPS再次得到優(yōu)化是因?yàn)閷?duì)模型進(jìn)行了通道裁剪,將不重要的通道進(jìn)行了裁剪操作,因此參數(shù)量更少,推理速度更快。
3)最終改進(jìn)模型YOLOv4-B較YOLOv4原模型在mAP僅降低1.52%的前提下,模型內(nèi)存占用減少了60%,僅103 MB。FPS增加了15幀/s,取得了35%的提升。
表2為實(shí)驗(yàn)1原模型與實(shí)驗(yàn)3最終改進(jìn)模型的召回率對(duì)比,召回率越高說明模型的檢出效果越好。

表2 各目標(biāo)召回率對(duì)比 %
從表2可看出,改進(jìn)模型的飛機(jī)、艦船、坦克召回率較原模型分別下降了0.57%、1.19%、1.01%。這說明YOLOv4-B在對(duì)飛機(jī)進(jìn)行檢測(cè)時(shí),每檢測(cè)100個(gè)目標(biāo),比原模型多漏檢不到1個(gè)目標(biāo)。同理,在對(duì)艦船、坦克每檢測(cè)100個(gè)目標(biāo)時(shí),YOLOv4-B比原模型僅多漏檢1個(gè)目標(biāo)。因此YOLOv4-B和YOLOv4模型在實(shí)際檢測(cè)中效果應(yīng)基本一樣。
從圖8的對(duì)比可以發(fā)現(xiàn),YOLOv4-B模型沒有因?yàn)槟P偷拇蠓鶋嚎s,顯著地影響到對(duì)目標(biāo)的檢測(cè)效果。YOLOv4-B和YOLOv4原模型均可以將圖像中的3類目標(biāo)正確檢測(cè)出來。

圖8 實(shí)際檢測(cè)效果對(duì)比
通過對(duì)mAP、Recall以及實(shí)際檢測(cè)效果的分析,本文提出的最終改進(jìn)模型YOLOv4-B在與YOLOv4原模型檢測(cè)效果基本一致的情況下,內(nèi)存占用和檢測(cè)速度均取得了較大提升。
本文針對(duì)檢測(cè)模型內(nèi)存占用大、上機(jī)部署時(shí)實(shí)時(shí)性差的問題,提出了一種基于YOLOv4的無人機(jī)目標(biāo)檢測(cè)模型。在保證檢測(cè)精度的前提下,針對(duì)目標(biāo)尺寸特點(diǎn),將三尺度檢測(cè)模型改進(jìn)為雙尺度檢測(cè)模型;并進(jìn)行了通道裁剪。通過實(shí)驗(yàn)數(shù)據(jù)能夠看出,該方法減小了模型內(nèi)存占用、提升了檢測(cè)速度。