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