晏 超
(南京郵電大學通達學院,江蘇 揚州 225127)
在實際生活中,目標往往不是完整展示在視覺范圍當中,感興趣目標可能和同類目標發生重疊,也可能會受到不同類目標的遮擋干擾[1]。感興趣目標的缺失展示給機器完成高準確度目標檢測的任務帶來很大難度,為了實現復雜環境中被遮擋目標和其他目標的區分,對模型提取特征方面的要求會更高。人類的視覺在觀察目標時通常會著重關注目標區域的信息,并且減小關注甚至忽視剩余的信息。在視覺的有限關注力下,關注圖像中偏重點的部分,將更多的精力投入到這個部分發掘更多與目標關聯緊密且有用的特征信息,抑制無價值的信息,這就是注意力機制。在面向被遮擋目標的檢測中引入注意力機制,進一步提升模型提取關鍵特征信息的性能,以此更加準確地預測被遮擋目標的真實位置。
SSD(Single shot MultiBox Detector)的網絡縱深結構主要由主干前置網絡VGG16 和后續的多個輔助卷積特征層(conv)組成[2],如圖1 所示?;诙喑叨忍卣鲌D檢測的思路,向網絡輸入300×300 尺寸的圖片,VGG16 網絡作為SSD 網絡的基礎網絡輸出1 張特征圖,后續的卷積層再輸出5 張特征圖。越往后的卷積層輸出特征圖尺寸越?。◤?8×38 降到1×1),將總共6 張特征圖全部用于檢測層步驟中,完成先驗框的生成、輸出置信度得分及獲取邊界框坐標位置信息的工作。最后,通過非極大抑制算法排除繁雜重疊的冗余框,留下最能表征目標的檢測框,得到最終的檢測結果。SSD 算法兼顧了兩步檢測法和一步檢測法的優勢,既保證了檢測精度,又保證了檢測速度。

圖1 SSD 的網絡結構
CBAM(Convolution Block Attention Module,卷積塊注意力模塊)是基于注意力機制的,同時關注空間和通道2 方面重要性的輕量級模塊[3]。如圖2 所示,CBAM 模塊將特征圖作為輸入對象,進入通道注意力模塊完成第一步,突出特征圖中有意義的信息。特征圖F 經過并行的最大池化層和平均池化層的作用,特征圖a×b×c 的尺度會轉化為a×1×1 大小,然后通過中間模塊Shared MLP 的作用,先壓縮通道數再擴張回原數量級,接著將通過ReLU 激活函數的作用生成的2 個結果進行逐元素相加,最后通過sigmoid 函數輸出通道注意力的結果Mc(F),該輸出結果和輸入的特征圖F 逐元素相乘得到結果F′,尺度重新轉化為a×b×c,第一步過程如公式(1)(2)所示。由第一步過程可得,整個通道注意力模塊的作用就是維持通道方面維度不變的同時,壓縮空間方面的維度。第二步是進入空間注意力模塊,突出目標的位置信息[4]。將第一步的結果F′直接作為第二步的輸入,經過非并行的最大池化層和平均池化層的作用得到2 張1×b×c 的特征圖,經過Concat 操作將2 張特征圖拼接起來,然后通過7×7 卷積作用轉化為通道數為1 的特征圖,最后通過sigmoid 函數得到空間注意力的結果Ms(F′),該輸出結果和輸入的特征圖F′逐元素相乘得到結果F″,同樣尺度重新轉化為a×b×c,第二步過程如公式(3)(4)所示。由第二步過程可得,整個空間注意力模塊的作用就是維持空間方面的維度不變,壓縮通道方面的維度。

圖2 CBAM 結構圖
由于SSD 網絡的低層和中層網絡生成的特征圖分辨率較高,但是包含的語義信息較少,會導致檢測小目標效果不佳。而被遮擋目標經常是以小目標的尺度出現,比如根據視覺近大遠小的特性,處于圖像中遠處的目標被近處的目標遮擋,直接導致被遮擋目標的召回率嚴重不足。引入CBAM 模塊分別置于SSD 低層的conv4_3 生成特征圖輸出給檢測層的過程中,以及中層的conv8_2 后方,如圖3 所示。通過加強通道和空間的特征表達的方式,彌補低層表達能力的不足。各個權重與特征圖的相乘運算將側重信息表達了出來,提升網絡提取重要特征的能力,這些重要特征往往是被遮擋目標在圖像中單一顯示出來的,與其能否被檢出很有關聯。

圖3 在SSD 中引入CBAM
為了能夠更加高效地提取目標的特征,引入Inception-ResNet-v2 結構[5-6]改變SSD 網絡生成6 張多尺度特征圖的方式。分別通過mix_3a,mix_4b,mix_5a,Inception-ResNet-A,Inception-ResNet-B 和Inception-ResNet-C 6 個不同層級的結構得到不同尺度的特征圖,全部用于檢測步驟進行預測。越是經過深度神經網絡(DNN)高層的卷積作用,特征圖映射到原圖中的感受野就越大,會直接導致局部位置信息的感受越來越差,相對位置信息越發不明顯。運用空間注意力模塊關注目標位置信息的特點,引入多個CBAM 模塊置于Inception-ResNet-X 結構中含有卷積層多分支路徑最后合并輸出的路徑上,X 代表A、B 和C,如圖4—圖6所示。以Inception-ResNet-A 為例,如圖4 所示,輸入和輸出之間包含4 條分支路徑。其中在3 條帶卷積層的并行路徑中,第一條路徑只需要進行1×1 卷積核的作用,第二條路徑需要經過1×1 和3×3 卷積核的作用,第三條路徑需要經過1×1 和2 個3×3 卷積核的作用,堆疊3 條路徑作用的結果再經過1×1 卷積核的作用來到合并路徑,最后通過CBAM 的作用強化特征位置信息的表征,輸出的結果再和不帶卷積層直接輸出的結果相加。同理,如圖5 和6 所示,各個包含不同程度信息的特征圖在進行相加前,都要經過CBAM 的作用,再輸出到結構下層或檢測層中,如圖7 所示。

圖4 引入CBAM 模塊的Inception-ResNet-A 結構

圖5 引入CBAM 模塊的Inception-ResNet-B 結構

圖6 引入CBAM 模塊的Inception-ResNet-C 結構

圖7 改變生成特征圖的方式
在Win10 系統環境下,使用python 語言基于SSD的Tensorflow 版本的實驗平臺。硬件配置選定處理器Intel(R)Core i58400,顯卡NVIDIA GeForce GTX 1080。設置批量尺寸為16,動量參數為0.90。第一段迭代訓練次數為120000,學習率設置為0.0005,第二段迭代訓練次數為40000,學習率設置為0.00005。針對行人目標選用INRIA 數據集,車輛目標選用KITTI 數據集,還要分別混合自建數據集一并參與訓練。
本實驗使用以下指標分析算法的檢測性能。
1)精確度P(Precision)衡量檢測出的目標是真實目標的比率,表示檢測出的目標到底是不是行人和車輛的正確程度。
2)召回率R(Recall)衡量檢測出的目標數量占所有真實目標數量的比率,表示所有行人和車輛是不是都被檢測出來。
3)單張圖片檢測時間衡量檢測的速度,時間越短,實時應用性越好。
使用不同的數據集,采用對比實驗驗證在SSD 網絡中引入CBAM 模塊和在SSD 網絡中引入包含CBAM 模塊的Inception-ResNet-v2 結構對提升被遮擋目標檢測效果的有效性。改進后的模型在檢測被遮擋行人和車輛目標的精度上都有提升,2 種算法分別提升0.5%和7.2%的精準率,1.6%和5.0%的召回率。單張圖片的平均檢測時間隨模型復雜程度的提升而略微增長。數據結果分析見表1。

表1 引入CBAM 改進算法前后檢測實驗結果
如圖8 所示,通過對比不同算法輸出的不同檢測圖可以發現,不論是受到同類目標的遮擋還是受到干擾項目標的遮擋,部分被遮擋目標在改進后的算法中都能被檢測出來,減小了一定程度的漏檢和錯檢。


圖8 檢測結果對比圖
針對復雜環境下行人和車輛目標被遮擋情況下的檢測問題,以SSD 目標檢測算法為基礎,從6 張生成特征圖入手,通過直接引入注意力機制CBAM 模塊和引入包含CBAM 模塊改進的Inception-ResNet-v2 網絡結構這2 種不同算法,分別改變特征圖的生成方式,增強了模型的特征提取能力,再利用混合數據集參與訓練,進一步提高模型的泛化能力。