黃文斌,陳仁文,袁婷婷
南京航空航天大學(xué) 機(jī)械結(jié)構(gòu)力學(xué)及控制國家重點(diǎn)實(shí)驗(yàn)室,南京210016
隨著深度學(xué)習(xí)的發(fā)展,計(jì)算機(jī)視覺被廣泛引用于無人機(jī)等嵌入式移動設(shè)備上。無人機(jī)應(yīng)用范圍廣泛,在航拍、偵查、搜救等場景中發(fā)揮巨大作用。在執(zhí)行這些任務(wù)中,核心的任務(wù)之一就是目標(biāo)檢測,識別通過機(jī)載航拍攝像頭捕捉到圖像中的目標(biāo),對目標(biāo)分類和定位。
利用無人機(jī)進(jìn)行目標(biāo)檢測和其他目標(biāo)檢測任務(wù)相比,面臨著許多挑戰(zhàn):(1)航拍影像不穩(wěn)定性,高度和角度變化大,目標(biāo)尺寸變化大和照明條件變化大。(2)機(jī)載計(jì)算設(shè)備算力低下。(3)精度和和速度難以權(quán)衡。
目前,基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法大致分為兩類:一是雙步目標(biāo)檢測(two stage),首先通過網(wǎng)絡(luò)產(chǎn)生候選區(qū)域,再放進(jìn)卷積模型進(jìn)行分類。如2014年Girshick提出區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)[1](RCNN)、后來又相繼提出Fast R-CNN[2]、Faster R-CNN[3]、R-FCN[4]、Mask R-CNN[5]等。二是基于回歸思想的單步(one stage)目標(biāo)檢測,如2016年Redmon等人提出YOLO網(wǎng)絡(luò)[6],其基本過程為首先將圖片劃為S×S的網(wǎng)格,然后每個(gè)網(wǎng)格負(fù)責(zé)檢測落在該網(wǎng)格中心的目標(biāo)且預(yù)測兩個(gè)邊界框(bounding box)和類別信息,最后在輸出層直接輸出邊界框和類別信息,該算法在Pascal VOC2012數(shù)據(jù)集上mAP達(dá)到63.4%,每秒檢測45幀圖片,此外針對YOLO網(wǎng)絡(luò)目標(biāo)檢測準(zhǔn)確度低的問題研究人員相繼提出SSD[7]、YOLOv2[8]、YOLOv3[9]、YOLOv4[10]、YOLOv5[11]
等。單步目標(biāo)檢測算法特別是YOLO系列檢測算法速度明顯遠(yuǎn)遠(yuǎn)快于雙步目標(biāo)檢測算法,精度稍低于雙步,但仍在可接受范圍內(nèi)[12],受到大多數(shù)工程應(yīng)用青睞。
盡管如此,作為深度卷積網(wǎng)絡(luò)模型,YOLO網(wǎng)絡(luò)仍然過于復(fù)雜,對于無人機(jī)硬件造成一定壓力。為了精簡模型,獲得更加輕量化,運(yùn)算量小,速度更快的模型,模型壓縮的概念被提出來。主要有以下幾種壓縮方向:網(wǎng)絡(luò)剪枝[13]、參數(shù)量化[14]、設(shè)計(jì)輕量化網(wǎng)絡(luò)等。模型剪枝是其中較為成熟的方法,剪枝可以在保證模型性能情況下去除掉網(wǎng)絡(luò)中冗余的參數(shù)量和權(quán)重,降低網(wǎng)絡(luò)的復(fù)雜度,提高泛化能力[15]。
目前剪枝比例最大的方法是Li[16]提出的卷積核剪枝,主要思想是對網(wǎng)絡(luò)輸出精度影響較小的卷積核進(jìn)行枝,通過移除網(wǎng)絡(luò)中那些卷積核以及其所連接的征圖,使網(wǎng)絡(luò)計(jì)算量大幅度降低。2017年,Liu提出通過在BN層添加稀疏因子訓(xùn)練的方法進(jìn)行通道剪枝,將模型的大小壓縮了20倍,在多個(gè)網(wǎng)絡(luò)上取得了不錯的效果[17]。2019年,北理工的Zhang利用在核剪枝和BN稀疏訓(xùn)練,再微調(diào),不斷迭代剪枝的方式,在VisDrone2018無人機(jī)數(shù)據(jù)集上進(jìn)行了測試,浮點(diǎn)運(yùn)算次數(shù)下降了90.8%,參數(shù)量下降了92.0%,與檢測精度相當(dāng)?shù)腨OLOv3相比,但是速度僅僅快了兩倍[18]甚至低于Tiny-YOLOv3。這種方式雖然能夠有效減小模型大小,但是受制于木桶效應(yīng),對速度的提升不大。
本文將在YOLOv3-SPP網(wǎng)絡(luò)基礎(chǔ)上進(jìn)行優(yōu)化,主要創(chuàng)新點(diǎn)如下:
(1)優(yōu)化損失函數(shù),將焦點(diǎn)損失(GIoU)代替平方和作為定位誤差,提升目標(biāo)定位精度。
(2)新的數(shù)據(jù)增強(qiáng)方式。對數(shù)據(jù)集特定類別降采樣處理,一定程度上解決類別不均衡問題。引入隨機(jī)拼接(RICAP)場景組合的訓(xùn)練方式同時(shí)提升精度和訓(xùn)練效率。
(3)在迭代剪枝基礎(chǔ)上,加入層剪枝,對模型的殘差層進(jìn)行修剪,減小前向推理層數(shù),進(jìn)一步縮小模型并提升推理速度。最終剪枝厚的模型參數(shù)量下降97%,速度提升近3倍,精度和速度均超過最新的YOLOv5輕量模型。
YOLOv3是YOLO系列第三代網(wǎng)絡(luò),相比前兩代有了很多改進(jìn)。主要在于,以Darknet-53作為基礎(chǔ)網(wǎng)絡(luò),去掉了全連接層,大量使用殘差(Residual Network)跳層連接,每一個(gè)最小的卷積層,由卷積操作、批標(biāo)準(zhǔn)化(Batch Normalization)和Leaky-Relu激活函數(shù)組成。使用卷積下采樣操作代替池化層使之成為了一個(gè)全卷積網(wǎng)絡(luò)。最終在3個(gè)尺寸(13×13、26×26、52×52)上輸出目標(biāo)物體的預(yù)測。
YOLOv3-SPP網(wǎng)絡(luò)在YOLOv3的基礎(chǔ)上在第五、六層卷積之間增加了一個(gè)SPP模塊[19],如圖1。這個(gè)模塊主要是由兩個(gè)不同的池化操作組成,借鑒了空間金字塔的思想,提取局部特征和全局特征,可以提升模型的感受野,有利于待檢測數(shù)據(jù)集中目標(biāo)大小差異較大的情況,實(shí)驗(yàn)中對檢測的精度上有了很大的提升。
圖1 YOLOv3-SPP網(wǎng)絡(luò)Fig.1 YOLOv3-SPP network
原始的YOLOv3中利用平方損失MSE作為損失函數(shù)來進(jìn)行目標(biāo)框坐標(biāo)位置的回歸。直接計(jì)算回歸框和原始框的坐標(biāo)差,但是不同質(zhì)量的預(yù)測結(jié)果,利用MSE評價(jià)指標(biāo)有時(shí)候并不能區(qū)分開來。本文采取廣義交并比(GIoU)[20]作為回歸框定位損失。除了和IOU類似的尺度不變性,在回歸框和真實(shí)框沒有良好對齊時(shí),會導(dǎo)致最小封閉凸面面積增大,從而使GIoU的值變小,而兩個(gè)矩形框不重合時(shí),依然可以計(jì)算GIoU,一定程度客觀的衡量了兩個(gè)框的位置關(guān)系。
數(shù)據(jù)增強(qiáng)(Data Augumentation)是常用的提高網(wǎng)絡(luò)訓(xùn)練效果的方法,可以擴(kuò)充樣本、防止過擬合。常見的增強(qiáng)方式有對圖片進(jìn)行翻轉(zhuǎn)、旋轉(zhuǎn)、縮放、均衡化等。近年比較新的增強(qiáng)方式還有如隨機(jī)擦除(Ramdom Erasing)[21]和Cutout[22]。
本文采用VisDrone2019數(shù)據(jù)集,VisDrone2019數(shù)據(jù)集由天津大學(xué)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘?qū)嶒?yàn)室的AISKYEYE團(tuán)隊(duì)收集。由各種安裝在無人機(jī)上的攝像頭捕獲,涵蓋了廣泛的方面,包括位置、環(huán)境、物體和密度等。VisDrone2019相 比2018多了1 580張test-chanllenge標(biāo)注圖片[17],本文只采取訓(xùn)練集(6 471)和驗(yàn)證集(548)進(jìn)行所有的訓(xùn)練和驗(yàn)證。
圖2 (a)展示了數(shù)據(jù)集中10個(gè)不同類別目標(biāo)總數(shù)統(tǒng)計(jì)情況,可以看出類別數(shù)量及其不均衡,其中行人(類別0)和轎車(類別3)數(shù)量遠(yuǎn)遠(yuǎn)超過其他類別,三輪車(類別6,7)和公交車(類別8)數(shù)量非常小。和道路上出現(xiàn)的真實(shí)目標(biāo)出現(xiàn)比例相符合,這也是航拍數(shù)據(jù)集較普遍問題。類別不均衡容易導(dǎo)致不同類別精度差異,訓(xùn)練后的模型預(yù)測結(jié)果更加偏向于數(shù)量較多的類別。
圖2 (b)對數(shù)據(jù)集中目標(biāo)框大小的分布情況進(jìn)行了可視化,圖2(c)是目標(biāo)出現(xiàn)位置分布可視化圖。從兩圖可以看出,目標(biāo)框大小不均,小目標(biāo)數(shù)量大,目標(biāo)出現(xiàn)位置集中與圖片的中間。
圖2 數(shù)據(jù)集統(tǒng)計(jì)Fig.2 Original datasets visulaization
數(shù)據(jù)集類別不均衡和大量密集小目標(biāo)使VisDrone成為了難度很大的數(shù)據(jù)集。
針對航拍數(shù)據(jù)集的缺陷,采用加權(quán)隨機(jī)采樣(Weighted Random Sampling)[23]。總流程如圖3(a)所示。按照對類別樣本數(shù)的影響不同可分為過采樣[24]和欠采樣[25]兩大類。過采樣通過增加少數(shù)類樣本使其與多數(shù)類樣本數(shù)相同以實(shí)現(xiàn)各類別分布均勻。與過采樣相反,欠采樣是通過減少多數(shù)類樣本來達(dá)到類別間的相對均衡。加權(quán)隨機(jī)采樣根據(jù)樣本權(quán)重采樣,可同時(shí)對特定類別進(jìn)行過采樣和欠采樣。
圖3 數(shù)據(jù)增強(qiáng)流程圖Fig.3 Flow of data enhancement
首先進(jìn)行數(shù)據(jù)擴(kuò)增和清洗。數(shù)據(jù)集中最大為1 1 920×1 080分辨率圖片,每張圖以步長為200分辨率,滑動窗口大小為640×640分辨率大小剪裁成多張小圖。一張1 920×1 080大圖最多可以剪裁成12張小圖。并刪除掉其中不包含目標(biāo)的圖片。最終訓(xùn)練集由6 471擴(kuò)增到56 710個(gè)。
再對每個(gè)數(shù)據(jù)進(jìn)行加權(quán)。為了提高少數(shù)類樣本比例,根據(jù)圖2(a)統(tǒng)計(jì)結(jié)果,10個(gè)類別中對于少數(shù)類別2,6,7,8,9的目標(biāo)較大權(quán)重0.15,多數(shù)目標(biāo)0,3較小權(quán)重0.05。按照標(biāo)簽計(jì)算每個(gè)樣本數(shù)據(jù)權(quán)重:
其中,Ki為類別權(quán)重,Ni為對應(yīng)類別目標(biāo)框數(shù)目,w為該樣本總的權(quán)重。
按照加權(quán)隨機(jī)采樣算法[26],步驟如下:
(1)對于集合V中的元素vi∈V,選取均勻分布的隨機(jī)數(shù)ui=rand(0,1),計(jì)算元素特征
(2)將集合按ki排序,選取前m大的元素。
本例中,集合V為數(shù)據(jù)集,vi為樣本,wi為式(1)得出的樣本權(quán)重,ki就是采樣的分?jǐn)?shù)。
由于裁切步長不大,避免遺漏圖片信息,加權(quán)隨機(jī)采樣后數(shù)據(jù)集類別數(shù)目分布如圖3(b)所示。相比原始數(shù)據(jù)(圖2(a)),目標(biāo)類別比例得到一定平衡。
隨機(jī)圖像裁剪和修補(bǔ)(RICAP[26])方法對于圖片分類任務(wù)有著不錯的效果,將四幅用于分類的圖片拼成一張,對于用Softmax激活函數(shù)分類的CNN網(wǎng)絡(luò)起到了標(biāo)簽平滑(Label Smoothing)的效果,RICAP在CIFAR-10上實(shí)現(xiàn)了2.19%的測試提升。
本文借鑒RICAP[26]方法,將RICAP用于目標(biāo)檢測。將不同場景圖片組合在一起,提升模型魯棒性和精度。主要包含如下步驟:
(1)隨機(jī)生成切分四張圖片的中心點(diǎn)坐標(biāo)(xc,yc)將圖片分成左上、右上、左下、右下角大小不同四個(gè)部分。
(2)從訓(xùn)練集中隨機(jī)選取四張圖片,進(jìn)行隨機(jī)翻轉(zhuǎn)、旋轉(zhuǎn)、縮放等基本的數(shù)據(jù)增強(qiáng)。
(3)將四張圖片放置于四個(gè)角上。對于圖片大于分割部分情況:對圖片進(jìn)行裁切,使之布滿整個(gè)角。對于圖片小于分割部分:對多余部分進(jìn)行零填充。
(4)批訓(xùn)練時(shí),隨機(jī)拼接的圖片按照批(Batch)大小成批訓(xùn)練,如圖4。每一個(gè)批都將由隨機(jī)拼接的圖片組成。每張訓(xùn)練圖片樣本包含密集的不同場景的目標(biāo),樣本隨機(jī)性和場景多樣性得以提高。批標(biāo)準(zhǔn)化時(shí),每層可以計(jì)算來自4×BatchSize張圖片的激活統(tǒng)計(jì),效率提升四倍,這讓BatchSize的設(shè)置可以大大降低,節(jié)省顯存。相比不用組合增強(qiáng)方式訓(xùn)練,效率大大提升,收斂速度加快,精度提升。
圖4 隨機(jī)場景組合示意Fig.4 Ramdom scene combination
YOLOv3以Darknet53作為基礎(chǔ)網(wǎng)絡(luò),相比前兩代參數(shù)量大大增加,一般訓(xùn)練完權(quán)重接近250 Mb。其中大量的計(jì)算主要來自卷積運(yùn)算,卷積運(yùn)算的目的在于提取到更多的特征,網(wǎng)絡(luò)層次越深能夠挖掘的特征也就越多。而對于目標(biāo)類別需求較少的任務(wù),或者小樣本的數(shù)據(jù)集,卷積運(yùn)算存在大量“冗余”。由此產(chǎn)生了一個(gè)很大的模型壓縮方向——稀疏化網(wǎng)絡(luò),在不同結(jié)構(gòu)層次上稀疏化。權(quán)重剪枝的主要原理是剪掉鏈接中不重要的小的權(quán)重,一般用于全連接層,然而這種方式一般需要專門的稀疏矩陣運(yùn)算庫和硬件做加速,對于內(nèi)存節(jié)省也非常有限。而通道剪枝直接剪掉不重要的卷積核和相應(yīng)的特征圖,不需要額外的硬件加速就能起到良好的運(yùn)存節(jié)省和加速效果。因此,本文采取通道剪枝中壓縮效果最好的——基于BN層的通道剪枝策略[27]。
總的壓縮方案如圖5所示。首先進(jìn)行初始預(yù)訓(xùn)練收斂到較高的精度。再通過BN層γ做比例因子進(jìn)行稀疏訓(xùn)練,模型通過學(xué)習(xí)衡量每個(gè)通道的重要程度。隨后按照設(shè)定剪枝比例剪掉不重要的通道,即卷積核和相應(yīng)的特征圖,模型寬度收窄。本文初始設(shè)定70%剪枝比例,迭代后最終達(dá)到97%剪枝比例。在通道剪枝基礎(chǔ)上,每個(gè)殘差層比例因子之和排序,衡量殘差層的重要程度,并剪掉一定數(shù)目殘差層。模型前向推理層數(shù)減小,最后微調(diào)恢復(fù)精度。整個(gè)流程可以進(jìn)行循環(huán)迭代。每一輪迭代中殘差層的修剪是可選項(xiàng),在圖中用虛線表示。
圖5 模型壓縮方案Fig.5 Flow of model compression
稀疏訓(xùn)練是剪枝最重要的一步。它的主要思想是在卷積網(wǎng)絡(luò)中下一個(gè)卷積之前給每一個(gè)通道乘一個(gè)權(quán)值γ,并加入損失函數(shù)聯(lián)合訓(xùn)練,在訓(xùn)練過程中,通過梯度下降網(wǎng)絡(luò)自動學(xué)習(xí)調(diào)整這些權(quán)值,不重要的通道權(quán)值將會趨近于0。剪枝時(shí),權(quán)值按照大小排序,根據(jù)設(shè)定的比例將小權(quán)值對應(yīng)的卷積核和特征圖都剪掉,如圖6所示。
圖6 BN層通道剪枝示意圖Fig.6 Diagram of channel sparse
基于BN層的稀疏方法最為常用,批標(biāo)準(zhǔn)化(Batch Normalization,BN)是廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的優(yōu)化方法,可以提高訓(xùn)練效率和模型的泛化能力。原理如
第n層卷積層特征圖 BN層稀疏因子 第n+1層卷積層特征圖式(1),μΒ和σΒ分別是每個(gè)批的均值和方差,γ和β是歸一化平移和縮放的參數(shù)。利用γ作為縮放因子不引入額外參數(shù),并且YOLOv3-SPP每個(gè)卷積層都有BN層,利用BN層的參數(shù)γ作為稀疏訓(xùn)練的縮放因子[23]可以起到稀疏效果,并且不會帶來額外的花銷。
將γ添加到損失函數(shù)進(jìn)行優(yōu)化。其中(x,y)是訓(xùn)練輸入和目標(biāo),W是網(wǎng)絡(luò)中可訓(xùn)練參數(shù),第一項(xiàng)是原始損失函數(shù),g(γ)是在縮放因子上的懲罰項(xiàng),γ是兩項(xiàng)的平衡因子,選擇L1正則化方法:g(γ)=|γ|
稀疏訓(xùn)練過程,損失函數(shù)中稀疏比例因子λ的大小影響稀疏速度,因子越大,稀疏速度迅速,BN層比例因子迅速收縮接近0。但是可能帶來損失函數(shù)大小升高,精度下降迅速和過擬合。本文取λ=0.005進(jìn)行稀疏訓(xùn)練,如圖7展示了稀疏訓(xùn)練過程各指標(biāo)變化曲線,由此可見稀疏速度可觀,精度在訓(xùn)練之后得到較大恢復(fù)。
圖8 、圖9展示了稀疏前后BN層γ值分布變化。稀疏訓(xùn)練前,BN層γ值分布大致呈現(xiàn)正態(tài)分布,均值在1附近。稀疏后每一層γ值大幅減小到0.1以下,許多層γ的收縮到接近0。這些小值對應(yīng)的通道就是模型通過訓(xùn)練學(xué)習(xí)得出的“不重要的通道”。
稀疏訓(xùn)練之后,對BN層所有γ值絕對值從大到小排序,人為設(shè)定一個(gè)全局剪枝比例決定哪些因子對應(yīng)通道進(jìn)行修剪,修剪掉該因子對應(yīng)的卷積核和特征圖。本文選取初始70%通道剪枝比,后續(xù)循環(huán)剪枝后達(dá)到了97%。除了對主干網(wǎng)絡(luò)中普通的卷積層進(jìn)行剪枝,本文同時(shí)對殘差結(jié)構(gòu)的卷積層進(jìn)行剪枝。跨層連接的殘差結(jié)構(gòu)包含兩層,一層1×1卷積,隨后3×3的卷積。對第一層的通道剪枝不影響和主干網(wǎng)絡(luò)維度匹配。對于第二層卷積層,本文通過取后面相連的卷積層修剪的通道取并集后剪枝,剪掉這些通道,不影響和之后的卷積層維度匹配。
Darknet53網(wǎng)絡(luò)中存在大量殘差跳層可有效防止梯度消失,降低過擬合并且增加魯棒性。但仍然存在一定冗余,剪掉對精度影響不大。由此在通道剪枝之后,近一步剪掉一定數(shù)目殘差連接層。針對每一個(gè)殘差層結(jié)構(gòu)第一個(gè)卷積層進(jìn)行評價(jià),對各層γ求和再進(jìn)行大小排序,按照設(shè)定的剪層數(shù)目,對于排名靠后的,剪掉整個(gè)殘差。為了不影響SPP模塊完整性,只剪掉主干網(wǎng)絡(luò)的殘差連接部分。
主干網(wǎng)絡(luò)總共有23處殘差,每剪掉一個(gè)殘差同時(shí)剪掉它里面兩個(gè)卷積層,即總共有69個(gè)層可以剪。本文嘗試剪掉了12個(gè)殘差層,總共剪36層。因?yàn)橹苯蛹舻艟矸e層和連接層相當(dāng)于直接減少了向前推理的層數(shù),模型由113層變成71層,通過測試推理速度確實(shí)能夠得到較大提升。
本文訓(xùn)練和測試環(huán)境為:谷歌GPU云計(jì)算平臺,使用NVIDIA Tesla P100-PICIE顯卡,顯存大小16 GB,采用Pytorch框架。
本文采取平均精度(mAP)、準(zhǔn)確率、召回率、F1值、FPS作為評價(jià)指標(biāo)。其中F1值是對準(zhǔn)確率和召回率的綜合得分,計(jì)算方式為:
準(zhǔn)確率和召回率越大越好,因此F1值越大模型性能越好。
模型測試的置信度閾值選取0.001,IOU閾值選取0.5,無批處理,單張圖片測試。
從表1各模型性能測試對比結(jié)果和圖10數(shù)據(jù)增強(qiáng)和GIoU訓(xùn)練過程曲線對比可以看出,GIoU損失函數(shù)改進(jìn)使模型(YOLOv3-SPP-G)的總體性能有了很大的優(yōu)化。以GIoU作損失模型精度相比原始MSE損失模型(YOLOv3-SPP-M)在三個(gè)分辨率下mAP分別上漲了6.4、9和9.5個(gè)百分點(diǎn),F(xiàn)1值也有全面提升,平均上漲8個(gè)百分點(diǎn)。從圖10訓(xùn)練曲線對比也可看出,GIoU定位損失訓(xùn)練過程中收斂更快,相比原始MSE損失訓(xùn)練效率更高。
圖10 MSE,GIoU,GIoU+數(shù)據(jù)增強(qiáng)訓(xùn)練過程曲線對比Fig.10 Training curve of MSE,GIoU and GIoU+data enhancement
表1 文中所有模型性能測試對比Table 1 Evaluation results of baseline model and pruned models
再對比未使用本文數(shù)據(jù)增強(qiáng)的YOLOv3-SPP-G和采用本文數(shù)據(jù)增強(qiáng)模型(YOLOv3-SPP-GR),采用增強(qiáng)訓(xùn)練的模型測試性能進(jìn)一步提升。640和832分辨率大小mAP上漲4.2個(gè)百分點(diǎn),F(xiàn)1值也有大約3.2個(gè)百分點(diǎn)的提升。
從圖10訓(xùn)練過程曲線看,用GIOU做定位損失的模型精確率(Precision)和召回率(Recall)都有提升,F(xiàn)1和mAP也同時(shí)提升。說明GIoU損失確實(shí)能有效規(guī)范預(yù)測框的位置,從而整體上讓定位精度更高。采用本文數(shù)據(jù)增強(qiáng)方案的模型,在準(zhǔn)確率上幾乎沒有提升,也就是正確分類和定位的能力沒有提升,而召回率有所增加,說明模型能找到檢測出目標(biāo)的能力提升了。結(jié)合兩個(gè)改進(jìn)后的YOLOv3-SPP模型在各個(gè)指標(biāo)都超過最新的YOLOv5s和YOLOv5m模型。
本文展示兩個(gè)通道剪枝比例結(jié)果,分別為70%剪枝比例的小壓縮比模型(YOLOv3-SPP-GR70-s12)和97%剪枝的大壓縮比模型(YOLOv3-SPP-GR97-s12),最模型測試結(jié)果數(shù)據(jù)如表1所示,為了對比剪殘差層的效果,70%壓縮分別有剪層(YOLOv3-SPP-GR70)和不剪層版本(YOLOv3-SPP-GR70-s12)。
圖11 為表中各壓縮模型性能數(shù)據(jù)直方圖比較結(jié)果,直觀地展示了640分辨率下各壓縮模型評價(jià)效果。通道剪枝和剪殘差層后模型無論是參數(shù)量、FLOPS、模型大小都得到大幅壓縮。其中剪枝97%結(jié)合剪12層殘差后的模型大小為10 Mb,壓縮到原始的4.1%。參數(shù)量為2.7 Mb,減小為原始的4.3%,甚至比YOLOv5s更小。
在性能上,相比壓縮剪層之前,大壓縮比模型mAP僅下降了約2%,小壓縮比模型則下降更少。各分辨率下精度依然均高于YOLOv5兩個(gè)最新模型。對比YOLOv3-SPP-GR70和YOLOv3-SPP-GR70-s12剪 層 和不剪層結(jié)果發(fā)現(xiàn),各性能指標(biāo)不降反升。說明剪掉一定數(shù)量模型殘差連接并不會影響性能表現(xiàn),反而在某些數(shù)據(jù)集上達(dá)到正向效果。
在前向推理速度上,剪層和不剪層對速度影響較大。對比YOLOv3-SPP-GR70和YOLOv3-SPP-GR70-s12,剪掉12層就達(dá)到了通道剪枝70%的同等以上的加速效果。壓縮后模型速度大幅提升。97%壓縮和剪層后的模型推理速度大約是原始模型3倍,其中416分辨率達(dá)到167 FPS,同樣超過了YOLOv5s(116 FPS)以及
YOLOv5m(83 FPS)。修剪,進(jìn)一步縮減了模型大小,減小了前向推理層數(shù)和參數(shù),在實(shí)驗(yàn)中該方法能獲得較大加速效果。是一個(gè)實(shí)用的保證精度下的輕量化方法。但由于網(wǎng)絡(luò)寬度木桶效應(yīng),加速效果沒有隨著參數(shù)量的大幅減小而同等比例增加,仍需要進(jìn)一步研究。
本文基于YOLOv3-SPP網(wǎng)絡(luò),針對航拍數(shù)據(jù)集類別不平衡和密集小目標(biāo)等問題,提出類別均衡化和隨機(jī)場景組合的數(shù)據(jù)增強(qiáng)訓(xùn)練方法,提升了訓(xùn)練效率和模型精度。針對無人機(jī)等算力低下設(shè)備,提出一種改進(jìn)模型壓縮輕量化方法。在通道剪枝的基礎(chǔ)上,結(jié)合對殘差層的