劉鴻志,王耀力,常青
(太原理工大學(xué),信息與計(jì)算機(jī)學(xué)院,山西太原 030000)
航空?qǐng)D像上由于目標(biāo)尺寸小、擁擠以及被遮擋等因素而引起的精度下降問(wèn)題是考驗(yàn)算法性能的一大挑戰(zhàn)。另外,模型復(fù)雜度直接影響了目標(biāo)檢測(cè)算法在內(nèi)存和計(jì)算能力有限的無(wú)人機(jī)平臺(tái)上的部署工作,如何平衡檢測(cè)精度和算法復(fù)雜度是該文的出發(fā)點(diǎn)。
基于深度學(xué)習(xí)的主流目標(biāo)檢測(cè)算法根據(jù)有無(wú)候選框生成分為雙階段目標(biāo)檢測(cè)算法[1-2]和單階段目標(biāo)檢測(cè)算法[3-7]兩類?;诘凸暮偷湍芎牡男枨骩8],選擇速度更快、精度有保證的一階段YOLO 系列作為基準(zhǔn)檢測(cè)算法,使用參數(shù)剪枝的方法對(duì)過(guò)參數(shù)化[9]的網(wǎng)絡(luò)模型進(jìn)行縮減[10-13];同時(shí),在多分類目標(biāo)檢測(cè)任務(wù)后處理中提出了NCW 的方法,通過(guò)對(duì)分類目標(biāo)采用加權(quán)框融合(Weighted Boxes Fusion,WBF)[14]與非極大值抑制(Non-Maximum Suppression,NMS)[15]相結(jié)合的方法進(jìn)一步提升了模型檢測(cè)精度。
YOLOv5 是YOLO 系列檢測(cè)算法中的第五版,并有v5s、v5m、v5l、v5x四種不同大小的模型,其中v5s是網(wǎng)絡(luò)深度和寬度最小的模型,權(quán)重大小僅14.1 MB。YOLOv5 整體架構(gòu)分為輸入端、Backbone 主干網(wǎng)絡(luò)、Neck 特征融合網(wǎng)絡(luò)、輸出端四部分,其中相較于YOLOv4 和YOLOv3 的Backbone 主干網(wǎng)絡(luò),改動(dòng)最大的部分在于YOLOv5 添加了Focus 結(jié)構(gòu)。
Focus 結(jié)構(gòu)將圖片進(jìn)行類似臨近下采樣的切片操作,然后進(jìn)行通道拼接,切片操作如圖1 所示。
圖1 切片操作示意圖
加權(quán)框融合(WBF)與NMS 直接過(guò)濾掉重復(fù)的邊界框不同,WBF 利用所用的邊界框,將多個(gè)框加權(quán)融合,通過(guò)式(1)調(diào)整置信度分?jǐn)?shù),通過(guò)式(2)、(3)融合邊界框坐標(biāo),生成新的目標(biāo)框。最后通過(guò)式(4)或者式(5)對(duì)融合的框進(jìn)行調(diào)整。
其中,T為每個(gè)目標(biāo)預(yù)測(cè)出的Box 的數(shù)量,C為Box 的置信度分?jǐn)?shù),C'為Box 的原始置信度分?jǐn)?shù),x、y為Box 的坐標(biāo),N為預(yù)測(cè)模型的數(shù)量。
WBF 算法的運(yùn)行步驟如下:
輸入:所有模型推理出的所有預(yù)測(cè)Bounding Boxes。
輸出:通過(guò)加權(quán)融合調(diào)整后的Bounding Boxes。
利用基于參數(shù)剪枝的方法對(duì)模型進(jìn)行簡(jiǎn)化,靈活性高,無(wú)需訓(xùn)練復(fù)雜網(wǎng)絡(luò),直接對(duì)訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行剪枝。其具體步驟如下:
步驟1 設(shè)定參數(shù)稀疏化率閾值和剪枝率。
步驟2 使用預(yù)訓(xùn)練模型初始化權(quán)重,進(jìn)行網(wǎng)絡(luò)稀疏化訓(xùn)練。
步驟3 通過(guò)觀察參數(shù)變化,根據(jù)剪枝率進(jìn)行通道裁剪。
步驟4 對(duì)網(wǎng)絡(luò)進(jìn)行適應(yīng)性訓(xùn)練。
步驟5 判斷是否符合性能要求,符合則結(jié)束剪枝,否則重復(fù)整個(gè)流程。
在目標(biāo)檢測(cè)的后處理過(guò)程中,通常使用NMS對(duì)每個(gè)位置冗余框進(jìn)行篩選,在YOLOv5 的輸出端,使用DIOU_NMS對(duì)處理目標(biāo)重疊有很好的效果,相比于經(jīng)典NMS,DIOU_NMS將IOU的計(jì)算方式更換為DIOU。
IOU 計(jì)算如式(6)所示:
其中,B為預(yù)測(cè)框的面積,Bgt為真實(shí)框的面積。
式(6)清晰地表達(dá)出了IOU 是兩個(gè)框的交并比,圖2 所示為兩種擁有相同IOU 不同位置分布的情況,顯然這種計(jì)算方式?jīng)]有考慮到預(yù)測(cè)框和目標(biāo)框之間的歸一化距離,導(dǎo)致預(yù)測(cè)結(jié)果不準(zhǔn)確。
圖2 相同IOU不同位置示意圖
中心點(diǎn)距離約束示意圖如圖3 所示,不僅考慮了兩個(gè)框之間的重疊面積,而且還考慮了兩個(gè)框的中心點(diǎn)距離。計(jì)算方式如式(7)所示:
圖3 中心點(diǎn)距離約束示意圖
其中,b是預(yù)測(cè)框中心點(diǎn),bgt是真實(shí)框中心點(diǎn),ρ是歐式距離,c是最小外接矩形的對(duì)角線長(zhǎng)度。
無(wú)論是NMS 還是DIOU_NMS,都無(wú)法對(duì)模型推理出的預(yù)測(cè)框進(jìn)行修正,導(dǎo)致網(wǎng)絡(luò)只能從錯(cuò)誤中尋找最優(yōu)解,影響了模型精度,因此,該文提出NCW 方法來(lái)改進(jìn)目標(biāo)框的預(yù)測(cè)。
為了應(yīng)對(duì)YOLOv5 推理預(yù)測(cè)出的目標(biāo)框定位不準(zhǔn)確問(wèn)題,該文提出NCW 算法,在NMS 的基礎(chǔ)上,提出錯(cuò)誤篩選算法,將明顯不符合矩形規(guī)則的預(yù)測(cè)框去除,進(jìn)一步利用WBF 的方法調(diào)整預(yù)測(cè)框的置信度和坐標(biāo),提高預(yù)測(cè)精度。
模型推理會(huì)產(chǎn)生很多無(wú)效的邊界框,比如坐標(biāo)x1<x2,y1<y2或者x1=x2,y1=y2等,如果將這些明顯不符合矩形規(guī)則的預(yù)測(cè)框加入到后續(xù)算法中,則增加了無(wú)用的計(jì)算量,影響算法檢測(cè)精度,因此通過(guò)提出的錯(cuò)誤過(guò)濾算法對(duì)預(yù)測(cè)框進(jìn)行處理。
由于WBF 不只是簡(jiǎn)單地根據(jù)閾值刪除邊界框,而是重新對(duì)預(yù)測(cè)框進(jìn)行加權(quán)計(jì)算,從而增加了算法復(fù)雜度,因此先使用NMS 進(jìn)行預(yù)篩選,然后利用WBF 進(jìn)行邊界框調(diào)整,以提高目標(biāo)檢測(cè)精度。NCW算法流程如圖4 所示。
圖4 NCW算法流程
文中采用的是基于批歸一化層通道數(shù)的剪枝方法,通過(guò)稀疏化訓(xùn)練后,將對(duì)輸出結(jié)果影響較小的通道去掉,在最大限度保證精度的情況下對(duì)模型進(jìn)行壓縮,從而減少了參數(shù)量的計(jì)算量,提高了推理速度。
在實(shí)現(xiàn)壓縮的過(guò)程中,稀疏化訓(xùn)練是非常重要的一步,因?yàn)楹线m的縮放因子γ直接決定了剪枝率的選擇,進(jìn)而導(dǎo)致了模型壓縮率和模型精度。根據(jù)先驗(yàn)知識(shí),γ從0.000 1 到0.001 不等,根據(jù)IOU 取0.5時(shí)的平均精度(mAP@0.5)指標(biāo)和通道權(quán)重變化示意圖,將低于閾值的通道刪除,通過(guò)剪枝率得到閾值,一般認(rèn)為剪枝率大于0.8時(shí),模型精度會(huì)出現(xiàn)顯著下降。剪枝完成后,對(duì)模型進(jìn)行微調(diào),使其恢復(fù)精度。通道剪枝如圖5 所示。
圖5 通道剪枝示意圖
在進(jìn)行稀疏化訓(xùn)練之前,有一個(gè)重要的步驟就是將卷積層(Conv Layer)和批歸一化層拆分,方可對(duì)批歸一化層進(jìn)行剪枝,因?yàn)閅OLOv5 會(huì)將卷積層和BN 層進(jìn)行融合。
該實(shí)驗(yàn)通過(guò)Pytorch 深度學(xué)習(xí)框架實(shí)現(xiàn)NCWSYOLO 模型算法,訓(xùn)練環(huán)境為Window10 操作系統(tǒng),CPU 為Inter Core i9-9900K,GPU 為Nvidia RTX2080 Super,在嵌入式設(shè)備Nvidia Jetson TX2 上完成推理和測(cè)試。該文所用的數(shù)據(jù)集為10 分類的VisDrone 2019 無(wú)人機(jī)數(shù)據(jù)集[16],其訓(xùn)練和驗(yàn)證圖片共7 019張,測(cè)試圖片有1 610 張。
由于VisDrone 的標(biāo)注方式與YOLO 標(biāo)注不同,先將txt 標(biāo)注形式轉(zhuǎn)換為VOC 格式的xml,然后將VOC 格式轉(zhuǎn)換為YOLO 格式,即每張圖片保存為一個(gè)txt 文件,每一行為一個(gè)目標(biāo),包括目標(biāo)類別、真實(shí)框中心點(diǎn)(x,y)坐標(biāo),以及框的寬度和長(zhǎng)度。
官方配置文件給出的是基于COCO 數(shù)據(jù)集得出的3 組Anchor,并不適用于該文數(shù)據(jù)集,因此通過(guò)K-means 聚類方法對(duì)VisDrone 重新生成3 組共9 個(gè)Anchor。
在推理階段,NMS 會(huì)根據(jù)所設(shè)置的閾值,將重復(fù)的框去除,若IOU 閾值設(shè)置過(guò)大,則會(huì)保留過(guò)多的框,不僅會(huì)降低精度,同時(shí)會(huì)對(duì)WBF 算法造成大量的計(jì)算,增加模型的推理時(shí)間;如果IOU 閾值設(shè)置過(guò)小,則會(huì)出現(xiàn)漏標(biāo)的情況,對(duì)模型精度造成很大影響,導(dǎo)致推理失敗,所以尋找一個(gè)合適的閾值是非常關(guān)鍵的一步。該文從官方給定的閾值0.7 開(kāi)始,以0.05 為間隔探索最合適的閾值,選定置信度為0.5 時(shí)所有類別的精度(Precision,Pr)為主要評(píng)判指標(biāo),將F1值設(shè)為輔助指標(biāo)。實(shí)驗(yàn)結(jié)果如表1 所示。
表1 各閾值推理精度分析比較
通過(guò)實(shí)驗(yàn)數(shù)據(jù)可以看出,當(dāng)IOU 閾值為0.45時(shí),精度為0.923,IOU 閾值為0.4 時(shí)精度增加了0.001,只發(fā)生了微量變化,從0.4 開(kāi)始,盡管IOU 繼續(xù)降低,NMS 對(duì)預(yù)測(cè)框位置要求也越嚴(yán)格,對(duì)預(yù)測(cè)框的過(guò)濾程度也越高,但是精度并不會(huì)繼續(xù)增大。反之,當(dāng)IOU 閾值增大,從0.5 開(kāi)始,精度相應(yīng)地開(kāi)始降低,到0.7時(shí),精度下降了接近兩個(gè)百分點(diǎn),IOU 閾值從0.65到0.7,精度大幅降低了接近一個(gè)百分點(diǎn),閾值增大精度下降,說(shuō)明了NMS 保留了過(guò)多的冗余框,影響了網(wǎng)絡(luò)的預(yù)測(cè)精度。
從整個(gè)過(guò)程可以看出,雖然F1 保持在0.95 的高水平,但是預(yù)測(cè)精度最高為0.924,當(dāng)網(wǎng)絡(luò)的推理效果不理想時(shí),NMS 只能從錯(cuò)誤的候選框中尋找最優(yōu)的結(jié)果,也就是說(shuō)最終結(jié)果的好壞早已由網(wǎng)絡(luò)決定,NMS 只是選定了相對(duì)最好的一組結(jié)果,因此將推理結(jié)果充分利用并加以修正,改善模型的檢測(cè)精度是該文引入WBF,提出NCW 算法的重要原因。
與NMS 的功能類似,WBF 也是對(duì)推理結(jié)果做最后篩選的,不同的是WBF 將多個(gè)框加權(quán)融合,生成一個(gè)新的預(yù)測(cè)框。如果只將NMS 替換成WBF,會(huì)引入大量的計(jì)算,使網(wǎng)絡(luò)推理變慢,增加不必要的開(kāi)銷,NMS 可以快速過(guò)濾掉一些冗余框,因此將NMS作為WBF 的數(shù)據(jù)預(yù)處理部分引入到Y(jié)OLOv5 中。
如前文所述,NMS 的IOU 設(shè)置過(guò)大,會(huì)保留大量的冗余框,無(wú)形中加大了WBF 的計(jì)算量;IOU 設(shè)置過(guò)小,保留的預(yù)測(cè)框過(guò)少,WBF 又起不到融合調(diào)整的作用;因此,選取一個(gè)合適的IOU 閾值,是NCW 算法發(fā)揮作用的關(guān)鍵。利用實(shí)驗(yàn)獲得的先驗(yàn)知識(shí)進(jìn)行實(shí)驗(yàn),以F1 和Pr 為平價(jià)指標(biāo),其中F1 反映精度和召回率(Re)之間的平衡關(guān)系,先驗(yàn)知識(shí)如表1所示,實(shí)驗(yàn)數(shù)據(jù)如表2所示。
如表2 所示,某些Pr 很高,但是F1 值卻很低(如閾值為0.7 和0.4),說(shuō)明Pr 和Re 之間沒(méi)有達(dá)到平衡,犧牲召回率換取精度的提升,所以應(yīng)該舍棄,同理舍棄F1值很高但是Pr很低的情況(如閾值為0.5和0.7)。因此,在F1 大于0.925時(shí),模型推理精度從0.93 到0.945 不等,選取F1 值和Pr 值最平衡的一組,當(dāng)NMS/WBF為0.7,IOU 閾值為0.6時(shí),F(xiàn)1 和Pr都為0.941,0.941 比原始網(wǎng)絡(luò)推理精度提升了3.9%,因此說(shuō)明NCW 算法是有效的。
表2 不同NMS/WBF下各閾值推理精度分析比較
模型稀疏化訓(xùn)練和通道剪枝是一個(gè)追求平衡的過(guò)程,稀疏化率過(guò)大,剪枝時(shí)會(huì)刪除過(guò)多有價(jià)值的通道,導(dǎo)致模型推理精度下降,稀疏化率過(guò)小,無(wú)差別的剪枝會(huì)損失大量的信息,因此尋找稀疏化率和剪枝率的平衡點(diǎn)是模型壓縮至關(guān)重要的環(huán)節(jié)。該文根據(jù)先驗(yàn)知識(shí),選取稀疏化率從0.005 到0.000 05 進(jìn)行稀疏訓(xùn)練,BN 層權(quán)重的變化圖如圖6 所示。在不同稀疏化率下,稀疏訓(xùn)練精度(Pr)、召回率(Re)、平均精度(mAP@0.5)如表3 所示。
圖6 BN層權(quán)重變化示意圖
如圖6 所示,隨著稀疏化率的增大,BN 層權(quán)重逐漸趨近于0,當(dāng)稀疏化率為0.000 05時(shí),BN 層權(quán)重趨于正態(tài)分布,說(shuō)明稀疏程度不夠,沒(méi)有把不重要的通道區(qū)分開(kāi);隨著稀疏化率的提高,BN 層權(quán)重逐漸向0靠近,結(jié)合表3 來(lái)分析,當(dāng)稀疏化率為0.000 1時(shí),mAP@0.5 最高,同時(shí)比原始訓(xùn)練精度提升了2.8%,說(shuō)明稀疏化訓(xùn)練可以在一定程度上有效緩解訓(xùn)練過(guò)擬合。但是隨著稀疏化率的進(jìn)一步提升,mAP@0.5下降明顯,到0.001 時(shí)已經(jīng)低于原始訓(xùn)練精度,到0.005 時(shí)mAP@0.5 出現(xiàn)嚴(yán)重下降,當(dāng)BN 層權(quán)重基本接近0,網(wǎng)絡(luò)過(guò)于密集,丟失了大量的信息。
稀疏化訓(xùn)練完成后,根據(jù)設(shè)置的剪枝率進(jìn)行剪枝,通道權(quán)重的絕對(duì)值小于設(shè)定剪枝率對(duì)應(yīng)的閾值時(shí),則刪除,如果出現(xiàn)某一層中所有通道的γ因子均小于閾值,為了保證網(wǎng)絡(luò)完整性,則保留該層中γ因子最大的一個(gè)通道。完成通道剪枝后,通過(guò)50 輪微調(diào)訓(xùn)練恢復(fù)模型精度。該文選用mAP@0.5、參數(shù)量、浮點(diǎn)運(yùn)數(shù)數(shù)、模型大小、閾值5 個(gè)指標(biāo)來(lái)衡量剪枝效果。如表3 所示,選擇稀疏化率為0.000 1 時(shí)的模型進(jìn)行剪枝實(shí)驗(yàn)。
表3 不同稀疏化率下訓(xùn)練結(jié)果
如表4 所示,剪枝率為0.7時(shí),相比于0.6,平均精度出現(xiàn)了大幅度下降,說(shuō)明剪枝率過(guò)大,剪掉了太多的通道。剪枝率為0.6 和0.5時(shí),平均精度近似相同,但是參數(shù)量降低了24.3%,浮點(diǎn)數(shù)減少了11%,模型大小縮減了21.6%,相對(duì)于剪枝率為0.4,平均精度減少了1%,但是參數(shù)量降低了41.6%,浮點(diǎn)數(shù)減少了19.6%,模型大小縮減了39.4%,因此選取剪枝率為0.6 時(shí)的模型作為最終的模型。通過(guò)不同輸入尺寸的圖片進(jìn)行測(cè)試,模型推理時(shí)間分別加快了29.8%、31.4%、43.9%。具體實(shí)驗(yàn)結(jié)果如表5 所示。
表4 不同剪枝率分析比較
表5 嵌入式端模型推理時(shí)間
該文設(shè)計(jì)了一種面向嵌入式系統(tǒng)的輕量級(jí)目標(biāo)檢測(cè)方法,提高了檢測(cè)精準(zhǔn)度和速度。其中,所提的NCW 目標(biāo)框過(guò)濾算法,彌補(bǔ)了NMS 算法對(duì)預(yù)測(cè)框過(guò)濾效果的不足,在保證召回率的前提下提升了精度;通過(guò)參數(shù)剪枝技術(shù),使深度神經(jīng)網(wǎng)絡(luò)可以部署到嵌入式端;通過(guò)K-means 聚類方法,針對(duì)VisDrone 數(shù)據(jù)集重新設(shè)計(jì)了三組Anchor。實(shí)驗(yàn)結(jié)果證明了該方法的有效性,算法可以部署在嵌入式設(shè)備Nvidia Jetson TX2上,能夠在低功耗場(chǎng)景中對(duì)無(wú)人機(jī)圖像進(jìn)行實(shí)時(shí)解析。下一步將繼續(xù)優(yōu)化算法,以滿足更為復(fù)雜的高空視角下對(duì)小目標(biāo)的檢測(cè)任務(wù),使算法具有強(qiáng)大的泛化性。