韓要昌,王 潔,魯 力,李宇環(huán)
(空軍工程大學(xué)防空反導(dǎo)學(xué)院,西安 710051)
在現(xiàn)代戰(zhàn)爭中,制信息權(quán)逐漸成為取勝的重要因素[1]。近年來,隨著衛(wèi)星、無人機等空天觀測平臺的迅速發(fā)展與普及,遙感技術(shù)在軍事情報的獲取中發(fā)揮著越來越重要的作用[2]。近年來,深度神經(jīng)網(wǎng)絡(luò)的重要分支——卷積神經(jīng)網(wǎng)絡(luò)異軍突起,學(xué)術(shù)界提出了許多高性能的卷積神經(jīng)網(wǎng)絡(luò)模型[3-6],在圖像分類、目標檢測和目標識別等任務(wù)中得到了廣泛應(yīng)用[7-10]。卷積神經(jīng)網(wǎng)絡(luò)在圖像處理的巨大優(yōu)勢也為遙感圖像中的目標檢測提供了新的途徑,學(xué)術(shù)界將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于遙感圖像的解譯,對遙感圖像中的飛機檢測[11]、艦船識別[12]和小目標檢測[13]等問題進行了廣泛研究。
同時,以卷積神經(jīng)網(wǎng)絡(luò)為代表的深度學(xué)習(xí)模型包含了巨量的參數(shù),對設(shè)備的內(nèi)存和計算能力要求較高,限制了其在無人機、移動端等邊緣設(shè)備上的使用。因此,對深度學(xué)習(xí)模型的壓縮成為當前的重要課題。Chen G 等[14]引入知識蒸餾方法進行了目標檢測模型壓縮的研究,將大型復(fù)雜深度學(xué)習(xí)模型的特征提取與選擇能力作為“軟目標”,引導(dǎo)小型簡單網(wǎng)絡(luò)的性能不斷逼近該目標,從而將大型深度學(xué)習(xí)模型遷移到小型簡單模型上;Howard A G 等[15]提出了深度可分離卷積,構(gòu)建了緊湊的卷積神經(jīng)網(wǎng)絡(luò)MobileNet,有效減少了參數(shù)量和計算量;Denton E L 等[16]提出了一種針對卷積神經(jīng)網(wǎng)絡(luò)的低秩分解方法,采用奇異值分解將卷積神經(jīng)網(wǎng)絡(luò)的權(quán)值矩陣分解為較小的近似矩陣乘積,以減少運算量。Liu Z等[17]針對卷積層結(jié)構(gòu)設(shè)計了一種卷積核剪枝方法,能夠在基本保證卷積神經(jīng)網(wǎng)絡(luò)完整性的情況下有效減少參數(shù)量和計算量。
本文基于卷積核剪枝方法對YOLOv3 算法設(shè)計了精簡壓縮方法,同時保證了YOLOv3 中卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的完整性。使用剪枝后的YOLOv3 模型在自制的典型遙感圖像數(shù)據(jù)集上進行遙感目標檢測實驗,驗證了該模型壓縮方案的可行性。
“剪枝”就是將深度神經(jīng)網(wǎng)絡(luò)中某些神經(jīng)元或者卷積核剔除,VGG16[3]引入的Dropout 方法是最原始的剪枝方法,即將全連接神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元按照比例隨機剔除,降低過擬合程度。卷積核剪枝則以卷積層中的卷積核為單位,對卷積神經(jīng)網(wǎng)絡(luò)進行結(jié)構(gòu)化剪枝。
如圖1 所示,假定第i 層卷積層輸入通道的數(shù)量為ni,wi、hi分別為輸入特征圖xi的寬和高,表示單個二維卷積核,該層所有的二維卷積核可表示為卷積核矩陣。輸入通道ni和輸出通道ni+1分別構(gòu)成了卷積核矩陣的寬和高,每列的卷積核組成一個三維卷積核,中的每個二維卷積核分別同對應(yīng)輸入通道的特征圖做線性變換,從而提取輸入的一類特征,共提取出ni+1類特征并形成ni+1張?zhí)卣鲌D,經(jīng)過激活函數(shù)處理之后輸送至下一卷積層。因此,卷積層中以卷積核為計算單位,在特征提取時以三維卷積核為單位。
設(shè)第i 層卷積核的大小均為k×k,則該卷積層中的計算量為hiwinini+1k2,假定三維卷積核被剪除,從而減少nihiwik2次計算,其對應(yīng)的特征圖xi+1,j也會被移除,則第i+1 層卷積層的減少一個輸入通道,該層的計算次數(shù)相應(yīng)減少了ni+2hiwik2次,從而達到精簡卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),降低計算量的要求。
圖1 卷積核剪枝示意圖
YOLOv3[18]算法是一種以卷積神經(jīng)網(wǎng)絡(luò)為主要組成部分的目標檢測算法,由基礎(chǔ)網(wǎng)絡(luò)DarkNet53和預(yù)測網(wǎng)絡(luò)組成,兩部分均由卷積層組合而成,基礎(chǔ)網(wǎng)絡(luò)對圖像中的特征進行提取、選擇和變換,并將不同尺度的特征輸入到預(yù)測網(wǎng)絡(luò)進行統(tǒng)一處理,從而直接給出目標的位置和類別。YOLOv3 兼顧了目標檢測的速度和精度,本文將其作為模型壓縮的對象。
針對YOLOv3 的壓縮方案如圖2 所示,將圖1中的每列二維卷積核構(gòu)成的三維卷積核視為一個卷積通道,通過稀疏化訓(xùn)練對每個卷積層的卷積通道重要性進行評估,設(shè)置合理的閾值,將重要性低于該閾值的通道上的卷積核刪去,同時根據(jù)前一卷積層的通道剪枝結(jié)果,刪去對應(yīng)行數(shù)的所有二維卷積核,既能使各卷積層同時剪枝,又兼顧了各卷積層剪枝結(jié)果的耦合關(guān)系,從而簡化卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu);將精簡之后的目標檢測模型再次訓(xùn)練微調(diào)參數(shù),補償因精簡網(wǎng)絡(luò)結(jié)構(gòu)帶來的檢測效果下降。該方法實施的主要步驟如圖2 所示,主要分為以下4個步驟:
1)稀疏化訓(xùn)練,評估相鄰各層通道的重要性;
圖2 目標檢測模型壓縮總體方案
2)對重要性低于閾值的通道進行剪枝操作;
3)對剪枝得到的精簡模型再次訓(xùn)練,微調(diào)其參數(shù);
4)測試微調(diào)后的精簡模型性能;
5)重復(fù)步驟1)~步驟4)。
缺氮發(fā)生原因:首先,主要與土壤氮素供應(yīng)狀況有關(guān)。我國幾乎所有種植柑橘的果園若只僅靠土壤供氮均會出現(xiàn)氮不足的問題。其次,與氣候條件有關(guān)。在多雨地區(qū)氮素易流失;土壤漬水或干旱等都會導(dǎo)致缺氮癥狀的發(fā)生。另外,氮肥施用量少或施用方法不當也會造成缺氮。
在模型壓縮過程中,稀疏化訓(xùn)練的作用是評定各通道的重要程度。在稀疏化訓(xùn)練時,為Darknet 的每個神經(jīng)網(wǎng)絡(luò)層的每個通道都引入縮放因子γ,使其與該通道的輸入相乘,使得每層的各通道提取的特征發(fā)揮不同比重的作用。在訓(xùn)練過程中,對縮放因子γ 添加L1 正則化[19]方法,更新神經(jīng)網(wǎng)絡(luò)中的權(quán)值和縮放因子γ,L1 正則化可以起到通道選擇的作用,使得重要性較低的通道縮放因子γ 盡可能接近零,即對縮放因子γ 進行稀疏化。相應(yīng)地,根據(jù)神經(jīng)網(wǎng)絡(luò)中參數(shù)的變化,引入與γ 相關(guān)的懲罰項,則訓(xùn)練過程中的損失函數(shù)調(diào)整為
YOLOv3 中的每個卷積層后面都添加了批量正則化層(Batch Normlization,BN)[20]減輕輸入數(shù)據(jù)的變化造成的模型權(quán)值震蕩,從而促進模型收斂,其對輸出數(shù)據(jù)的處理過程可以表示為
1)不使用BN 層,僅添加通道縮放因子。該情況下相當于經(jīng)過了卷積核和縮放因子的兩次線性變換,總體效果相當于一次線性變換,因此不可行。
2)在BN 層前和卷積層后添加通道縮放因子。該情況下通道縮放因子的作用會被BN 層中的非線性轉(zhuǎn)換過程抵消,因此不可行。
實際上,BN 層中的縮放因子γ 實際上就是對該層中各個通道的輸出的結(jié)果進行的線性轉(zhuǎn)換,其取值本身就決定了該通道在特征選擇中起到的作用大小?;谝陨戏治?,稀疏化訓(xùn)練過程直接將BN層中的縮放因子γ 作為通道縮放因子進行訓(xùn)練迭代。
通道剪枝就是根據(jù)稀疏化訓(xùn)練的結(jié)果對網(wǎng)絡(luò)的結(jié)構(gòu)進行精簡。剪枝之后模型的性能會有所下降,通過參數(shù)微調(diào)可補償性能的下降部分。
2.3.1 全局剪枝閾值
在對模型進行稀疏化訓(xùn)練之后,得到如圖3(a)所示的通道縮放因子值,此時的縮放因子γ 的分布是稀疏的,即大量通道的縮放因子的值接近于零。引入一全局閾值,使得低于該閾值的通道剪除,即將該通道上的輸入輸出連接和卷積核全部刪去。閾值的確定方式是在代碼中設(shè)定一百分比nprune-g,舍去比例為nprune-g的通道,即閾值為一動態(tài)值。該方法在剪枝過程中可能出現(xiàn)的問題是當nprune-g設(shè)置過大時,會有部分縮放因子足夠大的值也會被舍去;當nprune-g設(shè)置過小時,會有部分處在稀疏位置上的通道被保留下來。在實驗中,通過不斷調(diào)節(jié)nprune-g的取值在保證檢測精度的情況下盡可能壓縮模型。
圖3 通道剪枝過程示意圖
2.3.2 卷積層局部閾值
在剪枝過程中,為防止將部分將用于特征提取的卷積核成體系地刪除,使得模型向粗粒度壓縮的方向演進導(dǎo)致欠擬合。因此,本方法引入局部變量作為卷積層的安全閾值,在第i 個卷積神經(jīng)網(wǎng)絡(luò)層中,只有縮放因子低于才會被減除,保證卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)完整性。與全局變量的確定方式相同,由局部百分比nprune-l計算確定。實際上,僅具有理論意義,即特征選擇的理論臨界值。實際編程中,剪枝操作對模型的壓縮規(guī)模依靠超參數(shù)nprune-g、nprune-l來實現(xiàn)。
在圖3(a)中,第i 層卷積層中標紅的通道2 中縮放因子接近于零,意味著經(jīng)過自學(xué)習(xí)的模型認為該通道所提取的特征對目標的識別和分類幾乎沒有意義,經(jīng)過剪枝操作之后,該通道被刪去,剪枝之后的卷積神經(jīng)網(wǎng)絡(luò)模型如圖3(b)所示。該通道上的卷積核及其參數(shù)將不會被保存,達到壓縮模型的效果。
2.3.3 對跳躍連接結(jié)構(gòu)的處理
YOLOv3 使用Darknet 作為提取特征的基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò),Darknet 具有類似殘差網(wǎng)絡(luò)[15-16]的跳躍連接的結(jié)構(gòu),在剪枝過程中需要保證本體特征圖和殘差特征圖融合通道的一致性。
在如圖4 所示的殘差結(jié)構(gòu)中,作為跳躍連接的起點,卷積層i 的輸出通道數(shù)量不會直接影響殘差模塊的輸出通道數(shù),該層的剪枝操作不受約束;在殘差結(jié)構(gòu)中,1×1 卷積核矩陣使本體特征圖P(xi)與第i+1 層的輸出xi+2的通道數(shù)量保持一致。其行數(shù)與xi相同,列數(shù)與第i+2 層的卷積核矩陣相同。兩者的獨立剪枝操作使得通道特征不再匹配,造成剪枝后的模型性能退化。因此,應(yīng)當保證兩者的剪枝結(jié)果相同。鑒于跳躍連接對深層網(wǎng)絡(luò)中的性能的巨大提升作用,將用于生成本體特征圖的1×1 卷積核矩陣的剪枝結(jié)果作為其與殘差模塊中第i+2 層中共同的剪枝結(jié)果,將本體特征圖P(xi)與殘差特征圖xi+2的特征進行對應(yīng)通道相加匹配。
圖4 殘差結(jié)構(gòu)剪枝
將壓縮之后的模型命名為prun-YOLOv3,壓縮之后的模型對典型遙感目標的識別和分類精度將不可避免地有所下降,對剪枝之后的目標檢測模型在此進行訓(xùn)練,即對參數(shù)進行微調(diào),彌補剪枝造成的精度下降。
本文根據(jù)DOTA 數(shù)據(jù)集制作了典型遙感目標數(shù)據(jù)集。DOTA 數(shù)據(jù)集[21]是由武漢大學(xué)夏桂松團隊基于谷歌地球圖像制作的多源遙感目標數(shù)據(jù)集,共15 個類別,2 806 張圖片,圖片大小為800~4 000 個像素不等,目標實例數(shù)多達188 282,分為訓(xùn)練集和驗證集。首先對數(shù)據(jù)集進行尺寸歸一化,將所有的遙感圖片裁剪為800×800 大小,并對數(shù)據(jù)標簽相應(yīng)的變換,對于裁剪過程中造成的目標割裂問題,設(shè)定閾值0.7,若裁剪后的目標與原始目標的重合度超過0.7,則將其判定為目標并進行坐標轉(zhuǎn)換,否則將其舍棄,最后將其轉(zhuǎn)化為COCO 格式,選其中的飛機、船舶、港口、橋梁和儲油罐作為典型目標,并添加機場標簽,抽取對應(yīng)類別的圖片和數(shù)據(jù)標簽文件,將其命名為DOTA_COCO,共包含13 682 張圖片,其中,訓(xùn)練集10 210 張,測試集3 472 張。
本文設(shè)置5 組全局壓縮率作為對比,分別取nprune-g=0.5、0.75、0.85、0.9、0.95,意為對模型的參數(shù)壓縮率為0.5、0.75、0.85、0.9 和0.95,取nprune-g=0.9,即保證每個卷積層中至少有10%的通道得以保留,而不至于整個卷積層都被去除;首先對YOLOv3 在DOTA 數(shù)據(jù)集上進行訓(xùn)練,將訓(xùn)練好的YOLOv3 模型作為待壓縮模型。對于壓縮后的模型,分別以平均精確率(mAP)、BFLOPS、圖片推理速度、參數(shù)量和模型文件的大小評價。其中,BFLOPS 表示每次卷積運算需要多少個10 億次浮點運算,計算量越小,BFLOPS 也就越??;圖片處理速度的衡量標準是測試時平均對每張圖片檢測識別所耗費的時間。5 種全局壓縮率設(shè)置下,首先對模型在不壓縮的情況下在DOTA_COCO 數(shù)據(jù)集上進行稀疏化訓(xùn)練,然后根據(jù)權(quán)值大小進行剪枝,最后對剪枝后得到的prun-YOLOv3 模型再次在DOTA_COCO 數(shù)據(jù)集上進行訓(xùn)練,以微調(diào)保留參數(shù)的值,稀疏化訓(xùn)練和微調(diào)參數(shù)值時,基礎(chǔ)網(wǎng)絡(luò)部分[18]的初始學(xué)習(xí)率為0.001,預(yù)測網(wǎng)絡(luò)部分[18]的初始學(xué)習(xí)率為0.01,優(yōu)化方法均采用隨機梯度下降法,動量參數(shù)為0.9,學(xué)習(xí)率衰減值為0.001,批量歸一化的批量大小為16,每次訓(xùn)練均迭代次數(shù)為25 000 次。將該過程循環(huán)4次,使用得到的精簡模型對DOTA_COCO 測試集中的圖片進行檢測識別效果測試,將4 次實驗中表現(xiàn)最好的模型保存為壓縮模型。其實驗結(jié)果如下頁表1 所示。
實驗結(jié)果表明,隨著模型壓縮率的增加,BFLOPS、參數(shù)量和模型大小均有大幅度的下降,圖片推理速度顯著增加,代價是平均精確率出現(xiàn)下降,其中壓縮率為50%時,對遙感目標的檢測識別精度反而出現(xiàn)了輕微的上升,之后模型壓縮率越大,檢測與識別精度下降的幅度越大,但是其下降幅度也是有限的,在壓縮率為90 %時,其平均精確率仍可以達到80.9%,高于原版YOLOv3 的平均精確率,而壓縮率達到95%時,與壓縮率為90%相比,其精度發(fā)生了大幅度的下降,當然其參數(shù)量和模型大小也減小了約36 %,在此過程中,可能會有一部分比較重要的卷積核結(jié)構(gòu)被去除了,因此,可以確定模型的極限壓縮率為90%,此時期精度與不壓縮時相比下降了9.5 %,但是模型大小和計算量(BFLOPS)分別下降了92%和91%。即便對模型的壓縮率僅為50%時,其模型大小和計算量也分別下降了57%和67%,在實際使用過程中,可以根據(jù)具體邊緣設(shè)備的配置,靈活選擇模型壓縮率。因此,基于通道剪枝的目標檢測與識別模型壓縮方法是顯著有效的[22]。
表1 prun-YOLOv3 在DOTA_COCO 數(shù)據(jù)集上的實驗結(jié)果
圖5 展示了prun-YOLOv3 對各類目標檢測識別的效果??偟膩碚f,模型對正常狀態(tài)下的目標檢測識別效果是比較好的,尤其是對小目標的檢測識別表現(xiàn)較佳。如圖片中數(shù)量較多但是目標減小的飛機和艦船,一般可以被正確地定位并分類。該模型還有不足之處,首先是仍然存在著漏檢的情況,如對圖5 中飛機一類的檢測識別中,第2 張圖片中有一架特征尚明顯的飛機沒有被檢測出來;對橋梁一類的檢測識別中,圖片中橋梁的檢測識別效果是對的,但是橋下的船只沒有被檢測到。另一個不足之處是對大范圍目標的定位尚不夠準確。例如對圖5中港口的識別,雖能大致定位并正確識別,但是不同圖片中對港口的定位范圍差別較大,很難將整個港口全部包括進去;又如對橋梁一類目標的檢測識別中,對第3 張圖片中橋梁的定位僅包括了其中一段。總之,本文所提方法已經(jīng)具有了一定的實際應(yīng)用意義,但對于造成上述現(xiàn)象的原因還需要進一步研究。
圖5 prun-YOLOv3 對各類目標的檢測識別效果
本文對基于卷積核剪枝原理,針對以卷積神經(jīng)網(wǎng)絡(luò)為主要組成結(jié)構(gòu)的YOLOv3 算法,提出了一種基于通道剪枝的遙感目標檢測與識別模型的壓縮方法。主要以對各卷積層通道上的卷積核剪枝的方式結(jié)構(gòu)化地減少了參數(shù)量并降低了計算量,實驗結(jié)果表明,以檢測與識別效果的小幅度下降為代價,可以實現(xiàn)去除絕大多數(shù)參數(shù)并大比例地節(jié)省計算資源,為基于卷積神經(jīng)網(wǎng)絡(luò)的遙感目標檢測與識別算法在無人機等邊緣計算設(shè)備上的部署提供了理論支撐。