晏 超
(南京郵電大學(xué)通達(dá)學(xué)院,江蘇 揚(yáng)州 225127)
在實(shí)際生活中,目標(biāo)往往不是完整展示在視覺范圍當(dāng)中,感興趣目標(biāo)可能和同類目標(biāo)發(fā)生重疊,也可能會受到不同類目標(biāo)的遮擋干擾[1]。感興趣目標(biāo)的缺失展示給機(jī)器完成高準(zhǔn)確度目標(biāo)檢測的任務(wù)帶來很大難度,為了實(shí)現(xiàn)復(fù)雜環(huán)境中被遮擋目標(biāo)和其他目標(biāo)的區(qū)分,對模型提取特征方面的要求會更高。人類的視覺在觀察目標(biāo)時(shí)通常會著重關(guān)注目標(biāo)區(qū)域的信息,并且減小關(guān)注甚至忽視剩余的信息。在視覺的有限關(guān)注力下,關(guān)注圖像中偏重點(diǎn)的部分,將更多的精力投入到這個(gè)部分發(fā)掘更多與目標(biāo)關(guān)聯(lián)緊密且有用的特征信息,抑制無價(jià)值的信息,這就是注意力機(jī)制。在面向被遮擋目標(biāo)的檢測中引入注意力機(jī)制,進(jìn)一步提升模型提取關(guān)鍵特征信息的性能,以此更加準(zhǔn)確地預(yù)測被遮擋目標(biāo)的真實(shí)位置。
SSD(Single shot MultiBox Detector)的網(wǎng)絡(luò)縱深結(jié)構(gòu)主要由主干前置網(wǎng)絡(luò)VGG16 和后續(xù)的多個(gè)輔助卷積特征層(conv)組成[2],如圖1 所示?;诙喑叨忍卣鲌D檢測的思路,向網(wǎng)絡(luò)輸入300×300 尺寸的圖片,VGG16 網(wǎng)絡(luò)作為SSD 網(wǎng)絡(luò)的基礎(chǔ)網(wǎng)絡(luò)輸出1 張?zhí)卣鲌D,后續(xù)的卷積層再輸出5 張?zhí)卣鲌D。越往后的卷積層輸出特征圖尺寸越?。◤?8×38 降到1×1),將總共6 張?zhí)卣鲌D全部用于檢測層步驟中,完成先驗(yàn)框的生成、輸出置信度得分及獲取邊界框坐標(biāo)位置信息的工作。最后,通過非極大抑制算法排除繁雜重疊的冗余框,留下最能表征目標(biāo)的檢測框,得到最終的檢測結(jié)果。SSD 算法兼顧了兩步檢測法和一步檢測法的優(yōu)勢,既保證了檢測精度,又保證了檢測速度。
圖1 SSD 的網(wǎng)絡(luò)結(jié)構(gòu)
CBAM(Convolution Block Attention Module,卷積塊注意力模塊)是基于注意力機(jī)制的,同時(shí)關(guān)注空間和通道2 方面重要性的輕量級模塊[3]。如圖2 所示,CBAM 模塊將特征圖作為輸入對象,進(jìn)入通道注意力模塊完成第一步,突出特征圖中有意義的信息。特征圖F 經(jīng)過并行的最大池化層和平均池化層的作用,特征圖a×b×c 的尺度會轉(zhuǎn)化為a×1×1 大小,然后通過中間模塊Shared MLP 的作用,先壓縮通道數(shù)再擴(kuò)張回原數(shù)量級,接著將通過ReLU 激活函數(shù)的作用生成的2 個(gè)結(jié)果進(jìn)行逐元素相加,最后通過sigmoid 函數(shù)輸出通道注意力的結(jié)果Mc(F),該輸出結(jié)果和輸入的特征圖F 逐元素相乘得到結(jié)果F′,尺度重新轉(zhuǎn)化為a×b×c,第一步過程如公式(1)(2)所示。由第一步過程可得,整個(gè)通道注意力模塊的作用就是維持通道方面維度不變的同時(shí),壓縮空間方面的維度。第二步是進(jìn)入空間注意力模塊,突出目標(biāo)的位置信息[4]。將第一步的結(jié)果F′直接作為第二步的輸入,經(jīng)過非并行的最大池化層和平均池化層的作用得到2 張1×b×c 的特征圖,經(jīng)過Concat 操作將2 張?zhí)卣鲌D拼接起來,然后通過7×7 卷積作用轉(zhuǎn)化為通道數(shù)為1 的特征圖,最后通過sigmoid 函數(shù)得到空間注意力的結(jié)果Ms(F′),該輸出結(jié)果和輸入的特征圖F′逐元素相乘得到結(jié)果F″,同樣尺度重新轉(zhuǎn)化為a×b×c,第二步過程如公式(3)(4)所示。由第二步過程可得,整個(gè)空間注意力模塊的作用就是維持空間方面的維度不變,壓縮通道方面的維度。
圖2 CBAM 結(jié)構(gòu)圖
由于SSD 網(wǎng)絡(luò)的低層和中層網(wǎng)絡(luò)生成的特征圖分辨率較高,但是包含的語義信息較少,會導(dǎo)致檢測小目標(biāo)效果不佳。而被遮擋目標(biāo)經(jīng)常是以小目標(biāo)的尺度出現(xiàn),比如根據(jù)視覺近大遠(yuǎn)小的特性,處于圖像中遠(yuǎn)處的目標(biāo)被近處的目標(biāo)遮擋,直接導(dǎo)致被遮擋目標(biāo)的召回率嚴(yán)重不足。引入CBAM 模塊分別置于SSD 低層的conv4_3 生成特征圖輸出給檢測層的過程中,以及中層的conv8_2 后方,如圖3 所示。通過加強(qiáng)通道和空間的特征表達(dá)的方式,彌補(bǔ)低層表達(dá)能力的不足。各個(gè)權(quán)重與特征圖的相乘運(yùn)算將側(cè)重信息表達(dá)了出來,提升網(wǎng)絡(luò)提取重要特征的能力,這些重要特征往往是被遮擋目標(biāo)在圖像中單一顯示出來的,與其能否被檢出很有關(guān)聯(lián)。
圖3 在SSD 中引入CBAM
為了能夠更加高效地提取目標(biāo)的特征,引入Inception-ResNet-v2 結(jié)構(gòu)[5-6]改變SSD 網(wǎng)絡(luò)生成6 張多尺度特征圖的方式。分別通過mix_3a,mix_4b,mix_5a,Inception-ResNet-A,Inception-ResNet-B 和Inception-ResNet-C 6 個(gè)不同層級的結(jié)構(gòu)得到不同尺度的特征圖,全部用于檢測步驟進(jìn)行預(yù)測。越是經(jīng)過深度神經(jīng)網(wǎng)絡(luò)(DNN)高層的卷積作用,特征圖映射到原圖中的感受野就越大,會直接導(dǎo)致局部位置信息的感受越來越差,相對位置信息越發(fā)不明顯。運(yùn)用空間注意力模塊關(guān)注目標(biāo)位置信息的特點(diǎn),引入多個(gè)CBAM 模塊置于Inception-ResNet-X 結(jié)構(gòu)中含有卷積層多分支路徑最后合并輸出的路徑上,X 代表A、B 和C,如圖4—圖6所示。以Inception-ResNet-A 為例,如圖4 所示,輸入和輸出之間包含4 條分支路徑。其中在3 條帶卷積層的并行路徑中,第一條路徑只需要進(jìn)行1×1 卷積核的作用,第二條路徑需要經(jīng)過1×1 和3×3 卷積核的作用,第三條路徑需要經(jīng)過1×1 和2 個(gè)3×3 卷積核的作用,堆疊3 條路徑作用的結(jié)果再經(jīng)過1×1 卷積核的作用來到合并路徑,最后通過CBAM 的作用強(qiáng)化特征位置信息的表征,輸出的結(jié)果再和不帶卷積層直接輸出的結(jié)果相加。同理,如圖5 和6 所示,各個(gè)包含不同程度信息的特征圖在進(jìn)行相加前,都要經(jīng)過CBAM 的作用,再輸出到結(jié)構(gòu)下層或檢測層中,如圖7 所示。
圖4 引入CBAM 模塊的Inception-ResNet-A 結(jié)構(gòu)
圖5 引入CBAM 模塊的Inception-ResNet-B 結(jié)構(gòu)
圖6 引入CBAM 模塊的Inception-ResNet-C 結(jié)構(gòu)
圖7 改變生成特征圖的方式
在Win10 系統(tǒng)環(huán)境下,使用python 語言基于SSD的Tensorflow 版本的實(shí)驗(yàn)平臺。硬件配置選定處理器Intel(R)Core i58400,顯卡NVIDIA GeForce GTX 1080。設(shè)置批量尺寸為16,動量參數(shù)為0.90。第一段迭代訓(xùn)練次數(shù)為120000,學(xué)習(xí)率設(shè)置為0.0005,第二段迭代訓(xùn)練次數(shù)為40000,學(xué)習(xí)率設(shè)置為0.00005。針對行人目標(biāo)選用INRIA 數(shù)據(jù)集,車輛目標(biāo)選用KITTI 數(shù)據(jù)集,還要分別混合自建數(shù)據(jù)集一并參與訓(xùn)練。
本實(shí)驗(yàn)使用以下指標(biāo)分析算法的檢測性能。
1)精確度P(Precision)衡量檢測出的目標(biāo)是真實(shí)目標(biāo)的比率,表示檢測出的目標(biāo)到底是不是行人和車輛的正確程度。
2)召回率R(Recall)衡量檢測出的目標(biāo)數(shù)量占所有真實(shí)目標(biāo)數(shù)量的比率,表示所有行人和車輛是不是都被檢測出來。
3)單張圖片檢測時(shí)間衡量檢測的速度,時(shí)間越短,實(shí)時(shí)應(yīng)用性越好。
使用不同的數(shù)據(jù)集,采用對比實(shí)驗(yàn)驗(yàn)證在SSD 網(wǎng)絡(luò)中引入CBAM 模塊和在SSD 網(wǎng)絡(luò)中引入包含CBAM 模塊的Inception-ResNet-v2 結(jié)構(gòu)對提升被遮擋目標(biāo)檢測效果的有效性。改進(jìn)后的模型在檢測被遮擋行人和車輛目標(biāo)的精度上都有提升,2 種算法分別提升0.5%和7.2%的精準(zhǔn)率,1.6%和5.0%的召回率。單張圖片的平均檢測時(shí)間隨模型復(fù)雜程度的提升而略微增長。數(shù)據(jù)結(jié)果分析見表1。
表1 引入CBAM 改進(jìn)算法前后檢測實(shí)驗(yàn)結(jié)果
如圖8 所示,通過對比不同算法輸出的不同檢測圖可以發(fā)現(xiàn),不論是受到同類目標(biāo)的遮擋還是受到干擾項(xiàng)目標(biāo)的遮擋,部分被遮擋目標(biāo)在改進(jìn)后的算法中都能被檢測出來,減小了一定程度的漏檢和錯(cuò)檢。
圖8 檢測結(jié)果對比圖
針對復(fù)雜環(huán)境下行人和車輛目標(biāo)被遮擋情況下的檢測問題,以SSD 目標(biāo)檢測算法為基礎(chǔ),從6 張生成特征圖入手,通過直接引入注意力機(jī)制CBAM 模塊和引入包含CBAM 模塊改進(jìn)的Inception-ResNet-v2 網(wǎng)絡(luò)結(jié)構(gòu)這2 種不同算法,分別改變特征圖的生成方式,增強(qiáng)了模型的特征提取能力,再利用混合數(shù)據(jù)集參與訓(xùn)練,進(jìn)一步提高模型的泛化能力。