劉 軍,張艷迪
(沈陽理工大學(xué) 自動化與電氣工程學(xué)院,沈陽 110159)
ResNet等深層網(wǎng)絡(luò)的出現(xiàn)使圖像檢測的精度和速度大幅度提升,深層的網(wǎng)絡(luò)結(jié)構(gòu)更容易學(xué)習(xí)到目標(biāo)的抽象語義特征。He K等[1]提出的殘差結(jié)構(gòu),解決了深層神經(jīng)網(wǎng)絡(luò)出現(xiàn)的網(wǎng)絡(luò)退化和梯度消失問題。隨著網(wǎng)絡(luò)層數(shù)加深,卷積層得到的目標(biāo)特征變少,需要同時增加網(wǎng)絡(luò)的通道數(shù)和分辨率讓深層的網(wǎng)絡(luò)獲得更多的目標(biāo)特征信息。但對網(wǎng)絡(luò)深度、通道數(shù)和分辨率的改變,會帶來大量的參數(shù)運算,增加了計算成本。Tan M等[2]提出一個復(fù)合系數(shù)φ,同時對網(wǎng)絡(luò)深度、通道數(shù)和分辨率進(jìn)行縮放,在有限的計算資源下,網(wǎng)絡(luò)運算效率更高。本文將Efficient-B0網(wǎng)絡(luò)[2]和YOLOv3中的檢測網(wǎng)絡(luò)[3]相結(jié)合,改進(jìn)的輕量級網(wǎng)絡(luò)可以應(yīng)用到移動端設(shè)備;實驗結(jié)果表明,提出的基于輕量級特征提取網(wǎng)絡(luò)Efficient-B0與FPN多尺度融合的目標(biāo)檢測和識別算法,與基于Darknet53主干網(wǎng)絡(luò)的YOLOv3相比,參數(shù)量少4倍,檢測精度僅下降了0.2%,檢測速度更快,并且擁有更好的魯棒性。
卷積神經(jīng)網(wǎng)絡(luò)是由多個卷積和多個全連接層疊加組成,中間包含激活函數(shù)和池化層等操作。圖1是單通道灰度圖片的卷積過程,圖片以矩陣的形式輸入,卷積核的通道數(shù)與輸入圖片的通道數(shù)一致。彩色圖片的通道數(shù)為3,卷積后的輸出是把3個通道拼接在一起作為一個特征向量。卷積層通常用來提取特征,全連接層是把高維的特征向量轉(zhuǎn)換為一維的向量作為輸出,池化層用來降低維度去除冗余的信息。為更好的擬合數(shù)據(jù),每層之間的輸出都要經(jīng)過激活函數(shù)的非線性轉(zhuǎn)換,這樣可增強(qiáng)神經(jīng)網(wǎng)絡(luò)的魯棒性。
圖1 單通道卷積過程
目標(biāo)檢測和識別分為兩個部分,一部分用來做特征提取的主干網(wǎng)絡(luò),另一部分是目標(biāo)的定位和分類。VGG-16[4]、ResNet、Darknet53等網(wǎng)絡(luò)結(jié)構(gòu)常被用來做目標(biāo)檢測的特征提取器,其共同特點是網(wǎng)絡(luò)層數(shù)都很深,ResNet網(wǎng)絡(luò)甚至可以搭建到一千多層。神經(jīng)網(wǎng)絡(luò)被認(rèn)為每一層能提取不同的目標(biāo)特征,網(wǎng)絡(luò)越深提取的特征越多,不同層次間組合信息也越多。深層的網(wǎng)絡(luò)有更強(qiáng)的擬合和表達(dá)能力,目標(biāo)檢測的精度也越高。One-stage系列的目標(biāo)檢測算法YOLOv3的特征提取網(wǎng)絡(luò)是Darknet53,在Darknet53網(wǎng)絡(luò)中借鑒VGG-16和ResNet網(wǎng)絡(luò)中的優(yōu)點,用殘差塊和小型卷積搭建了53層的全卷積網(wǎng)絡(luò),Darknet53的網(wǎng)絡(luò)結(jié)構(gòu)組成如圖2所示。
圖2 Darknet53網(wǎng)絡(luò)結(jié)構(gòu)
在Darknet53網(wǎng)絡(luò)中用卷積層代替了池化層減少了參數(shù)量,殘差塊通過短接結(jié)構(gòu)解決了深層的神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中網(wǎng)絡(luò)退化和梯度消失的問題。BatchNormal(BN)層可以加快網(wǎng)絡(luò)訓(xùn)練的收斂速度,對每一層輸入的數(shù)據(jù)做均值為0、標(biāo)準(zhǔn)差為1的批量歸一化處理,降低網(wǎng)絡(luò)訓(xùn)練的復(fù)雜度和過擬合風(fēng)險。
目標(biāo)檢測算法在追求檢測精度和定位準(zhǔn)確的同時也要考慮計算成本。在計算資源充足的條件下,復(fù)雜的大型網(wǎng)絡(luò)檢測速度和精度會有大幅度提升。深層的神經(jīng)網(wǎng)絡(luò)能提取到更多的特征信息,同樣,提高輸入圖片的分辨率和增加卷積神經(jīng)網(wǎng)絡(luò)的通道數(shù)可以捕捉目標(biāo)的細(xì)粒度。任意調(diào)節(jié)網(wǎng)絡(luò)的深度、通道數(shù)和分辨率的參數(shù),是非常繁瑣的過程,還會帶來大量的參數(shù)和卷積運算,增加了計算成本。Tan M等[2]提出對網(wǎng)絡(luò)的深度、寬度和分辨率通過一個復(fù)合參數(shù)φ均勻的對網(wǎng)絡(luò)模型進(jìn)行縮放,公式為
深度:d=αφ
(1)
寬度:w=βφ
(2)
分辨率:r=γφ
(3)
s.t.α·β2·γ2≈2(α≥1,β≥1,γ≥1)
式中:d、w、r分別代表網(wǎng)絡(luò)的深度、寬度和分辨率,常量α、β、γ是對應(yīng)d、w、r的調(diào)節(jié)參數(shù)。計算機(jī)運算中FLOPS(每秒浮點運算次數(shù))與d、w2、r2成正比,將復(fù)合參數(shù)φ固定為1,在計算資源是現(xiàn)有網(wǎng)絡(luò)所占用資源兩倍的情況下,令α·β2·γ2≈2,得到網(wǎng)絡(luò)結(jié)構(gòu)Efficient-B0。Efficient-B0的網(wǎng)絡(luò)結(jié)構(gòu)組成如表1所示,由移動翻轉(zhuǎn)瓶頸卷積模塊(Mobile Inverted Bottleneck Convolution,MBConv)、卷積層、全局平均池化層和全連接層構(gòu)成,MBConv6代表擴(kuò)張比例為6的逐點卷積,k3×3/2代表卷積核的大小為3×3,步長為2。Efficient-B0在參數(shù)量上比常見的特征提取主干網(wǎng)絡(luò)減少2~5倍,網(wǎng)絡(luò)計算的效率得到提升。本文采用Efficient-B0網(wǎng)絡(luò)代替Darknet 53主干網(wǎng)絡(luò)作為特征提取器,在目標(biāo)檢測精度相差無幾的情況下,改進(jìn)的目標(biāo)檢測算法需要的計算資源更小。
表1 Efficient-B0的網(wǎng)絡(luò)結(jié)構(gòu)
小目標(biāo)特征數(shù)量比較少,隨著神經(jīng)網(wǎng)絡(luò)的加深,小目標(biāo)的特征會丟失,出現(xiàn)檢測精度低和漏檢的問題。淺層的神經(jīng)網(wǎng)絡(luò)能學(xué)習(xí)到小目標(biāo)的更多特征,用特征金字塔(Feature Pyramid Network,F(xiàn)PN)模型[5]把淺層的特征通過通道的變換加到深層的網(wǎng)絡(luò),將不同尺度下的特征圖拼接在一起,提高對小目標(biāo)檢測的準(zhǔn)確性。
本文采用Efficient-B0作為主干網(wǎng)絡(luò),去掉了網(wǎng)絡(luò)結(jié)構(gòu)中的池化層和全連接層;用YOLOv3檢測網(wǎng)絡(luò)中的三個尺度(13×13,26×26,52×52),對目標(biāo)進(jìn)行預(yù)測和分類;檢測網(wǎng)絡(luò)中13×13的尺度用來預(yù)測大目標(biāo),26×26的尺度用來預(yù)測中等目標(biāo),52×52的尺度用來預(yù)測小目標(biāo)。特征融合過程如圖3所示。多尺度特征融合的步驟如下。
(1)把Efficient-B0主干網(wǎng)絡(luò)中階段9輸出13×13特征圖放到13×13的尺度上進(jìn)行目標(biāo)分類預(yù)測;
(2)把Efficient-B0主干網(wǎng)絡(luò)中階段6輸出26×26特征圖,與13×13特征圖通過線性插值方法2倍上采樣得到的特征圖拼接,在26×26的尺度上進(jìn)行目標(biāo)分類預(yù)測;
(3)把Efficient-B0主干網(wǎng)絡(luò)中階段4輸出52×52特征圖,與26×26特征圖通過2倍上采樣得到的特征圖拼接,在52×52的尺度上進(jìn)行目標(biāo)分類預(yù)測。
圖3 FPN特征融合的過程
為提高目標(biāo)檢測的速度和準(zhǔn)確性,需要先在預(yù)測階段生成候選框,然后對候選框做回歸和非極大值抑制計算,篩選與真實框重合度最高的候選框。在Faster R-CNN中,VGG-16骨架網(wǎng)絡(luò)輸出h×w大小的特征圖,對特征圖上每個點設(shè)置3個尺寸和3種縱橫比共9個候選框,特征圖上每個點映射到原圖中是一塊區(qū)域[6],如圖4所示。
圖4 特征圖與輸入圖片的對應(yīng)關(guān)系
Faster R-CNN是對候選框中心坐標(biāo)(x,y)和長寬(h,w)四個位置坐標(biāo)相對于真實標(biāo)記框位置的偏移量進(jìn)行預(yù)測,這比直接預(yù)測框的位置坐標(biāo)學(xué)習(xí)起來更容易。事實上,神經(jīng)網(wǎng)絡(luò)可以自己學(xué)習(xí)調(diào)節(jié)候選框的大小,假設(shè)輸入圖片中的目標(biāo)個數(shù)比較少,人為設(shè)定每個特征圖對應(yīng)的點要生成9個候選框,候選框的篩選會增加網(wǎng)絡(luò)運算的時間。
本文用K-means聚類方式通過VOC2007訓(xùn)練集上真實標(biāo)記框的數(shù)據(jù)自動生成候選框。首先對訓(xùn)練集中的真實標(biāo)記框的長和寬做歸一化處理,隨機(jī)選取K個真實標(biāo)記框的長和寬作為聚類的初始值,多次迭代計算,直到候選框與真實框之間的交并比(Intersection Over Union,IOU)值改變量很小,本文中K的取值為9。在VOC數(shù)據(jù)集中人和車占的比例較高,自動生成候選框的形狀多數(shù)為瘦高型;實驗得到候選框尺寸為(8×20)、(16×54)、(33×23)、(30×130)、(65×45)、(59×181)、(114×60)、(160×205)、(380×310)。K-means聚類生成的候選框在定義位置時,與Faster R-CNN中的候選框不同,不采用相對于真實框偏移量的方式,因為此方法對偏移量的程度沒有約束,候選框可以移動到圖片上的任意一點。本文將輸入的圖片劃分為S×S個網(wǎng)格[7],基于每個網(wǎng)格的偏移量定位候選框的位置[8],為防止候選框在圖片上隨意移動,通過Sigmoid函數(shù)約束候選框的移動范圍,公式為
bx=σ(tx)+cx
(4)
by=σ(ty)+cy
(5)
bw=pwetw
(6)
bh=pheth
(7)
式中:cx和cy是候選框的中心坐標(biāo);pw和ph分別代表候選框的寬和高;預(yù)測值tx和ty通過約束函數(shù)與候選框中心坐標(biāo)相加,得到目標(biāo)邊界框的中心坐標(biāo)bx和by;目標(biāo)邊界框的寬度bw和高度bh是pw和ph與ex相乘得到的。
圖5中虛線代表的是候選框,定義候選框是從每個網(wǎng)格的左上角移動,實線框是候選框通過位置回歸得到的最終的目標(biāo)邊界框。
圖5 候選框的位置回歸
為增強(qiáng)網(wǎng)絡(luò)對任意尺寸圖片檢測的魯棒性,對訓(xùn)練集中的圖片通過數(shù)據(jù)增強(qiáng)的方式進(jìn)行旋轉(zhuǎn)和縮放。實驗在VOC2007和VOC2012數(shù)據(jù)集上聯(lián)合訓(xùn)練,兩個數(shù)據(jù)集中共選取15000張圖片,包含20類,人和車的圖片數(shù)量占比最高。訓(xùn)練過程中,每10個批次隨機(jī)換一次輸入圖片的尺寸,下采樣總步長為32;輸入圖片的分辨率為32的倍數(shù),最大的輸入分辨率為480×480,最小的輸入分辨率為224×224。多尺度訓(xùn)練過程中只改變輸入圖片的尺寸;Efficient-B0主干網(wǎng)絡(luò)各層輸出的特征圖維度相同。
采用兩種不同的主干網(wǎng)絡(luò)Darknet 53及Efficient-B0進(jìn)行目標(biāo)檢測識別實驗,其中測試集分別來自于4952張VOC2007測試集和手機(jī)相機(jī)采集的1000張自制測試集;兩個測試集中目標(biāo)的類別都為20類,人的圖片占總數(shù)量的總測試集的40%,其他種類都比較平均。
為提高小目標(biāo)的檢測精度,采用Efficient-B0作為特征提取網(wǎng)絡(luò),再利用FPN結(jié)構(gòu)進(jìn)行特征融合;預(yù)測階段使用YOLOv3的基于候選框回歸方法。實驗結(jié)果如表2所示。通過表2對比發(fā)現(xiàn),兩個不同主干網(wǎng)絡(luò)的目標(biāo)檢測精度(AP-50)相差僅為0.2%,但改進(jìn)網(wǎng)絡(luò)Efficient-B0比Darknet53網(wǎng)絡(luò)的參數(shù)量要小4倍,運行速度也有所提高。Darknet53網(wǎng)絡(luò)的計算量是Efficient-B0網(wǎng)絡(luò)的8倍。
表2 不同主干網(wǎng)絡(luò)結(jié)構(gòu)的實驗結(jié)果對比
圖6是采用兩種網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行目標(biāo)檢測的結(jié)果對比圖,圖6a和圖6c是Darknet53為主干網(wǎng)絡(luò)的檢測結(jié)果;圖6b和圖6d是Efficient-B0結(jié)合FPN模塊的檢測結(jié)果;由圖6可以看出,對于密集目標(biāo)和小目標(biāo)的檢測,Efficient-B0的效果更好。
圖6 目標(biāo)檢測和識別的實驗結(jié)果
通過將輕量級的移動網(wǎng)絡(luò)Efficient-B0和YOLOv3目標(biāo)檢測算法結(jié)合,在有限的計算資源條件下,不僅降低了網(wǎng)絡(luò)結(jié)構(gòu)的參數(shù)量,提高了運行效率,而且還充分發(fā)揮了YOLOv3的實時檢測的技術(shù)優(yōu)勢。在對小目標(biāo)進(jìn)行檢測識別時,Efficient-B0與多尺度融合模塊FPN結(jié)構(gòu)相結(jié)合,顯著降低了目標(biāo)的漏檢率。本文改進(jìn)的目標(biāo)檢測網(wǎng)絡(luò)需要的計算資源和計算機(jī)算力更少,適合應(yīng)用于移動端的設(shè)備。