曹瑞穎,趙志誠,謝新林,劉 寧
(1.太原科技大學電子信息工程學院,太原 030024;2.山西省信息產業技術研究院有限公司,太原 030012)
目標檢測技術在交通、工業和軍事領域一直有廣泛的需求,例如自動駕駛、移動機器人視覺處理和大數據監控等場景[1-2]。但是模型復雜度高極大地限制了算法部署,因此,如何平衡精度和模型參數量成為一個重要的研究方向。早期的目標檢測使用傳統圖像處理方法,多在支持向量機(support vector machine,SVM)和方向梯度直方圖(histogram of oriented gradient,HOG)的基礎上改進,易于部署,但面對小目標和復雜背景難以達到良好的效果檢測。文獻[3]首先對圖像進行去噪、形態學處理等預處理操作后,對二值圖像進行分析法特征提取,再利用灰狼算法優化后的SVM 分類器識別圖像。該過程需要進行大量的數據預處理,識別速率慢,不滿足實時性要求。
近十年來,由于計算機視覺發展迅速,研究人員將目光放在融合數字信息處理、計算機視覺和人工智能為一體的目標檢測算法上[4]。基于深度學習的識別方式一般可分為兩類:基于回歸的一階段方式和基于區域候選的二階段方式。其中,二階段算法被較早地提出,最具代表性的有R-CNN(re gion-conventional neural network)、Fast R-CNN、Faster R-CNN 和Mask R-CNN[5-8]。該類算法將回歸和分類任務分開進行,需要提前產生區域候選框,精度較高但檢測速度慢,難以滿足實時性要求。而一階段算法跳過區域候選,直接得到目標的位置概率和坐標值,有著較快的檢測速度,容易訓練,因此,更適合移動端的部署。代表算法如YOLO(you only look once)系列和SSD(single shot multi-box detector)[9-10]。
近年來,目標檢測算法更加關注功能模塊的使用[11],在增加少量推理成本的基礎上優化模型結構。文獻[12]使用深度攝像頭進行障礙物檢測和工件檢測。首先采用超寬帶(ultra wide band,UWB)將自動導引車導航到工作位置附近,將基于TensorFlow框架的改進YOLOv3 模型與深度攝像機應用程序界面相結合,得到目標的位置,從而建立一種高精度的自定位方法。文獻[13]將研究重點放在了重疊物體上,配備EMD Loss(earth mover’s distance loss)和非極大值抑制等技術,該檢測器更適用于復雜背景下多物體重疊的情況,尤其大物體更容易重疊的情況,但實驗不能反映對小物體的檢測效果。文獻[14]提出廣義焦點損失函數(generalized focal loss),通過對損失函數的修改,將焦點損失從離散形式推廣到連續版本,實現損失函數的優化,但模型參數量并未減小,不適合移動端的部署。綜上所述,一階段YOLO 系列的檢測速度還有待提高,通過模型的輕量化,在不影響小目標和遮擋問題的情況下優化模型。
因此,針對以上不足,本文提出一種基于YOLOv4 的跳躍連接擴尺度特征融合模型,主要貢獻如下:首先,原YOLOv4 的主干網絡采用CSPDarkNet53,模型參數量大。為了提升檢測速度,本文利用MobileNet 模塊改造主干特征,提取網絡命名為MV1,同時借鑒MobileNet 骨架的思想,重新構建網絡中所有3 次卷積塊和5 次卷積塊,提出一種基于深度可分離卷積的輕量化目標檢測模型,實驗結果表明整體參數量降低了80.8%。其次,模型壓縮很可能導致精度下降,為了提升網絡的檢測能力,在網絡的頸部構建了跨通道跳躍連接特征融合結構。一方面將原來的3 尺度改為4 尺度,額外融合一層淺層信息,相應的上采樣、下采樣環節也增加一次;另一方面增加兩層跨通道路徑融合深淺層信息,以此提高模型識別多尺度目標的性能。最后為了進一步提升改進算法應對復雜背景和小目標的特征提取能力,引入ECA 注意力機制,通過實驗證明ECA的提取能力要優于CBAM、SE 和CA 機制,算法更關注圖像中的目標信息。
YOLOv4 網絡是Alexey Bochkovskiy 等提出的典型一階段目標檢測算法[15],在原有YOLOv3 的基礎上,從骨干網絡架構、激活函數、損失函數和訓練方式等方面進行優化[16]。運行速度明顯加快,但并沒有給網絡帶來太多計算量,精度也有一定提升,在速度和精度的平衡上表現良好。YOLOv4 的網絡結構大致可分為4 個部分:輸入端、主干Backbone、頸部Neck 和輸出端(預測端Prediction),圖像分成不同尺度的網格進行特征提取,通過回歸預測框實現目標的位置定位和分類。YOLOv4 最大的貢獻在于構建了一個高效的目標檢測模型,降低了訓練門檻,使普通研究人員也可以用1080Ti 或2080Ti 的GPU 來訓練模型,推動了目標檢測算法的進步。
深度可分離卷積(depthwise separable convolution,DSC)是由CHOLLET 等提出的一種卷積塊[17],被人們熟知主要是因為兩個著名模型Xception 和MobileNet[18],在這兩個模型結構中均起到關鍵作用。DSC 由逐通道卷積(depthwise convolution)和逐點卷積(pointwise convolution)兩部分構成,在保留卷積操作的基本表征學習能力的同時減少權重系數的個數,相比普通卷積,運算量和運算成本要小很多。卷積主要是用來提取特征,普通的卷積會實現通道和空間的聯合關系,而DSC 則先執行空間方向的卷積,保持通道分離的狀態,隨后進行1*1 的逐點卷積。
若對于某個卷積層而言,輸入的張量深度為Cin,輸出的張量深度為Cout,則對于高寬為h、w 的卷積來說,逐通道卷積后的尺寸為h*w*Cin,接著用尺寸為1*1*Cin*Cout的卷積核進行逐點卷積,卷積步長Stride 為1,則深度可分離卷積的參數量為:
同樣的卷積核大小采用標準卷積的參數量為:
因此,兩者的參數量比值為:
改進后的整體網絡結構如圖1 所示,y1~y4分別為4 尺度特征提取的輸出端。CBL 模塊為YOLOv4的基本模塊,由標準卷積層(CONV)、批量標準化層(Batch_Normalization)和ReLU 激活函數組成。全程使用Concat 向量拼接操作,將MobileNet 模塊的中間層和深層網絡的上采樣特征向量進行拼接,下采樣得到的特征向量與深層特征向量同樣使用Concat堆疊。圖像尺寸固定為416*416,輸入Backbone 先經過普通卷積CBR,由標準卷積層(CONV)、批量標準化層(Batch_Normalization)和ReLU6 激活函數組成。改良后的MobileNet 模塊MV1 其基本組件是DW 深度可分離卷積,由3×3 逐通道卷積和1×1逐點卷積組成,步長stride 為1、2 交替連接。借鑒MobileNet 的思想,在原來YOLOv4 的基礎上,將所有3*3 卷積塊和5*5 卷積塊改造成含DW 卷積的“夾心”形式,如下頁圖2 所示,將3*3 卷積的第2層替換為DW 卷積,命名為CDC 模塊;將5*5 卷積的第2、4 層替換為DW 卷積,命名為CDCDC 模塊。下采樣是卷積核為3 的普通卷積CBL。

圖1 改進后的整體結構Fig.1 Improved overall structure

圖2 改造3*3 卷積塊和5*5 卷積塊Fig.2 Transformed 3*3 convolution block and 5*5 convolution block
雖然YOLOv4 在精度和速度上都達到一個很好的平衡,但不適用于算力有限的移動端部署,所以本文借鑒MobileNet 的思想設計了新的主干網絡來壓縮模型,命名為MV1。MobileNet 模塊是Google 團隊提出的輕量級深度神經網絡,它的核心思想是深度可分離卷積,這一改進有效地減少了模型參數量,便于移動設備或嵌入式設備的算法快速部署和實時運行。
本文算法設計了一種基于深度可分離卷積的主干特征提取網絡,不同于原MobileNet 結構,第1層設置一個步長為2 的普通卷積,中間層去掉普通卷積,只保留DW 卷積,尾端使用自適應平均池化(adaptive avg pool)和一個全連接層(linear)。最后為了配合頸部的擴尺度改造,MobileNet 模塊的Stage層需要加一,保持原本的模型深度不變。如圖3 所示,基礎卷積conv_bn 即CBL 模塊,conv_dw 即深度可分離卷積塊DW。實驗結果表明這一改進有效降低了網絡參數量,但精度會有所下降,在后續的加強特征提取部分彌補。

圖3 MV1 模塊的結構示意圖Fig.3 Structure schematic diagram of MV1 module
在實際場景中,為了滿足不同大小物體的檢測需求,往往需要獲取不同的尺度特征。一般來說,大目標在圖片中所占面積大,特征較為豐富,所以檢測較為簡單。但小目標在圖中所含特征信息較少,經過Backbone 的不斷特征提取,導致特征圖丟失信息嚴重,檢測難度增大。為了解決小目標物體的檢測難題,通過利用較大特征圖的輸出特征獲得較小的感受野,來提高物體檢測能力。本文算法正是在原有Neck 的基礎上,增加一淺層特征圖,如圖4 的藍色部分所示,3 尺度擴展成4 尺度,同時配備卷積和上采樣層。在輸入圖像尺寸416*416 的前提下,得到4 種檢測分支分別為13*13,26*26,52*52,104*104,并將52*52 的特征層2 倍上采樣與新添加的104*104 層堆疊,104*104 的輸出特征下采樣與52*52 層特征進行堆疊,以此來充分利用淺層特征信息。

圖4 3 尺度擴展為4 尺度的Neck 結構示意圖Fig.4 Schematic diagram of Neck structure with 3 scales expanded to 4 scales
此外在PANet 結構中,下采樣的輸入端是經過FPN 特征金字塔處理的信息,缺少原始主干特征信息,影響檢測精度。所以本文借鑒加權特征金字塔網絡(BiFPN)的思想[19],在特征傳遞過程中增加兩層普通卷積,改進的網絡結構如下頁圖5 的紅色部分所示,將Backbone 獲得的原始信息跨層輸出,與4 層特征金字塔得到的特征堆疊,使原始信息持續參與特征提取過程。為了匹配額外增加的路徑通道數,需要一個普通1*1 卷積調整通道數。

圖5 Neck 的最終改進示意圖Fig.5 Schematic diagram of final improvement of Neck
近年來,由于注意力機制具有可操作性強,有效聚焦關鍵信息和自適應調整權重的優良特性,融合注意力機制在改善深度卷積神經網絡的結構上展現了很大的潛能。本文為了進一步提升算法的特征提取能力,在Neck 加強特征提取部位的最后,即YOLOv4 網絡的預測端之前,將參數量很小的ECA模塊插在4 層尺度中,不僅能有效增強模型的性能,同時對模型大小的影響幾乎可以忽略不計。
ECA 注意力機制把重點放在跨信道交互上,避免一味地降維壓縮影響學習通道間的依賴關系[20],結構如圖6 所示,H、W 表示通道的高寬。首先在輸入特征圖上進行空間特征壓縮,使用全局平均池化得到1*1*C 的特征圖,隨后用動態卷積核1*1 卷積自適應學習通道特征,并經過Sigmoid 激活函數處理得到各通道的權重系數,將權重與原始輸入圖像的對應元素相乘即可得到最終輸出特征。其中,自適應卷積核的計算公式為:

圖6 ECA 模塊示意圖Fig.6 Schematic diagram of ECA module
式中,γ=2,b=1,C 是通道數。
為了驗證本文改進的目標檢測算法能否滿足復雜背景下的檢測,采用Pascal VOC 07+12 數據集進行實驗研究。Pascal VOC 數據集是目標檢測領域最常用的標準數據集之一,很多優秀的計算機視覺模型如分類、定位、檢測、分割和動作識別都基于Pascal VOC 挑戰賽及其提供的數據集推出。本文選擇的數據集是Pascal VOC 2007 和Pascal VOC 2012,包含了日常生活場景中最常見的20 個類別。本文將兩組數據集整合得到21 503 張圖片,劃分情況如下:訓練和驗證占全部數據集的90%,共19 352 張,在此基礎上訓練集占90%,共17 416 張,測試占10%,共2 151 張。20 個類別所含目標信息如圖7 所示。

圖7 Pascal VOC 07+12 數據集的數據分布情況Fig.7 Data distribution status of datasets of Pascal VOC 07+12
本文全部實驗結果都是基于深度學習框架Pytorch 進行的,實驗環境配置如下:操作系統為Linux,GPU 為GeForce RTX 2080 Ti,16 核處理器,內存為64 GB,網絡鏡像為torch 1.2.0、torchvision0.4.0,數據處理為Python 3.7,GPU 加速軟件為CUDA10.1、CUDNN10.1.105。
在深度學習的訓練過程中,從0 開始初始權重過于隨機往往效果不好,且耗費大量時間成本。為了節約計算機資源,采用遷移學習策略,利用多次迭代獲得的初始權重進行訓練,提高模型的泛化能力。圖片輸入尺寸為416*416,將訓練過程分為凍結和解凍階段,共訓練100 輪,前50 輪凍結主干特征提取網絡所占顯存較小,批次設置為16,隨后解凍訓練,批次縮小為8。模型最大學習率1e-2,最小學習率1e-4,使用余弦退火方式調整,選擇SGD 優化器。由于輸出特征圖變成4 尺度,先驗框的尺寸和數量要與之對應,使用K-Means 聚類的方式得到4尺度共12 個Anchor Box[21],聚類結果如表1 所示,該方法獲得的先驗框更接近數據集。

表1 K-Means 聚類結果Table 1 K-Means clustering results
評價指標用來衡量算法檢測的好壞,本文主要用到IoU(交并比)、precision(精確度)、recall(召回率)、AP(平均精度)、mAP(平均類別精度),具體計算方式如下:
其中,TP 表示預測為正樣本且實際為正樣本的數量,FP 表示預測為負樣本但實際為正樣本的數量,FN 表示預測為負樣本實際也是負樣本的數量,precision 為單類別的檢測精度,recall 為召回率,即全部預測正樣本里正確結果占的比率,N 表示檢測目標的類別數為20,FrameNum 表示處理的圖像數量,ElapsedTime 表示處理圖像消耗的時間。此外,檢測時非極大值抑制設置的iou 為0.5,置信度Confidence 為0.001,只有得分大于置信度的預測框才會被保留。
3.5.1 改造主干特征提取網絡的實驗驗證
為了選取最合適的主干替換網絡,驗證MV1 模塊的合理性,本文以YOLOv4 原始網絡為基礎,選取常見的輕量化網絡GhostNet、MobileNetv1(改造后的MV1 模塊)、MobileNetv2、MobileNetv3、DenseNet 121、ResNet50、VGG 替換YOLOv4 的Backbone,包含數據增強等預處理環節,同時調整所有3*3 卷積為DW 卷積,其他部分不變。改動后的算法分別稱為YOLOv4-G、YOLOv4-MV1、YOLOv4-MV2、YOLOv4-MV3、YOLOv4-D121、YOLOv4-R50、YOLOv4-VGG,將以上7 種算法與YOLOv4 在Pascal VOC 07+12 上進行對比實驗,實驗結果如表2 所示。

表2 替換Backbone 的實驗結果Table 2 Experimental results of replacing Backbone
從表2 可以看出,GhostNet 和MobileNet 系列在參數量的降低方面都達到80%以上,表現優異。要移動端的使用需要得到盡可能大的FPS,即每秒傳輸幀數(Frames Per Second),視頻流暢度越好,所以表現最好的是MobileNet 模塊,同時還兼顧最高的精度,與YOLOv4 原算法的mAP 相比只差0.51%。從算法檢測精度來說,藍色字體標注的算法是精度最高的前3 種,最優的替換網絡是YOLOv4-MV1 和YOLOv4-R50,后者精度更高甚至超越YOLOv4,但模型大小只降低了一半,而MobileNetv1 降低了80.7%。所以綜合來看YOLOv4-MV1 在Pascal VOC 07+12 表現最好,本文采用基于MobileNet 塊設計的主干特征提取網絡。
3.5.2 改進Neck 部分的實驗驗證
為了驗證Neck 部分兩個創新點的合理性,首先增加1 層淺層信息,3 尺度擴展為4 尺度,稱為YOLOv4-MV1-F;其次在YOLOv4-MV1-F 的基礎上調整特征金字塔結構,連接主干網絡與下采樣結構,增強信息融合,稱為YOLOv4-MV1-FB。對比結果如表3 所示。

表3 改進Neck 部分的實驗結果Table 3 The experimental results of improving the Neck section
從表3 可以看出,增加1 層淺層信息,并增強尺度融合都會使算法的參數量和模型大小少量增加,FPS 也有所降低,但模型的改進對算法精度分別提高了2.26%和2.79%,依然保持著較好的實時性,因此,證明了該改進方法的有效性。
3.5.3 融合注意力模塊的實驗分析
為了驗證融合注意力機制的有效性,并探究哪種注意力模塊對精度的提升效果更好,本文在YOLOv4-MV1-FB 網絡的基礎上設計實驗,選取4種最常用的注意力機制CBAM、ECA、CA、SE 插到Neck 的最后,其他部分不做改動,實驗結果如表4所示。

表4 融合注意力模塊的實驗結果Table 4 The experimental results of fusing attention module
從表4 中可以看出,在網絡的檢測頭前分別加入4 種注意力機制帶來的參數變化并不大,在參數量的增加上幾乎可以忽略不計;從平均類別精度mAP 來看,ECA 表現更好,增加了0.36%;同時ECA具有更好的FPS,更能滿足實時性要求。因此,本文在Neck 的最后引入ECA 注意力機制更有效,實現運行速度和精度的統一。
3.5.4 消融實驗
為了更全面地分析YOLOv4-MV1-FB-ECA 中各個模塊的改進效果,在YOLOv4 的基礎上設計消融實驗。4 種改進策略分別命名MV1(MobileNet 塊構建主干特征網絡,并將所有3*3 卷積換成深度可分離卷積)、F(3 尺度變4 尺度)、B(調整特征金字塔結構)、ECA(注意力機制)。在原始YOLOv4 的基礎上分別加入各個模塊,在Pascal VOC 07+12 數據集上進行試驗,實驗結果如表5 所示。

表5 消融實驗結果Table 5 Results of ablation experiment
實驗結果表明,引入MobileNet 塊并替換DW卷積對模型參數量的影響很大,有效地提升了FPS,模型精度下降了1.51%,說明整體網絡結構使用深度可分離卷積能帶來積極的正效應。其他改進的3個模塊中,3 尺度改為4 尺度對模型的提升效果最大,mAP 增加了1.02%,模型參數量增加了1.62 MB;模塊B 的精度提升較小,模型參數量增加了0.84 MB;而注意力機制ECA 的模型參數量對YOLOv4 的數量級來說幾乎為0,模型精度提升了0.20%。
3.5.5 不同網絡的性能對比實驗
在Pascal VOC 07+12 數據集上,對比分析目前流行的目標檢測算法,除二階段模型Faster-RCNN、SSD 輸入圖片大小設置為600*600、300*300,其他一階段模型的輸入圖片均設置為416*416,檢測結果如下頁表6 所示。
由表6 可知,本文算法的mAP 為91.64%,除略小于YOLOX 以外,超越其他目標檢測算法,但模型的參數量只有YOLOX 的27.12%。這主要是由于兩者的主干特征提取網絡不同,DarkNet53 有較好的提取能力,但模型參數量很大;而本文采用MobileNet 降低了參數量,并通過其他方式加強特征提取,彌補了精度上的不足。FPS 表現也處在中上游,YOLOv3 和YOLOv5s 的處理速度更快,但精度遠小于本文算法。此外與最新的YOLOv7 相比,mAP 提高了0.74%,模型參數量降低了60%。綜上所述,本文算法YOLOv4-MV1-FB-ECA 在速度和精度的平衡上達到了較好的統一,證明算法的有效性。
3.5.6 檢測結果可視化
圖8 為利用Grad-CAM 算法對改進前后的檢測算法進行了熱力圖可視化,這是一種不需要修改模型結構,并且可以適應多種任務的可視化方法。它是利用反向傳播過程計算梯度,從而得到特征圖每個通道的權重,通過計算得到熱力圖來解釋卷積神經網絡關注的重點地區。圖8(a)為融合前原始網絡的模型熱力圖,圖8(b)為融合后本文算法的模型熱力圖。從圖中可以看出改進算法更關注能檢測到的單個目標本身,對物體的檢測效果更集中,因此,檢測效果更好。

圖8 算法改進前后的模型熱力圖Fig.8 Model heat map before and after the improvement of the algorithm
本文設計出一種基于YOLOV4 的目標檢測算法YOLOv4-MV1-FB-ECA。通過重新構建主干特征提取網絡,使用深度可分離卷積的方法有效地降低了模型參數量;通過對Neck 的特征提取部分進行改進,融合ECA 注意力機制進一步提升模型的檢測精度。實驗結果分析表明,改進后的算法在公開數據集Pascal VOC 07+12 的檢測精度提高了1.64%,模型參數量降低了77%,檢測速度達到了55.54 FPS。改進模型在算法速度和精度上實現了統一和平衡,優于其他主流的目標檢測算法,較小的模型參數量和較高的FPS 為其他現實場景提供了模型基礎。后續工作將在進一步提高精度的同時提高泛化能力,聚焦交通場景,尤其是使用率較高的車輛和行人檢測,增強算法在復雜場景和多干擾情況下的魯棒性。