王成龍, 趙 倩, 趙 琰, 郭 彤
(上海電力大學(xué)電子與信息工程學(xué)院,上海 201000)
隨著現(xiàn)代交通、航空航天以及現(xiàn)代軍事等各個領(lǐng)域的快速發(fā)展,遙感飛機目標(biāo)檢測算法的應(yīng)用場景也越來越廣闊[1]。但在遙感飛機目標(biāo)檢測中存在以下兩個問題:首先,遙感影像中的物體尺度變化大,飛機小目標(biāo)所占像素少[2],對應(yīng)區(qū)域的信息量不足,存在誤檢、漏檢的現(xiàn)象;其次,在實際檢測過程中,設(shè)備的資源需要合理利用,復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型所需要的計算量大,對設(shè)備資源的占用率高,許多設(shè)備難以達到模型對高算力的要求。
為了解決上述問題,國內(nèi)外學(xué)者做了許多研究,其中:文獻[3]針對航天衛(wèi)星場景提出了基于DenseNet[4]改進YOLOv3[5]的遙感目標(biāo)檢測算法,通過改進主干網(wǎng)絡(luò)結(jié)構(gòu)提升遙感目標(biāo)的檢測精度,但是基于DenseNet的網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜、參數(shù)量多,復(fù)雜的特征融合會造成特征冗余;與之不同,文獻[6]則通過引入空間金字塔池化結(jié)構(gòu),使用Inception結(jié)構(gòu)實現(xiàn)降維過渡,增強網(wǎng)絡(luò)特征信息的提取,減少了模型的參數(shù)量;文獻[7]則對YOLOv4[8]進行改進,改進損失函數(shù)并引入注意力機制來抑制不重要的特征,在檢測精度與原有檢測方法相近時取得了更快的檢測速度。以上兩種算法雖然在一定程度上實現(xiàn)了輕量化,但對設(shè)備的算力要求依然很高。
針對上述問題,提出了一種基于YOLOv4結(jié)構(gòu)化剪枝的模型壓縮方法。綜合權(quán)重級、內(nèi)核級、通道級、層級等不同級別剪枝的優(yōu)缺點,最終采用對通道進行剪枝的方案壓縮模型參數(shù)量,減少內(nèi)存消耗,這樣做的優(yōu)點在于既不需要特殊軟件和硬件加速器的輔助,也不需要較深的網(wǎng)絡(luò)層數(shù)設(shè)計[9]。實驗在遙感飛機數(shù)據(jù)集上進行對比測試,驗證了該網(wǎng)絡(luò)設(shè)計的有效性。
許多目標(biāo)檢測算法為了加速網(wǎng)絡(luò)對定位信息的檢索、提升定位的準(zhǔn)確性,采用K-means算法對錨框進行聚類。但是針對遙感飛機目標(biāo)的實際情況,若直接采用K-means算法進行聚類會造成錨框冗余,而且,K-means算法聚類時隨機抽取初始簇心的方式可能給最后的聚類結(jié)果造成較大誤差[10-11],所以本文使用K-means++算法進行錨框聚類。K-means++算法采用概率抽取簇心的方式代替隨機抽取,避免聚類時對初始簇心敏感的問題,減少了聚類過程造成的誤差,K-means++算法在聚類算法的實現(xiàn)過程中,采用平均交并比(Avg IOU)代替?zhèn)鹘y(tǒng)的歐氏距離作為目標(biāo)函數(shù)[10],目標(biāo)函數(shù)d為
d(box,centroid)=1-UIOU(box,centroid)
(1)
式中:box為數(shù)據(jù)集標(biāo)簽的聚類框;centroid為聚類中心。實驗分別選取了K的值為1~10進行對比實驗,K為聚類的錨框數(shù)量,得到聚類結(jié)果對比如圖1所示。
圖1 聚類結(jié)果對比圖
從聚類結(jié)果對比中可以看出,隨著K值的增大,目標(biāo)函數(shù)的值也在增大,且在目標(biāo)函數(shù)增大的過程中,采用K-means++算法的聚類效果更加穩(wěn)定,準(zhǔn)確性更高。
針對遙感飛機數(shù)據(jù)集中小目標(biāo)較多,聚類后錨框冗余,無法充分發(fā)揮網(wǎng)絡(luò)多尺度檢測性能的問題,對聚類后的錨框設(shè)計尺度自適應(yīng)調(diào)整,找出更適合遙感飛機目標(biāo)檢測的錨框。錨框尺度自適應(yīng)調(diào)整算式為
(2)
(3)
(4)
(5)
式中:xi為聚類錨框的第i個值;x′i為調(diào)整后第i個錨框的值;θ與ω分別為邊界框尺度調(diào)整參數(shù),θ取0.7,ω取1.2。尺度調(diào)整后的錨框結(jié)果分別為(5,5),(8,8),(11,14),(16,14),(21,20),(24,28),(34,33),(42,44)和(58,63)。
為了進一步解決遙感飛機目標(biāo)較小,對應(yīng)區(qū)域信息量不足導(dǎo)致的誤檢、漏檢問題,實驗設(shè)計中使用SENet[12]通道注意力機制對CSPDarknet53與SPP(Spatial Pyramid Pooling)[13]結(jié)構(gòu)連接處進行加權(quán)調(diào)整,利用通道間的依賴性重新校準(zhǔn)通道的權(quán)重,使網(wǎng)絡(luò)在有限的感受野中更加關(guān)注遙感飛機的物體特征。經(jīng)過SENet時,對特征矩陣U進行處理,首先,對U進行壓縮(Squeeze)操作,將每個W*H的矩陣映射成一個1*1 的通道描述符[13],使網(wǎng)絡(luò)全局感受野中的信息能夠被較低的卷積層利用,然后對U進行激勵(Excitation)操作,使用sigmoid激活函數(shù)對每個通道進行激活,獲得不同的通道權(quán)重后作用到各個通道中,通道描述符為
(6)
式中:U為輸入的特征矩陣;C為通道數(shù);H,W分別為特征圖的長和寬;Fsq為壓縮操作。
1.2.1 模型稀疏
稀疏程度決定模型剪枝能否達到預(yù)期效果,因而,稀疏因子s的設(shè)置至關(guān)重要,稀疏因子過大會導(dǎo)致模型在稀疏過程中性能急劇下降,而稀疏因子過小則會使稀疏不完全,導(dǎo)致剪枝時模型精度損失過大。實驗經(jīng)過多輪測試最終選取0.000 3作為稀疏因子對YOLOv4模型進行稀疏,實際稀疏策略為稀疏因子s乘以當(dāng)前學(xué)習(xí)率。實驗總共設(shè)置300個epoch,最小批次設(shè)置為16,初始學(xué)習(xí)率設(shè)置為0.002,動量為0.97,優(yōu)化器選擇為SGD(Stochastic Gradient Descent)。為了直觀區(qū)分不同稀疏因子在模型稀疏中的效果,實驗分別抽取稀疏因子s為0.000 2和0.000 3進行對比,模型稀疏對比如圖2所示。從圖2中可以看出,隨著訓(xùn)練的進行模型逐漸被稀疏,且稀疏因子為0.000 3的稀疏訓(xùn)練中,模型稀疏更加充分。
圖2 模型稀疏對比圖
1.2.2 模型剪枝及微調(diào)
利用BN(Batch Normalization)[14]層縮放因子作為依據(jù)對網(wǎng)絡(luò)進行剪枝的優(yōu)點在于可以避免引入其他參數(shù)量以及卷積層,提升剪枝效率。BN層本質(zhì)上是歸一化網(wǎng)絡(luò)層,具有加快訓(xùn)練速度、提升網(wǎng)絡(luò)泛化能力的作用,BN層所執(zhí)行的變換為
(7)
式中:Zin與Zout分別表示BN層的輸入與輸出;μB和σB表示在BN層上激活輸入的平均值和標(biāo)準(zhǔn)差值;γ和β是可訓(xùn)練的仿射變換參數(shù)。實驗使用BN層中的縮放因子γ作為依據(jù)對網(wǎng)絡(luò)進行剪枝,利用γ與通道輸出的乘積判斷通道的重要程度,然后將得分低的通道進行過濾、刪減,達到壓縮模型的效果[9],模型剪枝整體設(shè)計流程如圖3所示。
圖3 結(jié)構(gòu)化剪枝流程圖
評估通道重要程度的目標(biāo)函數(shù)L為
(8)
式中:x,y分別為訓(xùn)練的輸入與目標(biāo);M為網(wǎng)絡(luò)可訓(xùn)練權(quán)重;目標(biāo)函數(shù)的前一項對應(yīng)網(wǎng)絡(luò)正常的訓(xùn)練損失;g(·)是縮放因子上的懲罰項;λ是用來約束兩項的超參數(shù)。
實驗過程中分別使用(0.1,0.9)的不同剪枝率對稀疏模型進行剪枝,經(jīng)過多輪實驗比較模型參數(shù)與模型精度變化,最終確定剪枝率為0.75。當(dāng)剪枝率較高時,可能會暫時出現(xiàn)精度損失,但通??梢酝ㄟ^對剪枝后的模型進行微調(diào)來恢復(fù)模型精度。
由于YOLOv4結(jié)構(gòu)與剪枝后的模型結(jié)構(gòu)相似度極高,為確保模型精度,使用YOLOv4作為教師模型進行微調(diào),用軟標(biāo)簽輔助真實標(biāo)簽重新訓(xùn)練剪枝后的模型,使剪枝后的模型得到更好的預(yù)測效果。微調(diào)的目標(biāo)是將復(fù)雜模型中的知識提煉到剪枝模型中,在訓(xùn)練過程中使剪枝模型的輸出擬合復(fù)雜模型的輸出,降低剪枝模型的預(yù)測結(jié)果和真實標(biāo)簽之間的損失[15],微調(diào)框架中損失函數(shù)Lloss為
(9)
式中:|X|表示X中元素數(shù)量;Xn是X的一個數(shù)據(jù)節(jié)點;yn是Xn的類別標(biāo)簽;f是T的預(yù)測函數(shù);πj(xn,yn)是教師模型的軟標(biāo)簽;Pj(xn)是剪枝模型的軟標(biāo)簽[15];φ是用來調(diào)節(jié)模型側(cè)重于軟標(biāo)簽或真實標(biāo)簽的參數(shù),φ∈[0,1]。微調(diào)過程中剪枝后模型的損失(CIOU)[16]變化如圖4所示。
圖4 微調(diào)loss變化圖
從圖4中可以看出,剪枝后模型在微調(diào)初始階段時Lloss略有增加,隨著訓(xùn)練的進行Lloss逐漸降低,微調(diào)效果良好。
在多個公開遙感數(shù)據(jù)集中進行飛機目標(biāo)提取,同時通過平移、反轉(zhuǎn)、旋轉(zhuǎn)等仿射變換進行數(shù)據(jù)擴充組成新的遙感飛機數(shù)據(jù)集,并按照8∶1∶1劃分訓(xùn)練集、驗證集和測試集,部分?jǐn)?shù)據(jù)集如圖5所示。
圖5 數(shù)據(jù)集示例
實驗硬件環(huán)境為Intel(R)Core(TM)i7-10700k,16 GiB RAM,NVIDIA GeForce RTX 2080super,對比實驗硬件環(huán)境配置相同。
為了驗證本文算法的性能,將其與YOLOv4算法進行對比,對比實驗以準(zhǔn)確率(Precision)、召回率(Recall)、AP@0.5(Average Precision)、AP誤差作為評價標(biāo)準(zhǔn),即
(10)
(11)
(12)
式中:TP為真正例;FP為假正例;FN為假反例;AAP則為Precision與Recall在0~1區(qū)間范圍內(nèi)繪制曲線圍成的面積[17]。AP@0.5是在置信度為0.5時測試所得的AP值,AP誤差是相較原模型剪枝及微調(diào)模型精度的變化值。
對比結(jié)果如表1所示,從中可以看出,剪枝模型各項性能有所降低,但剪枝前后AP誤差變化較小。經(jīng)過YOLOv4模型微調(diào)后,剪枝模型的性能有所回升,模型參數(shù)量沒有增加,精度相比剪枝模型提升3.1%。最終微調(diào)模型相比YOLOv4算法模型參數(shù)量減少了93.1%,雖然檢測精度下降1.4%,但仍然能夠?qū)崿F(xiàn)遙感目標(biāo)的準(zhǔn)確檢測。
表1 結(jié)果對比表
為驗證最終輕量級模型的檢測效果,將本文算法與YOLOv3[6],SSD[18],Mobilenet SSD,YOLOv3-tiny,YOLOv4-tiny以及YOLOv3-Mobilenet[19]等主流輕量級目標(biāo)檢測算法進行對比,以AP@0.5、參數(shù)量、檢測速度和檢測時間作為檢測效果的評價指標(biāo),結(jié)果如表2所示。
表2 檢測結(jié)果對比表
通過表2數(shù)據(jù)分析可以看出,在檢測速度及檢測時間兩項對比中,本文算法明顯優(yōu)于其他主流輕量級算法,在準(zhǔn)確性與實時性上均能達到要求,有較好的實際應(yīng)用價值。YOLO系列算法在遙感飛機目標(biāo)中的檢測效果優(yōu)于SSD算法。而本文算法比YOLOv3-tiny,YOLOv4-tiny檢測精度分別提高了9.6%,6.2%。YOLOv4-tiny作為YOLOv4算法輕量化中效果較好的版本,有較強的對比性,從對比結(jié)果中可以看出,在模型檢測精度、參數(shù)量、檢測速度等方面,本文算法的表現(xiàn)都更好,更加符合實際遙感檢測場景的需要。近年來,許多針對YOLO的改進算法取得了較好的檢測效果,其中,文獻[19]使用Mobilenet代替YOLOv3原始的主干提取網(wǎng)絡(luò),實現(xiàn)了模型輕量化的效果,但通過測試對比分析可以看出,使用輕量級Mobilenet作為主干提取網(wǎng)絡(luò)仍然存在特征冗余,參數(shù)量也明顯高于本文算法,在測試AP@0.5相近的情況下,YOLOv3-Mobilenet算法參數(shù)量為本文算法的5.53倍,進一步驗證了本文算法的優(yōu)勢。
為了直觀區(qū)分不同算法對遙感飛機目標(biāo)的檢測效果,實驗抽取部分輕量級算法同張圖片的檢測結(jié)果進行對比分析,如圖6所示。
圖6 部分算法檢測對比圖
由上述不同算法的檢測效果對比可以看出,Mobilenet SSD算法對遙感飛機目標(biāo)的檢測效果較差,YOLOv4-tiny相比Mobilenet SSD效果更好,但是在小目標(biāo)檢測上也難以達到要求,圖6中,YOLOv4-tiny算法檢測結(jié)果中存在許多沒有檢測出的小目標(biāo),而本文算法都有較好的檢測效果。YOLOv3-Mobilenet算法實現(xiàn)了較為精準(zhǔn)的檢測效果,同時降低了參數(shù)量,但相比本文算法,參數(shù)量仍然較多,輕量化效果較差。通過上述對比分析可以看出,本文算法在檢測效果與參數(shù)量兩方面均能達到較好的效果,能夠?qū)b感飛機目標(biāo)實現(xiàn)準(zhǔn)確實時檢測。
本文從減少模型參數(shù)量提升模型實時檢測性能的角度,提出了一種基于YOLOv4模型結(jié)構(gòu)化剪枝的遙感飛機目標(biāo)檢測算法。模型參數(shù)量壓縮93.1%,檢測速度提升2.46倍,相比于對主干網(wǎng)絡(luò)進行輕量化的方法,使用模型結(jié)構(gòu)化剪枝的方法壓縮率更高,有更好的實際應(yīng)用性。經(jīng)過實驗對比分析,驗證了本文算法在檢測精度、檢測速度、參數(shù)量等方面均能滿足遙感檢測場景的需要。在未來的研究中,將嘗試進一步擴展遙感飛機目標(biāo)數(shù)據(jù)庫,優(yōu)化檢測算法,進一步提升算法的泛化能力。