侯 鑫 曲國(guó)遠(yuǎn) 魏大洲 張佳程
1(中國(guó)科學(xué)院計(jì)算技術(shù)研究所 北京 100190)
2(中國(guó)航空無(wú)線電電子研究所 上海 200241)
3(北京郵電大學(xué)信息與通信工程學(xué)院 北京 100876)
(houxin@ict.ac.cn)
隨著無(wú)人機(jī)(unmanned aerial vehicle, UAV)技術(shù)的成熟,配備攝像頭和嵌入式系統(tǒng)的無(wú)人機(jī)已被廣泛應(yīng)用于各個(gè)領(lǐng)域,包括農(nóng)業(yè)、安防與監(jiān)視[1]、航空攝影[2]和基礎(chǔ)設(shè)施檢查[3]等.這些應(yīng)用要求無(wú)人機(jī)平臺(tái)能夠感知環(huán)境,理解分析場(chǎng)景并作出相應(yīng)的反應(yīng),其中最基礎(chǔ)的功能就是目標(biāo)自動(dòng)高效檢測(cè).基于深度網(wǎng)絡(luò)的目標(biāo)檢測(cè)器[4-8]通過(guò)卷積神經(jīng)網(wǎng)絡(luò)自動(dòng)提取圖像特征,大大提高了目標(biāo)檢測(cè)的性能.按照有沒(méi)有利用候選區(qū)域,目標(biāo)檢測(cè)主要分為兩大陣營(yíng):基于候選區(qū)域檢測(cè)陣營(yíng)與不基于候選區(qū)域檢測(cè)陣營(yíng)(如CornerNet[9],CenterNet[10]等).基于候選區(qū)域檢測(cè)陣營(yíng)根據(jù)候選框處理手段又可以分為2階段目標(biāo)檢測(cè)(如R-CNN(region convolutional neural network)[11-13],R-FCN(region-based fully convolutional network)[14]等)和1階段目標(biāo)檢測(cè)(如YOLO(you only look once)[15-17],SSD(single shot multibox detector)[18],RetinaNet[19]等).
檢測(cè)性能提高的同時(shí)也帶來(lái)了巨大的資源消耗和內(nèi)存占用,這對(duì)計(jì)算能力受限的無(wú)人機(jī)處理平臺(tái)來(lái)說(shuō)是不友好的:1)模型大小.深度卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大的特征表達(dá)能力得益于數(shù)百萬(wàn)個(gè)可訓(xùn)練的參數(shù),如VGG-16網(wǎng)絡(luò),參數(shù)數(shù)量1.3億多,需要占用500 MB空間,這對(duì)嵌入式設(shè)備來(lái)說(shuō)是很大的資源負(fù)擔(dān).2)計(jì)算量.深度卷積神經(jīng)網(wǎng)絡(luò)前向推理的過(guò)程需要執(zhí)行大量的浮點(diǎn)運(yùn)算,VGG-16(visual geometry group)網(wǎng)絡(luò)完成一次圖像識(shí)別任務(wù)需要309億次浮點(diǎn)運(yùn)算,這對(duì)于計(jì)算資源有效的嵌入式設(shè)備來(lái)說(shuō)是巨大的挑戰(zhàn).3)推理時(shí)間.對(duì)于一張高分辨率的輸入圖像來(lái)說(shuō),嵌入式平臺(tái)執(zhí)行深度卷積神經(jīng)網(wǎng)絡(luò)前向推理過(guò)程是非常耗時(shí)的,可能要幾分鐘才能處理一張圖像,這對(duì)于實(shí)時(shí)應(yīng)用來(lái)說(shuō)是不可接受的.
因此,很多研究者通過(guò)模型壓縮方式減小模型復(fù)雜度,減少模型參數(shù)量與計(jì)算量,加快模型前向推理速度.其中比較經(jīng)典的方法包括模型結(jié)構(gòu)優(yōu)化[20-23]、低秩分解[24-25]、模型剪枝[26-27]、模型量化[26,28]、知識(shí)蒸餾[29]等.模型壓縮方法在降低模型參數(shù)量和計(jì)算量的同時(shí),勢(shì)必會(huì)帶來(lái)一定的精度損失.對(duì)于無(wú)人機(jī)場(chǎng)景目標(biāo)檢測(cè)來(lái)說(shuō),如何在保持精度基本無(wú)損的情況下,進(jìn)行最大限度的模型壓縮是關(guān)鍵的.
針對(duì)上述問(wèn)題,本文提出了一種基于迭代稀疏訓(xùn)練的模型壓縮方法,其主要貢獻(xiàn)有3個(gè)方面:
1) 通過(guò)迭代稀疏訓(xùn)練的方式,對(duì)經(jīng)典目標(biāo)檢測(cè)網(wǎng)絡(luò)YOLOv3進(jìn)行通道和層協(xié)同剪枝,可以在保持精度基本無(wú)損的情況下實(shí)現(xiàn)最大限度的模型壓縮;
2) 通過(guò)組合不同數(shù)據(jù)增強(qiáng)方式增加了數(shù)據(jù)集分布的復(fù)雜性和多樣性,結(jié)合一些優(yōu)化手段(Tricks),提高了無(wú)人機(jī)場(chǎng)景下目標(biāo)檢測(cè)網(wǎng)絡(luò)YOLOv3的泛化性能;
3) 實(shí)驗(yàn)證明,該方法對(duì)于無(wú)人機(jī)場(chǎng)景下目標(biāo)檢測(cè)網(wǎng)絡(luò)YOLOv3模型壓縮效果明顯,在保證精度基本無(wú)損的情況下可以實(shí)現(xiàn)最大限度的模型壓縮,而且可以極大地加速模型的前向推理過(guò)程,使得模型實(shí)時(shí)應(yīng)用成為可能.
2013年以前,目標(biāo)檢測(cè)問(wèn)題通過(guò)手工設(shè)計(jì)的特征算子與滑動(dòng)窗口方式解決,處理速度慢、效果不魯棒,難以滿(mǎn)足實(shí)際工業(yè)需求.2014年,Girshick等人[11]提出R-CNN算法,使用深度卷積神經(jīng)網(wǎng)絡(luò)完成對(duì)輸入圖像的特征提取工作,緊接著一系列基于深度卷積神經(jīng)網(wǎng)絡(luò)的檢測(cè)算法出現(xiàn),包括基于2階段的檢測(cè)算法Fast R-CNN[12],F(xiàn)aster R-CNN[13],Mask R-CNN[6],R-FCN[14]等,以及1階段的檢測(cè)算法YOLO[15-17],SSD[18],RetinaNet[19]等.隨著檢測(cè)算法的發(fā)展,研究者們逐漸發(fā)現(xiàn)基于候選區(qū)域的目標(biāo)檢測(cè)存在一定的缺陷,因此出現(xiàn)了不基于候選區(qū)域的目標(biāo)檢測(cè)器,典型的有CornerNet[9],CenterNet[10]等算法.
1.1.1 基于2階段的目標(biāo)檢測(cè)器
基于2階段的目標(biāo)檢測(cè)過(guò)程主要由2部分組成,首先生成包含感興趣區(qū)域的高質(zhì)量候選框,然后通過(guò)進(jìn)一步分類(lèi)與回歸獲得檢測(cè)結(jié)果.R-CNN是2階段檢測(cè)器的基礎(chǔ),首先使用深度網(wǎng)絡(luò)提取圖像特征,然后基于選擇搜索[30]生成候選區(qū)域,最后通過(guò)支持向量機(jī)(support vector machine, SVM)分類(lèi)器對(duì)候選區(qū)特征進(jìn)行分類(lèi)從而得到最終的檢測(cè)結(jié)果.R-CNN不能進(jìn)行端到端訓(xùn)練,隨著網(wǎng)絡(luò)的發(fā)展,逐漸形成了較為成熟的Faster R-CNN檢測(cè)算法,后續(xù)的改進(jìn)和提升基本都是基于Faster R-CNN進(jìn)行的.以R-CNN算法為代表的2階段檢測(cè)器經(jīng)過(guò)不斷的發(fā)展和改善,尤其是加入RPN(region proposal network)[13]結(jié)構(gòu)以后,檢測(cè)精度越來(lái)越高,計(jì)算復(fù)雜度也越來(lái)較高,檢測(cè)速度較慢,難以滿(mǎn)足實(shí)時(shí)應(yīng)用的需求.因此一般計(jì)算能力受限的嵌入式平臺(tái)不會(huì)使用2階段檢測(cè)器進(jìn)行部署應(yīng)用.
1.1.2 基于1階段的目標(biāo)檢測(cè)器
不同于2階段檢測(cè)器,1階段檢測(cè)器不包含候選區(qū)域生成步驟,直接對(duì)預(yù)定義錨框?qū)?yīng)的特征進(jìn)行分類(lèi)和回歸以得到最終的檢測(cè)結(jié)果.這種方法相比2階段檢測(cè)器來(lái)說(shuō)性能有一定的下降,但速度有明顯提升.YOLO[15]首先對(duì)訓(xùn)練樣本聚類(lèi)得到候選框,使用這些預(yù)定義的候選框密集地覆蓋整個(gè)圖像空間位置,然后提取輸入圖像的特征并對(duì)預(yù)定義的候選框進(jìn)行分類(lèi)和回歸.SSD[18]通過(guò)長(zhǎng)寬及長(zhǎng)寬比來(lái)預(yù)定義錨框,為提升1階段檢測(cè)器的性能瓶頸,SSD從多個(gè)尺度特征層出發(fā),同時(shí)對(duì)預(yù)定義的候選框進(jìn)行類(lèi)別概率學(xué)習(xí)以及坐標(biāo)位置回歸,有效提升了檢測(cè)性能.后續(xù)提出的RetinaNet[19]引入focal loss函數(shù)來(lái)解決類(lèi)別不平衡問(wèn)題,1階段檢測(cè)器性能有了進(jìn)一步的提升.
1階段檢測(cè)器中YOLO系列算法運(yùn)行速度非??欤梢赃_(dá)到實(shí)時(shí)應(yīng)用級(jí)別,但精度差強(qiáng)人意.后續(xù)YOLOv2[16],YOLOv3[17]的出現(xiàn),將精度進(jìn)行了大幅提升.特別是YOLOv3,借鑒了ResNet(residual network)[31]的殘差思想和FPN(feature pyramid network)[32]的多尺度檢測(cè)思想,在保持速度優(yōu)勢(shì)的前提下,進(jìn)一步提升了檢測(cè)精度,尤其加強(qiáng)了對(duì)小目標(biāo)的識(shí)別能力.在實(shí)際部署中,由于非常好的速度/精度均衡性和高度的集成性、靈活性,YOLOv3成為工業(yè)界最受歡迎的模型之一.
1.1.3 不基于候選區(qū)域的目標(biāo)檢測(cè)
2階段檢測(cè)器與1階段檢測(cè)器都基于候選框進(jìn)行分類(lèi)與回歸,實(shí)際應(yīng)用中,很多研究者發(fā)現(xiàn)如果候選框設(shè)置不合適,可能影響檢測(cè)器的性能.因此,不基于候選區(qū)域的目標(biāo)檢測(cè)方法被提出,這些方法將目標(biāo)檢測(cè)任務(wù)轉(zhuǎn)換為關(guān)鍵點(diǎn)檢測(cè)與尺寸估計(jì).CornerNet[9]將目標(biāo)檢測(cè)任務(wù)轉(zhuǎn)換為左上角和右下角的關(guān)鍵點(diǎn)檢測(cè)任務(wù);ExtremeNet[33]將目標(biāo)檢測(cè)任務(wù)轉(zhuǎn)換為檢測(cè)目標(biāo)的4個(gè)極值點(diǎn);CenterNet[10]將左上角、右下角和中心點(diǎn)結(jié)合成為三元組進(jìn)行目標(biāo)框的判斷;FoveaBox[34]則借鑒了語(yǔ)義分割思想,對(duì)目標(biāo)上每個(gè)點(diǎn)都預(yù)測(cè)一個(gè)分類(lèi)結(jié)果,物體邊界框通過(guò)預(yù)測(cè)偏移量得到.不基于候選區(qū)域的目標(biāo)檢測(cè)器的成功主要得因于FPN和focal loss結(jié)構(gòu),但與2階段檢測(cè)器和級(jí)聯(lián)方法的檢測(cè)精度仍然有差距,在靈活性和檢測(cè)速度上也沒(méi)有明顯優(yōu)勢(shì).因此,目前工業(yè)部署應(yīng)用不是特別廣泛.當(dāng)然,作為一種新的檢測(cè)思路,隨著方法本身的發(fā)展,相信未來(lái)將會(huì)有更多的應(yīng)用.
在資源有限的設(shè)備上部署深度網(wǎng)絡(luò)模型時(shí),模型壓縮是非常有效的工具,常用的模型壓縮方法主要包括模型結(jié)構(gòu)優(yōu)化[20-23]、低秩分解[24-25]、模型剪枝[26-27]、模型量化[26,28]、知識(shí)蒸餾[29]等.模型結(jié)構(gòu)優(yōu)化是指通過(guò)使用輕量化的網(wǎng)絡(luò)結(jié)構(gòu)來(lái)降低模型計(jì)算量,但這樣會(huì)導(dǎo)致模型表達(dá)能力下降,從而造成性能下降.低秩分解將原始網(wǎng)絡(luò)權(quán)值矩陣當(dāng)作滿(mǎn)秩矩陣,用若干個(gè)低秩矩陣的組合來(lái)替換原來(lái)的滿(mǎn)秩矩陣,低秩矩陣又可以分解為小規(guī)模矩陣的乘積,從而實(shí)現(xiàn)模型壓縮和加速.模型量化主要利用32 b表示權(quán)重?cái)?shù)據(jù)存在的冗余信息,使用更少位數(shù)表示權(quán)重參數(shù),從而實(shí)現(xiàn)模型壓縮和加速.上述2種方法在壓縮率較高時(shí),都面臨精度損失大的問(wèn)題.知識(shí)蒸餾通過(guò)學(xué)生網(wǎng)絡(luò)對(duì)老師網(wǎng)絡(luò)的擬合得到一個(gè)更加緊湊的網(wǎng)絡(luò)結(jié)構(gòu),以再現(xiàn)大型網(wǎng)絡(luò)的輸出結(jié)果.學(xué)生網(wǎng)絡(luò)的選擇與設(shè)計(jì),以及學(xué)習(xí)老師網(wǎng)絡(luò)的哪些信息依然是一個(gè)值得考慮的問(wèn)題.模型剪枝指對(duì)一個(gè)已訓(xùn)練好的高精度復(fù)雜模型,通過(guò)一種有效的評(píng)判手段來(lái)判斷參數(shù)的重要性,將不重要的連接進(jìn)行裁剪以減少參數(shù)冗余,從而實(shí)現(xiàn)模型壓縮和加速.
Denil等人在文獻(xiàn)[35]中提出很多深度卷積神經(jīng)網(wǎng)絡(luò)中存在顯著冗余,僅僅使用很少一部分(5%)權(quán)值就足以預(yù)測(cè)剩余的權(quán)值,因此模型剪枝可以實(shí)現(xiàn)非??捎^的壓縮率.針對(duì)無(wú)人機(jī)場(chǎng)景數(shù)據(jù)集,本文選擇速度/精度均衡的YOLOv3作為基礎(chǔ)檢測(cè)模型,通過(guò)模型剪枝來(lái)進(jìn)行壓縮和加速,以獲得可在算力有限的嵌入式平臺(tái)部署應(yīng)用的快速準(zhǔn)確檢測(cè)模型.
數(shù)據(jù)增強(qiáng)的目標(biāo)是增加輸入圖像的可變性,以使模型對(duì)從不同環(huán)境獲得的圖像具有更高的魯棒性.常用的2種數(shù)據(jù)增強(qiáng)方式包括空間幾何變換與像素顏色變換[36-39],其中圖像平移、旋轉(zhuǎn)、縮放以及圖像亮度、對(duì)比度、飽和度是比較常用的.上述提到的數(shù)據(jù)增強(qiáng)方法都是基于像素級(jí)別的,對(duì)于無(wú)人機(jī)場(chǎng)景下的稠密小目標(biāo)檢測(cè)任務(wù)來(lái)說(shuō)提升作用有限.Kisantal等人在文獻(xiàn)[40]中通過(guò)剪切粘貼方式來(lái)增加小目標(biāo)數(shù)量,該種方法對(duì)稠密分布的小目標(biāo)效果不明顯.此外,一些研究員提出使用多張圖像一起執(zhí)行數(shù)據(jù)增強(qiáng)的方法.Mixup[41]對(duì)任意2張訓(xùn)練圖像進(jìn)行像素混合從而起到正則化效果;Mosaic[42]任意混合4張訓(xùn)練圖像作為一張新的圖像參與訓(xùn)練.這2種方法混合了不同的上下文信息,有效提升了數(shù)據(jù)集的場(chǎng)景復(fù)雜性,從而提升了模型的檢測(cè)性能.本文除了使用基礎(chǔ)的空間幾何變換與像素顏色變換增強(qiáng)方式外,巧妙結(jié)合了Mixup和Mosaic兩種增強(qiáng)方式,進(jìn)一步提升了YOLOv3在無(wú)人機(jī)場(chǎng)景下的檢測(cè)精度.
深度卷積神經(jīng)網(wǎng)絡(luò)主要模塊包括卷積、池化、激活,這是一個(gè)標(biāo)準(zhǔn)的非線性變換模塊.網(wǎng)絡(luò)層數(shù)加深,意味著更好的非線性表達(dá)能力,可以學(xué)習(xí)更加復(fù)雜的變換從而擬合更加復(fù)雜的特征輸入.因此,對(duì)于同一場(chǎng)景數(shù)據(jù)集來(lái)說(shuō),網(wǎng)絡(luò)越復(fù)雜,通常意味擬合能力越強(qiáng),效果越好.而復(fù)雜模型參數(shù)量大,推理速度慢,對(duì)于嵌入式平臺(tái)部署應(yīng)用來(lái)說(shuō)是一個(gè)很大的挑戰(zhàn).文獻(xiàn)[35]還提出這些剩下的權(quán)值甚至可以直接不用被學(xué)習(xí),也就是說(shuō),僅僅訓(xùn)練一小部分原來(lái)的權(quán)值參數(shù)就有可能達(dá)到和原來(lái)網(wǎng)絡(luò)相近甚至超過(guò)原來(lái)網(wǎng)絡(luò)的性能.受此啟發(fā),本文對(duì)一個(gè)特征表達(dá)能力強(qiáng)的復(fù)雜模型通過(guò)迭代稀疏訓(xùn)練的方式,巧妙結(jié)合層剪枝和通道剪枝,在保持檢測(cè)精度的同時(shí),實(shí)現(xiàn)了模型極大比例的壓縮,剪枝流程如圖1所示:
Fig. 1 The process of iterative sparse training圖1 迭代稀疏訓(xùn)練流程圖
在實(shí)際部署應(yīng)用中,由于非常好的速度、精度均衡和高度的集成性、靈活性,YOLO系列模型成為最受歡迎的模型之一.YOLOv3借鑒了ResNet[31]的殘差思想和FPN[32]的多尺度檢測(cè)思想,在保持速度優(yōu)勢(shì)的前提下,進(jìn)一步提升了檢測(cè)精度,尤其加強(qiáng)了對(duì)小目標(biāo)的識(shí)別能力.如圖2所示為YOLOv3網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)由大量1×1卷積、3×3卷積與殘差結(jié)構(gòu)組成,我們把每個(gè)這樣的結(jié)構(gòu)作為一個(gè)單元稱(chēng)為CR塊.在檢測(cè)部分,YOLOv3引入了特征金字塔的思想,采用3個(gè)不同尺度的特征圖進(jìn)行檢測(cè),以應(yīng)對(duì)目標(biāo)尺度變化大的問(wèn)題.本文基礎(chǔ)模型基于YOLOv3進(jìn)行,相比Zhang等人在文獻(xiàn)[43]中基于YOLOv3-SPP3(spatial pyramid pooling)開(kāi)展的工作,同樣剪枝率下本文模型參數(shù)量更少,推理速度更快,精度更高.
Fig. 2 The network structure of YOLOv3圖2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
數(shù)據(jù)增強(qiáng)是目標(biāo)檢測(cè)中常用的不需要增加太多訓(xùn)練成本但可以有效提升模型性能的方法.Mixup[41]是一種新的數(shù)據(jù)增強(qiáng)策略,通過(guò)對(duì)任意2張訓(xùn)練圖像進(jìn)行像素混合來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)起到正則化的效果,可以提高網(wǎng)絡(luò)對(duì)空間擾動(dòng)的泛化能力,有助于提升檢測(cè)精準(zhǔn)率.Rosenfeld等人在文獻(xiàn)[44]中做過(guò)一個(gè)非常有趣的實(shí)驗(yàn),稱(chēng)為“房間里的大象”,將包含大象的補(bǔ)丁圖像隨機(jī)放置在自然圖像上,使用現(xiàn)有的物體檢測(cè)模型進(jìn)行檢測(cè),發(fā)現(xiàn)效果并不理想.Zhang等人在文獻(xiàn)[45]方案中將Mixup應(yīng)用于目標(biāo)檢測(cè),有效提升了模型對(duì)“房間里的大象”現(xiàn)象的魯棒性.如式(1)所示為YOLOv3損失函數(shù):
(1)
增加了Mixup數(shù)據(jù)增廣策略之后YOLOv3的損失函數(shù)為:
(2)
Mosaic[42]是另一種有效的多張圖像混合的數(shù)據(jù)增強(qiáng)方法,通過(guò)混合4張不同圖像的上下文信息,有效提升數(shù)據(jù)集的場(chǎng)景復(fù)雜性,有助于提升檢測(cè)召回率.假設(shè)混合后的圖像分辨率為S×S,首先創(chuàng)建一個(gè)2S×2S的大圖,則混合圖像的中心點(diǎn)坐標(biāo)xc,yc~U[S×0.5,S×1.5],隨機(jī)從訓(xùn)練集中選取4張圖像,原圖像坐標(biāo)換算得到混合圖像,然后中心裁剪得到最終的增強(qiáng)圖像.混合圖像左上、右上、左下和右下4張圖像坐標(biāo)范圍為
左上角坐標(biāo):
ximg1_start,yimg1_start,ximg1_end,yimg1_end=
max(xc-wimg1,0),max(yc-himg1,0),xc,yc;
右上角坐標(biāo):
ximg2_start,yimg2_start,ximg2_end,yimg2_end=xc,
max(yc-himg2,0),min(xc+wimg2,2×S),yc;
左下角坐標(biāo):
ximg3_start,yimg3_start,ximg3_end,yimg3_end=
max(xc-wimg3,0),yc,xc,min(yc+himg3,2×S);
右下角坐標(biāo):
ximg4_start,yimg4_start,ximg4_end,yimg4_end=xc,yc,
min(xc+wimg4,2×S),min(yc+himg4,2×S).
(3)
其中,x,y,w,h分別表示圖像的橫縱坐標(biāo)、寬和高.
Mixup通過(guò)任意2張圖像的像素混合可以有效提升檢測(cè)精準(zhǔn)率,Mosaic通過(guò)任意4張圖像拼接混合可以有效提升檢測(cè)召回率,本文將Mixup和Mosaic這2種數(shù)據(jù)增強(qiáng)策略進(jìn)行巧妙結(jié)合,獲得了檢測(cè)精準(zhǔn)率和召回率的大幅提升.在訓(xùn)練時(shí),首先加載batchsize張訓(xùn)練圖像,然后對(duì)每張圖像按照一定概率選擇數(shù)據(jù)增強(qiáng)策略,其中包含只進(jìn)行Mixup增強(qiáng)、只進(jìn)行Mosaic增強(qiáng)、同時(shí)進(jìn)行Mixup和Mosaic增強(qiáng)與Mixup和Mosaic增強(qiáng)都不執(zhí)行這4種方式.需要特別注意的是在選擇與其他圖像結(jié)合時(shí),需要從batch以外的圖像中選擇.對(duì)batch中的每張圖像都執(zhí)行上述操作,直至最后得到新生成的batchsize張?jiān)鰪?qiáng)圖像參與模型訓(xùn)練,上述組合增強(qiáng)策略為
dataaug=a1mixup+a2mosaic+
a3(mixup+mosaic)+a4None.
(4)
模型剪枝通過(guò)對(duì)高精度復(fù)雜模型進(jìn)行冗余參數(shù)修剪,從而得到計(jì)算量和參數(shù)量有效降低的輕量化模型.除了2.2節(jié)提到的數(shù)據(jù)增強(qiáng)策略外,本文參考He等人在文獻(xiàn)[46]方案中的設(shè)置,在YOLOv3訓(xùn)練過(guò)程中加入了相關(guān)優(yōu)化方法,其中包括多尺度訓(xùn)練、大的批處理尺寸、熱啟動(dòng)、余弦學(xué)習(xí)率衰減法(cos lr decay)、標(biāo)簽平滑(label smooth)等,有效提高了模型的精度.將該模型作為剪枝基準(zhǔn)模型,依次通過(guò)迭代稀疏、層剪枝、微調(diào)與迭代稀疏、通道剪枝、微調(diào)(finetune)的過(guò)程,最終得到了不同剪枝比例的可部署模型,剪枝流程如圖1所示.
2.3.1 稀疏訓(xùn)練
模型剪枝需要選擇可評(píng)估權(quán)重重要性的指標(biāo)來(lái)剪枝不重要的結(jié)構(gòu).本文采用批歸一化層(batch normalization, BN)中的縮放因子γ的絕對(duì)值度量權(quán)重的重要程度.BN層的標(biāo)準(zhǔn)化公式為
(5)
其中,μ和σ2為統(tǒng)計(jì)參數(shù),分別表示批處理中數(shù)據(jù)的均值和方差;γ和β為可訓(xùn)練參數(shù),分別對(duì)歸一化分布進(jìn)行縮放與平移,從而保留原始學(xué)習(xí)到的特征.基于BN層原理,縮放系數(shù)γ主要用來(lái)保留歸一化操作前的特征,因此可以作為評(píng)估權(quán)重重要程度的指標(biāo)因子.
如果權(quán)重分布不稀疏將不利于模型剪枝,需要通過(guò)外力強(qiáng)制稀疏化,L1正則化約束是常用的稀疏化方法.加入L1正則后YOLOv3的損失函數(shù)為:
(6)
其中,?為正則化系數(shù),平衡2個(gè)損失項(xiàng)之間的關(guān)系.由于添加的L1正則項(xiàng)梯度不是處處存在的(在0點(diǎn)導(dǎo)數(shù)不存在),因此我們使用次梯度下降[27]作為L(zhǎng)1正則項(xiàng)的優(yōu)化方法.
2.3.2 層剪枝
如圖2所示為YOLOv3的標(biāo)準(zhǔn)網(wǎng)絡(luò)結(jié)構(gòu),特征提取部分由大量1×1卷積、3×3卷積與殘差結(jié)構(gòu)構(gòu)成,我們把每個(gè)這樣的結(jié)構(gòu)作為一個(gè)單元稱(chēng)為CR塊.實(shí)際剪枝操作過(guò)程中,為保證YOLOv3結(jié)構(gòu)完整,CR塊作為一個(gè)整體參與.YOLOv3結(jié)構(gòu)中一共有23個(gè)CR單元,權(quán)重重要程度統(tǒng)計(jì)時(shí),我們選擇CR單元的均值作為評(píng)估剪枝與否的指標(biāo),剪掉均值較低的單元.層剪枝是一種非常粗糙的剪枝方法,按照單元裁剪的方式可能會(huì)帶來(lái)較大的精度損失,因此實(shí)際剪枝過(guò)程中我們通過(guò)觀察γ的變化趨勢(shì)設(shè)置需要剪枝的CR單元比例,通常不會(huì)一次剪掉太多,每次迭代按照50%的概率進(jìn)行剪枝.通過(guò)稀疏訓(xùn)練-層剪枝-微調(diào)的迭代過(guò)程,保證每次剪掉一些CR單元后,其精度損失可以通過(guò)微調(diào)補(bǔ)償回來(lái).圖3為層剪枝后的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖,具體剪枝參數(shù)設(shè)置見(jiàn)3.3節(jié).
Fig. 3 The network structure of YOLOv3 after pruning圖3 YOLOv3剪枝后的網(wǎng)絡(luò)結(jié)構(gòu)
2.3.3 通道剪枝
層剪枝之后我們得到了相對(duì)穩(wěn)定的網(wǎng)絡(luò)結(jié)構(gòu),此時(shí)通過(guò)通道剪枝對(duì)其進(jìn)行進(jìn)一步修剪.首先需要定義全局剪枝率λ,表示需要剪枝的通道數(shù)占總通道數(shù)的比例,同時(shí)可以換算出全局剪枝率λ對(duì)應(yīng)γ的閾值π1.為防止通道剪枝時(shí)某些層被全部剪掉,需要另外設(shè)置一個(gè)保護(hù)閾值β,表示每層中至少需要保留多少比例的通道,同理也可以換算出每層中對(duì)應(yīng)γ的閾值π2.當(dāng)且僅當(dāng)γ<π1,γ<π2同時(shí)滿(mǎn)足時(shí),該通道可以剪枝.直接使用較大的剪枝率會(huì)損失較多的精度,因此通道剪枝時(shí)我們通過(guò)分析稀疏訓(xùn)練后γ的分布,按照30%的比例設(shè)置參數(shù)量剪枝率并迭代執(zhí)行稀疏、通道剪枝、微調(diào)的過(guò)程,使得由于剪枝帶來(lái)的精度下降可以通過(guò)微調(diào)補(bǔ)償回來(lái),從而得到精度損失較小的輕量化模型.
2.3.4 微 調(diào)
在執(zhí)行完一次層剪枝或通道剪枝后,或多或少都會(huì)帶來(lái)精度損失,一定程度的精度損失可以通過(guò)后續(xù)的微調(diào)補(bǔ)償回來(lái).本文我們是通過(guò)迭代稀疏訓(xùn)練進(jìn)行剪枝的,因此在每一次剪枝之后必須通過(guò)微調(diào)來(lái)補(bǔ)償剪枝帶來(lái)的精度損失,才能不影響下一次迭代的稀疏訓(xùn)練.
本文提出了一種基于迭代稀疏訓(xùn)練的模型剪枝方法.實(shí)驗(yàn)證明,該方法可以獲得精度和速度兼?zhèn)涞臋z測(cè)模型.其中,模型訓(xùn)練環(huán)境均基于Pytorch框架,服務(wù)器配置為Intel?Xeon?CPU E5-2640 v4@2.40 GHz,128GRAM,4塊GTX 1080 Ti.
VisDrone-DET2019[47]是一個(gè)典型的無(wú)人機(jī)目標(biāo)檢測(cè)應(yīng)用數(shù)據(jù)集.該數(shù)據(jù)集包含8 599張來(lái)自無(wú)人機(jī)平臺(tái)從不同高度、不同光照條件下收集的圖像,涉及包含人、車(chē)在內(nèi)的10個(gè)類(lèi)別(pedestrian,person,car,van,bus,truck,motor,bicycle,awning-tricycle,tricycle),是一個(gè)非常有挑戰(zhàn)的數(shù)據(jù)集.其中訓(xùn)練集6 471張、驗(yàn)證集548張、測(cè)試集1 580張,由于測(cè)試集標(biāo)注未開(kāi)放下載,因此本文中模型都是基于訓(xùn)練集訓(xùn)練、驗(yàn)證集評(píng)估的.
模型評(píng)估標(biāo)準(zhǔn)與文獻(xiàn)[43]中保持一致,我們主要評(píng)估輸入分辨率為608×608像素下模型的參數(shù)量、計(jì)算量(floating-point operations, FLOPS)、交并比(intersection over union, IOU)在0.5下的精度度量指標(biāo)F1-score和平均精度均值(mean average precision,mAP)以及模型壓縮中涉及的參數(shù)量壓縮率、計(jì)算量壓縮率等指標(biāo).為更全面地評(píng)估輕量化模型在不同分辨率下的性能,我們選取計(jì)算量壓縮率為85%的模型與文獻(xiàn)[43]中模型進(jìn)行對(duì)比分析,實(shí)驗(yàn)證明我們的算法在達(dá)到與文獻(xiàn)[43]中同等壓縮率的情況下可以獲得更高的精度與更快的速度.
本文模型訓(xùn)練環(huán)境基于Pytorch框架展開(kāi),采用動(dòng)量0.9、權(quán)重衰減因子0.000 5的隨機(jī)梯度下降(stochastic gradient descent, SGD)權(quán)重更新策略;正常訓(xùn)練迭代次數(shù)為300epoch,初始學(xué)習(xí)率為0.002 5,分別在240epoch和270epoch衰減10倍;稀疏訓(xùn)練和微調(diào)的迭代次數(shù)為100epoch,初始學(xué)習(xí)率為0.001,分別在80epoch和90epoch衰減10倍;批處理大小為128;損失函數(shù)中α,β,γ分別設(shè)置為3.31,52.0,42.4;數(shù)據(jù)增強(qiáng)策略中α1,α2,α3,α4按照等概率設(shè)置為0.25;多尺度訓(xùn)練設(shè)置圖像大小變化區(qū)間為[416,896];稀疏因子根據(jù)γ分布設(shè)置為0.01~0.08之間.
3.3.1 數(shù)據(jù)增強(qiáng)
數(shù)據(jù)增強(qiáng)是一種成本很低卻可以有效提升模型性能的方法.除了常規(guī)使用的增強(qiáng)方法外,本文結(jié)合了Mixup和Mosaic的優(yōu)勢(shì),有效提升了檢測(cè)精準(zhǔn)率和召回率,增強(qiáng)效果如圖4所示:
Fig. 4 The effect of data enhancement圖4 數(shù)據(jù)增強(qiáng)效果圖
為獲得好的基準(zhǔn)模型,我們通過(guò)數(shù)據(jù)增強(qiáng)策略與優(yōu)化手段共同對(duì)YOLOv3標(biāo)準(zhǔn)模型進(jìn)行了優(yōu)化.表1中前兩行分別表示Zhang等人在文獻(xiàn)[43]中的測(cè)試結(jié)果,行3表示YOLOv3標(biāo)準(zhǔn)網(wǎng)絡(luò)測(cè)試結(jié)果,行4~6分別表示單獨(dú)加入Mixup增強(qiáng)策略、單獨(dú)加入Mosaic增強(qiáng)策略以及Mixup和Mosaic結(jié)合策略的測(cè)試結(jié)果,最后一行表示加入相關(guān)優(yōu)化手段的測(cè)試結(jié)果.我們可以看到不論使用Mixup策略還是Mosaic策略都可以提升mAP指標(biāo),此外Mixup和Mosaic隨機(jī)組合的策略對(duì)mAP的提升要比單獨(dú)執(zhí)行時(shí)效果更好.表1最后一行不論mAP還是F1-score都有很大的提升,雖然未加SPP[48]模塊,但通過(guò)數(shù)據(jù)增強(qiáng)策略與相關(guān)優(yōu)化手段可以達(dá)到甚至優(yōu)于YOLOv3-SPP3的結(jié)果,而且參數(shù)量和計(jì)算量更少.
Table 1 Test Results Comparison of Benchmark Model表1 基準(zhǔn)模型測(cè)試結(jié)果比較
3.3.2 剪 枝
基準(zhǔn)模型獲得后,我們通過(guò)迭代稀疏訓(xùn)練的方式進(jìn)行模型剪枝.圖5為層剪枝稀疏訓(xùn)練過(guò)程中CR單元γ均值變化曲線圖,其中實(shí)線表示基準(zhǔn)模型CR單元γ均值曲線,虛線表示稀疏訓(xùn)練后模型CR單元γ均值曲線.從圖5中可以明顯發(fā)現(xiàn),模型越靠前的層γ均值越大,越靠后的層γ均值越小.隨著迭代的進(jìn)行,γ均值會(huì)逐漸變小,但不改變層之間的相對(duì)大小關(guān)系,而且越靠后的層越接近0,說(shuō)明針對(duì)當(dāng)前數(shù)據(jù)集來(lái)說(shuō),越靠后的層對(duì)模型性能貢獻(xiàn)越小,因此會(huì)在層剪枝過(guò)程中被剪枝.隨著剪枝過(guò)程的進(jìn)行,其稀疏訓(xùn)練過(guò)程也會(huì)變得越來(lái)越難,層剪枝難度增大,直至達(dá)到一定的結(jié)構(gòu)平衡,如圖3所示,完成層剪枝過(guò)程.
Fig. 5 The scale factor change curve of CR module圖5 CR單元縮放因子變化曲線圖
標(biāo)準(zhǔn)YOLOv3模型一共含有72個(gè)BN層,如圖6所示為通道剪枝過(guò)程中稀疏訓(xùn)練前后γ統(tǒng)計(jì)直方圖分布.對(duì)比圖6(a)(b)的2張圖可以明顯地看到,稀疏訓(xùn)練后γ數(shù)據(jù)分布直方圖變得更細(xì)更尖了,意味著接近于0的γ值變得更多了,而較大的γ值變少了,也即γ數(shù)據(jù)分布更加稀疏,有利于通道剪枝的實(shí)現(xiàn).
Fig. 6 The γ statistics histogram before and after channel pruning sparse training圖6 通道剪枝稀疏訓(xùn)練前后γ統(tǒng)計(jì)直方圖
表2表示不同剪枝率下的模型壓縮性能對(duì)比,其中YOLOv3_baseline表示本文剪枝前的基準(zhǔn)模型,YOLOv3_prune_70(85,90)分別表示計(jì)算量剪枝率為70%,85%,90%的模型,與文獻(xiàn)[43]工作中的SlimYOLOv3-SPP3-50(90,95)一一對(duì)應(yīng).在計(jì)算量達(dá)到同等剪枝率甚至更高剪枝率的條件下,我們的方法對(duì)參數(shù)量的壓縮率更高,而且精度誤差更低.特別是對(duì)于計(jì)算量壓縮率為85%時(shí),參數(shù)量壓縮率達(dá)到97.3%,比文獻(xiàn)[43]方案中的87.48%高了將近10%.此外,mAP誤差只有0.3,相比文獻(xiàn)[43]方案中提升了2.4個(gè)點(diǎn).
為了與文獻(xiàn)[43]方案中結(jié)果進(jìn)行更公平全面的對(duì)比,表3針對(duì)計(jì)算量85%壓縮率水平進(jìn)行了416×416,608×608,832×832這3個(gè)分辨率的性能對(duì)比,不出意料,不論mAP指標(biāo)還是F1-score指標(biāo),我們的方法都取得了巨大的提升.圖7展示了608×608輸入分辨率下剪枝前后的檢測(cè)效果圖,可以看到剪枝前后都能檢測(cè)到絕大多數(shù)感興趣目標(biāo),而且剪枝前后誤差很小.
Table 2 Comparison of Model Compression Performance Under Different Pruning Rates表2 不同剪枝率下的模型壓縮性能對(duì)比
Table 3 Comparison of Model Compression Performance Under Different Resolutions
Fig. 7 Test result of model before and after pruning圖7 剪枝前后結(jié)果圖
本文通過(guò)數(shù)據(jù)增強(qiáng)策略與相關(guān)優(yōu)化手段的巧妙結(jié)合,得到了一個(gè)性能較好的基準(zhǔn)模型.通過(guò)迭代稀疏訓(xùn)練的模型壓縮方法,對(duì)上述基準(zhǔn)模型進(jìn)行了極大程度的參數(shù)量壓縮與計(jì)算量壓縮.與現(xiàn)有典型方法[43]相比,本文提出的方法在未添加額外計(jì)算量(SPP模塊)的情況下,得到了精度更高的基準(zhǔn)模型;同時(shí)通過(guò)迭代稀疏層剪枝與迭代稀疏通道剪枝相結(jié)合的方法,在達(dá)到同等計(jì)算量剪枝率的情況下,參數(shù)量更少,精度損失更小,適合在計(jì)算資源受限的無(wú)人機(jī)平臺(tái)部署應(yīng)用.模型壓縮是生成性能較好的輕量化模型的常用方法,如何保證在一定精度損失的條件下進(jìn)一步降低計(jì)算量和參數(shù)量仍然是一個(gè)值得深度研究的課題.當(dāng)前方法只驗(yàn)證了YOLOv3網(wǎng)絡(luò)在VisDrone-DET2019數(shù)據(jù)集上的壓縮性能,下一步我們將對(duì)其他典型檢測(cè)網(wǎng)絡(luò)與數(shù)據(jù)集做進(jìn)一步驗(yàn)證和推廣,以提高方法的普適性.
作者貢獻(xiàn)聲明:侯鑫參與代碼開(kāi)發(fā)、實(shí)驗(yàn)測(cè)試、數(shù)據(jù)分析、論文攥寫(xiě)與修改等工作;曲國(guó)遠(yuǎn)、魏大洲參與實(shí)驗(yàn)環(huán)境搭建、代碼開(kāi)發(fā)、實(shí)驗(yàn)測(cè)試等工作;張佳程參與數(shù)據(jù)分析等工作.