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