彭強強,黃璜
1. 北京航天自動控制研究所,北京 100039
2. 北京科正平工程技術檢測研究院有限公司,北京 100007
目標檢測算法是計算機視覺領域的基本任務之一,主要解決目標對象分類及目標位置預測等問題,是許多計算機視覺任務及相關應用的基礎與前提,廣泛應用于安保、圖像檢測及自動駕駛等領域[1?2]。為取得更高的識別率,深度神經網絡模型朝著越來越復雜的方向研究,而大多數復雜的網絡模型無法應用在真實場景或部署在移動設備中,因此高效的目標檢測模型具有非常高的研究價值。通常情況下,輕量級目標檢測網絡通過減少網絡結構來降低訓練后模型大小,從而使得網絡模型能夠更好地部署在移動設備中,在不影響準確率的情況下適應更多的應用場景。常見的輕量級網絡主要包括YOLOv3-Tiny[3]、 YOLOv4-Tiny[4]、MobileNet[5]、MobileNet V2[6]、ThunderNet[7]、ShuffleNet V1[8]、ShuffleNet V2[9]等,其中,YOLO系列算法[10?12]將復雜的目標檢測任務利用回歸來解決,達到精度與速度之間的平衡。YOLOv3-Tiny 及YOLOv4-Tiny 網絡在原YOLO 系列的基礎上進行結構上的簡化,以犧牲一定的檢測精度為代價,極大地提高了檢測速度。此外,在訓練后的模型大小相近下,ShuffleNet 系列的檢測準確率通常比MobileNet 的表現更好。ShuffleNet V1 采用了分組卷積和深度可分離卷積,在減少了模型的參數量以及運算量的同時保證檢測的精度,但過多分組卷積的使用將會加重設備內存的負擔;ShuffleNet V2 摒棄了分組卷積的方法,轉而采用了ChannelSplit 操作,進一步提升了模型準確率并解決了設備內存的問題,然而存在參數冗余以及空間信息丟失的問題。此類模型大多是利用修改和優化網絡模型結構來減少網絡的復雜度,但多數輕量級網絡無法兼顧特征圖中目標的全局及局部的上下文信息,感受野較為有限,從而降低了網絡模型的檢測精度。
2020 年,一種輕量化的網絡模型NanoDet 被提出,該模型通過集成多種性能強勁的網絡模型,可同時兼顧精度和參數量,能夠較好滿足應用實時性的要求。但存在以下問題:一是NanoDet對大目標檢測效果明顯,但在特征提取的過程中容易忽視小目標,從而導致存在部分物體漏檢的可能;二是輕量化骨干網絡模型在特征傳遞的過程中網絡結構以及卷積核的選擇并不完善,易損失部分感受野,且模型的泛化能力較差。
針對上述問題,本文在NanoDet 的基礎上提出一種面向移動端應用的實時目標檢測網絡:雙注意力機制NanoDet 網絡(double attention module nanodet,DAM-NanoDet)。首先,設計一種輕量化且高效的混合注意力模塊,利用雙池化方法同時提取通道特征,增加網絡對局部區域的關注度,更好地捕捉通道維度之間的依賴關系,并將空間注意力模塊在長寬方向進行拆分,減少模型的計算量;其次,修改骨干網絡的結構,引入空洞卷積,增強模型的感受野。由實驗結果可知,本文算法在嵌入式及移動端設備的檢測中更為流暢和高效,整體性能和效率優于已有的YOLO 系列等算法,具有較強的可移植性、實時性、魯棒性和實用價值。
NanoDet 是一個開源的實時目標檢測模型,其整體結構如圖1 所示,包括輕量化的主干網絡(backbone)、 路徑聚合網絡 (path aggregation network,PAN)以及輕量化檢測頭(head)。其網絡結構簡單、檢測速度快,因此適合在嵌入式設備及移動端部署。

圖1 NanoDet 目標檢測網絡模型
在NanoDet 網絡模型中,可供選擇的骨干網絡包括MobilNet 系列、 GhostNet[13]、 ShuffleNet V2 以及EfficientNet[14]等。其中ShuffleNet V2 在保證精度的同時模型參數量最小,對移動端的推理也較為友好。因此,綜合平衡網絡的精度、計算量及權重等因素,本文選擇ShuffleNet V2 作為骨干網絡。由圖1 所示,在NanoDet 結構中,去掉ShuffleNet V2 最后一卷積層,將提取的8、16、32 倍下采樣的特征圖作為后續路徑聚合網絡的輸入。
1.2.1 ShuffleNet V2 基本單元的改進
在ShuffleNet V2 中包含2 個步長為1 的基本單元以及步長為2 的下采樣單元,方法上保留了ShuffleNet 中的通道劃分、通道混洗及深度可分離卷積等操作。其中深度可分離卷積包括逐點卷積的通道對齊以及卷積核為3×3 的深度卷積。相比于常規方法,ShuffleNet V2 基本單元的計算成本更低,而目標檢測通常環境較為復雜,降低檢測成本同時會損失部分的檢測精度,導致模型精度不佳。因此,為了兼顧模型的精度與計算量,本文提出了一種改進的ShuffleNet V2 基本單元,如圖2(b)所示。

圖2 改進的ShuffleNet V2 單元
首先,ShuffleNet V2 單元1 結構保持不變,將ShuffleNet V2 單元2 中3×3 的深度卷積替換為空洞率為2 的空洞卷積,在保證參數量不增加的同時加強模型的感受野。其次,在該結構的右分支中1×1 卷積并不改變通道維度,只起到特征融合的作用,多層卷積將導致結構冗余且泛化能力較差。因此,為進一步減少模型的計算量以適應移動端的部署,去掉右分支最后一層的1×1 卷積,可以在保留模型泛化能力的同時減少模型的參數量。最后,ReLU 激活函數雖然計算復雜度較低且網絡訓練收斂較快,但是ReLU 的函數曲線不平滑,易致使神經元在訓練時“壞死”。因此,在ShuffleNet V2 單元中摒棄ReLU 函數,用曲線更為平滑且可以保留小部分負值的Mish[15]函數,Mish 函數公式為
Mish 激活函數與ReLU 相似,無上界但有下界,但Mish 函數相比于ReLU 保留了部分負值,從而規避了模型中少數神經元在反向傳播時失效的情況[16]。因此,更為平滑的Mish 函數可使得特征信息傳遞到較深的網絡中更加容易,模型更加容易訓練,從而達到增強模型泛化能力的目的。
1.2.2 注意力機制
近年來,注意力機制在計算機視覺領域逐漸涌現出了巨大的潛能,通過對特征圖的不同區域或通道進行加權,使得神經網絡對特征圖每個區域側重不同,從而提升網絡的特征提取能力。當今許多注意力機制的改進都致力于提升網絡的復雜性以提供更強大的性能[17?18],但同時也會降低模型的實時性[19]。針對上述問題,本文在ECANet 的基礎上設計,提出一種輕量化高效注意力模塊(lightweight efficient attention module, LEAM)。該結構主要包含通道注意力模塊和空間注意力模塊,兩者采用串聯方式。圖3 為該輕量化高效注意模塊示意。

圖3 輕量化高效注意力模塊
如圖3 所示,本文提出的LEAM 通道注意力模塊在ECA-Net 的基礎上改進擠壓操作,由此獲得自適應權值。首先,在改進的ECA-Net 中通過全局平均池化(global average pooling,GAP)操作獲取全局的特征信息,但對于目標特征較少或者目標較小的情況,只關注全局信息會導致損失部分局部特征,而全局最大池化(global max pooling,GMP)操作則能彌補這個損失。因此本文同時引入了2 種池化方法,在捕獲通道維度依賴關系的同時獲取目標的全局與局部的特征信息,從而輔助優化檢測效果。特征圖經過GAP 與GMP 獲得2 個維度為1×1×C 的通道特征后,將不同維度的通道特征進行加權,具體為
式中:XC為加權后通道特征,fA為GAP 操作,fM為GMP 操作,α為加權通道因子。
為避免通道互相獨立,在隨后的ECA 模塊基于權重共享的思路,引入自適應卷積核大小為k的一維快速卷積并通過sigmiod 獲取通道的權重,以降低模型的復雜度并提高計算效率,自適應卷積核大小k由下式決定:
式中|t|odd為最近的奇數t。
在目標檢測網絡中引入通道注意力子模塊對各通道賦予不同的權值,提升了重點關注信息在特征中的權重,從而達到提升模型感受野的目的,對大目標的檢測效果有較為顯著的提升。而小目標物體的檢測效果依賴于空間區域的關注度。通過引入空間注意力機制捕捉全局作用域中任意區域的關系,但內存與計算量隨之提升。
針對上述問題,本文設計了一種改進的空間注意力子模塊與上述通道注意力子模塊進行串聯,在減少模塊計算量的同時改善網絡對小目標的檢測效果,如圖4 所示。

圖4 改進的空間注意力模塊
首先,對通道注意力子模塊輸出的特征圖進行寬、高2 個方向的全局平均池化,得到大小為1×W×1 及H×1×1 的2 個特征向量。將2 個特征向量通過矩陣乘法生成H×W×1 的二維特征圖,最后通過與輸入特征圖加權逐點相乘的方式得到通道空間注意圖。對空間注意力機制的改進進一步減少了內存的占用和計算負擔。
1.2.3 改進的NanoDet 骨干網絡
圖5 為NanoDet 改進前后骨干網絡對比圖。本文所提的骨干網絡模型結構如圖5(b)所示,在ShuffleNet V2 的基礎上引入LEAM 注意力機制,并將ShuffleNet V2 單元2 替換為改進后的ShuffleNet V2 單元2;使用Mish 激活函數替代ReLU 激活函數,并為更好融合通道注意力摒棄最大池化層,而使用卷積核大小為3×3、步長為2 的深度分離卷積,豐富骨干網絡提出的特征。

圖5 NanoDet 改進的骨干網絡對比
路徑聚合網絡使用了步長為2 的卷積將高層含豐富的語義信息的特征圖下采樣。首先為了簡化模型使其輕量化,舍棄PAN 中的所有卷積,只保留從NanoDet 骨干網絡輸出后的1×1 卷積來實現特征通道的維度對齊,且在路徑聚合網絡中的上、下采樣均用插值進行替代。最后,與YOLO不同,選擇將多尺度的特征圖利用相加的方式進行融合,因此極大減小了特征融合模塊的計算量。
檢測頭采用了FCOS 系列的共享權重檢測頭,即利用相同卷積對多尺度特征圖預測檢測框,然后每一層使用一個可學習的尺度因子作為系數,并對檢測框進行縮放。其優點是能夠將檢測頭的參數量降低4/5。但對于輕量化模型,其模型通過中央處理單元(central processing unit,CPU)推理計算,共享權重失去了加速的意義,且在檢測頭非常輕量的情況下,模型的檢測能力還會進一步降低,因此,在NanoDet 中一層特征對應一組卷積。此外,FCOS 檢測頭計算量較大,在邊框回歸和分類上一共有8 個256 通道的卷積。為最大程度的輕量化,選擇深度可分離卷積,并且減少卷積的堆疊數。將256 維壓縮至96 維,減少網絡計算量的同時獲得并行加速的能力,輕量化處理后的檢測頭如圖6 所示。

圖6 輕量化檢測頭
實驗以Pytorch 深度學習框架為基礎,編程語言為Python3.7,軟件環境為Linux 平臺,操作系統為Ubuntu18.04。模型訓練在GPU 型號為NVIDIA GeForce GTX 1 660 Ti 上的設備進行,顯存為8 G。測試使用的CPU 型號為Intel(R) Core(TM) i7-9750H。在實驗中,設置檢測閾值為0.5,訓練迭代次數為100 次,初始學習率設置為0.02。
本文在MS COCO(common objects in context)數據集上[20]完成對改進網絡的訓練、驗證和測試,MS COCO2017 數據集是微軟在2017 年整理的一個用于檢測識別的數據集,此外還提供目標分割和對圖像的語義文本描述信息。數據集總共有90 個類別且包含3 個部分,其中,train-2017 為訓練集,共有11 萬余張訓練圖片;val-2017 為實驗的驗證集,共包含5 000 多張圖片樣本;test-2017 則共有4 萬余張圖片樣本為測試集。
在目標檢測領域中,檢測精確度P和召回率R是2 個基本的指標。精確度和召回率是根據以下4 個指標來計算:
1)真正類(true positive,TP)NTP:模型預測為正的正樣本;
2)真負類(true negative,TN)NTN:模型預測為正的負樣本;
3)假負類(false negative,FN)NFN:模型預測為負的負樣本;
4)假正類(false positive,FP)NFP:模型預測為負的正樣本。
因此,精確度P的計算公式為
召回率R的公式為
平均精確度(mean average precision, mAP)mAP為
式中:P(R)為在不同的置信度閾值下,由檢測精確度和召回率所構造的曲線, 而AP(average precision)為模型的均值精度,即P(R)曲線與坐標軸圍起來的面積,對數據集中的所有類別求平均即得到mAP。為了分析檢測網絡對不同尺度目標的檢測效果,COCO 數據集還使用了APS、APM、APL這3 個指標分別表示對小目標、中目標和大目標的mAP 值。本文實驗主要使用上述指標衡量模型的檢測性能。
在對檢測模型各模塊進行輕量化后,得到了本文的目標檢測模型。在輸入分辨率為320×320及426×426 的情況下選取test2017 的數據集進行測試。表1 列出了本文目標檢測算法與其他模型的對比,所有數據均在CPU 設備上獲得。

表1 在分辨率320×320 下本文目標檢測算法與其他模型的性能對比
由表1 可知,DAM-NanoDet 算法在COCO2017數據集上輸入分辨率為320×320 的測試中,mAP 達到了23.2,模型參數量相較于原NanoDet算法提升了0.22 M,網絡延遲有較小增加,但檢測精度有顯著提升。由對比可知,本文算法在小目標及大目標的校測效果上提升明顯,綜合效果好于原NanoDet、ThunderNet、YOLO-Nano 等輕量級網絡模型。整個模型每秒浮點運算次數(floatingpoint operations per second,FLOPS)僅有1.06 B,模型的參數量僅為1.17 MB,復雜度較低。
由表2 可知,DAM-NanoDet 算法在COCO2017數據集上輸入分辨率為416×416 的測試中,mAP 達到了25.6,相比原算法提高了2.1 個百分點,AP50 及AP75 明顯高于其他算法,效果好于原NanoDet 算法以及YOLO 系列的輕量級模型。整個模型FLOPS 僅有1.52 B,模型的參數量僅為1.17 MB在有效減小應用程序體積的條件下,17.64 ms的延遲同時保證在移動端部署的檢測速度。

表2 在分辨率426×426 下本文目標檢測算法與其他模型的性能對比
2.4.1 PC 端實驗結果
圖7 和圖8 分別為本文所述目標檢測算法在COCO2017 數據集上和安卓手機端對目標的檢測結果。

圖7 改進NanoDet 模型目標檢測效果

圖8 安卓手機端目標檢測結果
圖7 為PC 端的4 組目標檢測效果圖。從圖7中可以明顯看出,本文算法在大、中、小目標中都有較高的檢測精確度,且在目標存在嚴重遮擋的情況下依舊能準確地檢測出目標。
2.4.2 算法在移動端的部署實驗
移動端實驗的硬件條件為Redmi K30 Pro 智能手機,配高通驍龍865 處理器,運行內存為8 GB。安卓手機端目標檢測結果如圖8 所示。從圖8 中可以看出本文檢測算法能夠很好地定位目標并識別出物體的類別,具有較高的定位準確度和較好的檢測效果。安卓手機端的平均檢測幀率可以達到60 幀/秒以上,能夠滿足實時性要求。
為了滿足目標檢測在移動端部署條件下對于目標檢測算法中實時性以及準確性的要求,本文提出了一種可部署在移動端的實時目標檢測算法。
1)考慮到目標檢測的實時性及計算復雜度等要求,設計了一種輕量化高效注意力模塊,增強了特征通道信息以及空間信息的表達能力,在計算量及精度之間保證更好的平衡。
2)改進了骨干網絡的結構,加強網絡的泛化效果,得到了一個兼顧精度、速度和體積的檢測模型。實驗結果表明,本文算法相比YOLO 系列模型參數量更低且準確度更高,更適合部署在移動端設備上。 在未來的研究中,還需要進一步結合先進的深度學習技術在目標檢測效率以及模型的訓練速度上進一步研究。