李青援,鄧趙紅,2,3+,羅曉清,顧 鑫,王士同
1.江南大學(xué) 人工智能與計(jì)算機(jī)學(xué)院,江蘇 無(wú)錫214122
2.復(fù)旦大學(xué) 計(jì)算神經(jīng)科學(xué)與類腦智能教育部重點(diǎn)實(shí)驗(yàn)室,上海200433
3.張江實(shí)驗(yàn)室,上海200120
4.江蘇北方湖光光電有限公司,江蘇 無(wú)錫214035
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)的一個(gè)關(guān)鍵任務(wù),其任務(wù)是給出一張圖片,檢測(cè)出圖片中目標(biāo)物體的邊界框,并給出目標(biāo)的類別。近年來(lái)隨著深度學(xué)習(xí)的蓬勃發(fā)展,深度卷積網(wǎng)絡(luò)在目標(biāo)檢測(cè)方面取得了顯著成功。當(dāng)前主流的目標(biāo)檢測(cè)框架主要有兩個(gè)分支:兩階段檢測(cè)方法,包括R-CNN(regions with convolutional neural network features)[1]、Fast R-CNN[2]、Faster R-CNN[3]、RefineNet[4]等;一階段檢測(cè)方法,包括YOLO(you only look once)[5-7]、SSD(single shot multibox detector)[8]、RetinaNet[9]等。兩階段檢測(cè)方法首先在第一階段通過(guò)一個(gè)簡(jiǎn)單的提議網(wǎng)絡(luò)產(chǎn)生候選對(duì)象位置的稀疏集,然后在第二階段對(duì)候選位置進(jìn)行分類和回歸得到最后的檢測(cè)結(jié)果。一階段檢測(cè)方法,通過(guò)預(yù)先定義一些不同尺度和長(zhǎng)寬比的默認(rèn)框,然后直接對(duì)默認(rèn)框進(jìn)行分類和回歸得到檢測(cè)結(jié)果。由于兩階段檢測(cè)方法經(jīng)歷了兩次分類和回歸,其檢測(cè)精度相對(duì)于一階段檢測(cè)算法更高,但檢測(cè)速度遠(yuǎn)遠(yuǎn)低于只進(jìn)行一次分類和回歸的一階段檢測(cè)方法。
檢測(cè)尺寸跨度很大的目標(biāo)是目標(biāo)檢測(cè)任務(wù)的一大挑戰(zhàn)。一些檢測(cè)器只采用一個(gè)尺度的特征圖檢測(cè),很難檢測(cè)不同尺寸的目標(biāo)(圖1(a))。為了實(shí)現(xiàn)尺度不變性,圖像金子塔和特征金子塔等方法被提出。圖像金字塔是將輸入圖片調(diào)整為不同的分辨率,然后將這些圖片分別送到網(wǎng)絡(luò)去檢測(cè),這種手工設(shè)計(jì)特征的方法在傳統(tǒng)的檢測(cè)方法如DPM(deformable part model)[10]中被廣泛應(yīng)用,圖像金字塔在一定程度上可以解決尺度變換問(wèn)題,但其是在每個(gè)尺寸圖像上分別檢測(cè),資源消耗巨大。特征金字塔是將深度卷積模型產(chǎn)生的不同尺度的特征圖構(gòu)成金字塔,然后分別進(jìn)行檢測(cè),這種方法可以避免對(duì)圖像進(jìn)行重復(fù)運(yùn)算,極大減少了資源消耗,被主流檢測(cè)模型廣泛采用。SSD模型是最早嘗試將特征金子塔用于目標(biāo)檢測(cè)的算法之一(圖1(b))。它運(yùn)用深度卷積網(wǎng)絡(luò)前向傳播產(chǎn)生的不同尺度的特征圖進(jìn)行檢測(cè),使用淺層特征圖預(yù)測(cè)小目標(biāo),深層特征圖預(yù)測(cè)大目標(biāo)。
圖1 不同類型檢測(cè)方法Fig.1 Different types of detection methods
基于自底向上的方法產(chǎn)生的特征圖,淺層特征圖包含語(yǔ)義信息不足,深層特征圖缺少細(xì)節(jié)信息,結(jié)果造成對(duì)小目標(biāo)識(shí)別較差。為了解決這一問(wèn)題,多種特征圖融合方法如FPN(feature pyramid network)[11](圖1(c))、PAFPN(path aggression FPN)[12]被提出。它們以自頂向下或自底向上的方法依次將深層特征圖與淺層特征圖進(jìn)行融合。這些融合方法是簡(jiǎn)單有效的,但是由于不同尺度特征圖存在較大的信息差異,直接采用相加或通道維度拼接的方法忽略這些差異,容易產(chǎn)生冗余信息和噪聲信息,因此這種融合方法是次優(yōu)的,仍有很大的提升空間。同時(shí),由于小目標(biāo)在圖像中占有較小的像素空間,外觀等細(xì)節(jié)信息模糊,檢測(cè)較為困難。因此檢測(cè)小目標(biāo)的關(guān)鍵因素是采用分辨率較高、包含明顯外觀細(xì)節(jié)信息的特征圖。另外結(jié)合不同感受野的語(yǔ)義信息,利用其所處環(huán)境幫助識(shí)別也是重要的。
結(jié)合上述分析,本文提出了新的特征增強(qiáng)方法對(duì)不同尺度的特征圖進(jìn)行有效融合來(lái)增強(qiáng)特征的表示能力。其主要包含如下三方面的工作。
(1)設(shè)計(jì)了一種特征融合方法。該方法將兩個(gè)不同尺度的特征圖采樣到同一維度,然后通過(guò)乘法融合和卷積操作產(chǎn)生一個(gè)包含兩個(gè)特征圖信息的中間層,該中間層相當(dāng)于一個(gè)模板特征圖,其可表示網(wǎng)絡(luò)學(xué)習(xí)到的不同尺度特征圖之間存在的信息差異。最后,將采樣后的特征圖與模板特征圖再一次融合,從而避免不同尺度特征圖直接融合產(chǎn)生冗余信息,并緩解不同尺度特征圖的信息差異給融合帶來(lái)的負(fù)面影響。
(2)根據(jù)池化金字塔[13]的思想設(shè)計(jì)了一個(gè)深度特征提取模塊來(lái)捕獲不同感受野的信息,充分利用局部和全局信息提高對(duì)不同尺寸目標(biāo)的檢測(cè)能力。為了有效地融合不同尺度的特征圖,本文對(duì)池化金字塔做了相應(yīng)的修改。首先,為了減少信息的損失,本文保留了每個(gè)分支原始的通道維度,并且在池化操作后經(jīng)過(guò)3×3 的卷積以減少池化操作帶來(lái)的負(fù)面影響。其次,不同于池化金字塔模塊,該特征提取模塊需要指定特征圖輸出的尺度。各分支的特征圖進(jìn)行池化,并經(jīng)過(guò)上采樣以達(dá)到目標(biāo)尺寸,同時(shí),對(duì)原特征圖進(jìn)行適應(yīng)性池化以達(dá)到目標(biāo)尺寸。最后,在相同尺寸下對(duì)原特征圖和分支產(chǎn)生的特征圖進(jìn)行拼接。
(3)設(shè)計(jì)了一種輕量級(jí)的注意力模塊,將特征圖像素點(diǎn)之間的相似關(guān)系與各通道之間的重要性關(guān)系進(jìn)行有效融合,以進(jìn)一步提升特征圖的表示能力,從而幫助模型獲取有用信息,并抑制無(wú)用信息。
在實(shí)驗(yàn)中本文使用SSD[8]作為基線網(wǎng)絡(luò),適當(dāng)?shù)馗牧薙SD網(wǎng)絡(luò)的架構(gòu)并將提出的方法應(yīng)用到改進(jìn)的SSD 框架上,以解決SSD 算法各預(yù)測(cè)特征圖之間信息不平衡的問(wèn)題。為了評(píng)估方法的性能,本文在PASCAL VOC[14]數(shù)據(jù)集上訓(xùn)練并測(cè)試了模型。本文主要貢獻(xiàn)如下:
首先,設(shè)計(jì)了輕量級(jí)的、有效的深度特征融合模塊和非局部通道注意力模塊,可應(yīng)用于任何基于卷積的網(wǎng)絡(luò)。
其次,將提出的模塊應(yīng)用于SSD 框架有效地克服了其不足。
最后,在PASCAL VOC 基準(zhǔn)數(shù)據(jù)集上有效地驗(yàn)證了所提方法的有效性。
目標(biāo)檢測(cè)包含目標(biāo)定位和分類。從傳統(tǒng)的基于手工設(shè)計(jì)特征的方法如SIFT(scale-invariant feature transform)[15]和HOG(histogram of oriented gradients)[16]到基于深度卷積網(wǎng)絡(luò)的方法,目標(biāo)檢測(cè)技術(shù)有了巨大發(fā)展。最近基于深度卷積網(wǎng)絡(luò)的檢測(cè)算法取得了顯著成功,一般可以分為兩類:基于區(qū)域提議的兩階段檢測(cè)算法和基于回歸導(dǎo)向的一階段檢測(cè)算法。
兩階段檢測(cè)算法由兩個(gè)步驟組成:產(chǎn)生提議區(qū)域和對(duì)提議區(qū)域進(jìn)行細(xì)化調(diào)整。首先嘗試在目標(biāo)檢測(cè)方面使用深度學(xué)習(xí)的算法是R-CNN[1]。R-CNN 使用選擇性搜索算法產(chǎn)生提議區(qū)域,然后使用卷積網(wǎng)絡(luò)對(duì)每個(gè)區(qū)域進(jìn)行特征提取,最后使用線性支持向量機(jī)(support vector machine,SVM)預(yù)測(cè)目標(biāo)可能存在的位置并對(duì)目標(biāo)進(jìn)行分類。然而由于R-CNN對(duì)每一個(gè)提議區(qū)域都進(jìn)行卷積,其速度較慢。Fast R-CNN[2]只進(jìn)行一次特征提取,因此速度比R-CNN 更快。但是這兩個(gè)方法仍然把區(qū)域提議劃分成了單獨(dú)的階段。Faster R-CNN[3]將區(qū)域提議階段、特征提取階段、邊界框分類回歸階段整合到一個(gè)模型,并可以進(jìn)行端到端的訓(xùn)練。尤其是區(qū)域提議網(wǎng)絡(luò)(region proposal network,RPN)的提出,進(jìn)一步提高了檢測(cè)的速度和精度。兩階段檢測(cè)算法對(duì)于目標(biāo)特征的學(xué)習(xí)是十分有效的,但是它們計(jì)算效率普遍不高。
不同于兩階段的檢測(cè)算法,一階段的檢測(cè)算法遺棄了區(qū)域提議階段,因此檢測(cè)速度更快。YOLO[5]提出使用單個(gè)卷積網(wǎng)絡(luò)同時(shí)預(yù)測(cè)多個(gè)邊界框以及它們的類別概率。YOLO 的速度雖然很快但其檢測(cè)精度遠(yuǎn)遠(yuǎn)低于兩階段檢測(cè)算法。相對(duì)于YOLO中直接預(yù)測(cè)目標(biāo)中心點(diǎn)的位置,YOLOv2[6]采用的錨框機(jī)制更利于檢測(cè),極大提高了檢測(cè)精度。不同于YOLO采用單一尺度的特征圖進(jìn)行預(yù)測(cè),SSD算法在主干網(wǎng)絡(luò)的頂部建立了特征金字塔,利用不同尺度的特征圖檢測(cè)不同尺寸的目標(biāo)。相對(duì)于YOLOv2,SSD算法取得了更好的性能?;赟SD 算法,DSSD(deconvolutional SSD)[17]算法采用編碼-解碼的方式融合特征圖,提升了SSD 算法的檢測(cè)精度,但是引入了大量的計(jì)算。FSSD(feature fusion SSD)[18]在SSD 特征金字塔的底部插入一個(gè)融合模塊以提升SSD 檢測(cè)精度,在保證SSD 檢測(cè)速度的同時(shí)輕微地提升了檢測(cè)精度。其他的工作,像RefineDet[4]通過(guò)多階段不斷調(diào)整錨框的位置來(lái)提高檢測(cè)精度。DSOD(deeply supervised object detector)[19]探索了如何從零訓(xùn)練一個(gè)檢測(cè)器,并且設(shè)計(jì)了基于DenseNet[20]的架構(gòu)來(lái)提高參數(shù)利用效率。
特征金字塔是最近目標(biāo)檢測(cè)算法解決跨尺度檢測(cè)問(wèn)題的關(guān)鍵技術(shù)。SSD 是其中一個(gè)最先嘗試使用多個(gè)不同尺度的特征圖分別預(yù)測(cè)目標(biāo)的類別和邊界框的算法。FPN 通過(guò)自頂向下路徑和側(cè)面路徑循序地結(jié)合兩個(gè)相鄰特征圖。這種連接有效地增強(qiáng)了特征描述,并且共享了深層特征圖包含的豐富語(yǔ)義信息。類似FPN,PAFPN[12]在FPN的基礎(chǔ)上添加了一個(gè)自底向上的分支,進(jìn)一步增強(qiáng)了特征描述。Libra RCNN[21]整合了所有尺度的特征以產(chǎn)生信息更平衡的特征圖。ION(inside-outside net)[22]、HyperNet[23]和Hypercolumn[24]將不同尺度的特征圖進(jìn)行拼接以提高檢測(cè)性能。
注意力在人類感知系統(tǒng)中扮演著重要的角色。人類視覺(jué)系統(tǒng)的一個(gè)重要特性是,不會(huì)嘗試同時(shí)處理整個(gè)場(chǎng)景,而是選擇性地聚焦于突出部分,以便更好地捕捉視覺(jué)結(jié)構(gòu)。深度學(xué)習(xí)中的注意力機(jī)制可以廣義理解為專注于解決特定任務(wù)的部分輸入,即從眾多信息中選擇出對(duì)當(dāng)前任務(wù)更關(guān)鍵的信息。
最近,也有很多工作嘗試將注意力機(jī)制整合到卷積網(wǎng)絡(luò)以提高其性能。Hu 等人[25]提出了Squeezeand-Excitation 模塊,他們運(yùn)用全局平均池化到特征圖以計(jì)算每個(gè)通道的重要程度,建模通道之間的關(guān)系。CBAM(convolutional block attention module)[26]提出了空間注意力模塊和通道注意力模塊,結(jié)合平均池化和最大池化操作處理特征圖,來(lái)更好地獲取目標(biāo)的顯著特征,并捕獲不同空間位置和不同通道之間的重要性。Non-Local[27]、Global Context Block[28]通過(guò)在查詢像素點(diǎn)與全局像素點(diǎn)建立關(guān)系,來(lái)建模像素點(diǎn)之間的長(zhǎng)距離關(guān)系。
長(zhǎng)距離關(guān)系可以理解為查詢點(diǎn)與其他像素點(diǎn)之間的關(guān)系,在卷積神經(jīng)網(wǎng)絡(luò)中建立長(zhǎng)距離關(guān)系的主要方式是通過(guò)堆疊卷積層以擴(kuò)大查詢點(diǎn)的感受野從而建立其與感受野內(nèi)像素的關(guān)系。然而這種方式計(jì)算效率不高且難以優(yōu)化。Non-Local網(wǎng)絡(luò)使用自注意力機(jī)制來(lái)建模長(zhǎng)距離關(guān)系,但是因?yàn)镹on-Local模塊需要計(jì)算每個(gè)查詢位置的注意力圖,隨著查詢點(diǎn)數(shù)量的增多,其計(jì)算復(fù)雜度會(huì)呈二次增長(zhǎng)。Global Context Block通過(guò)實(shí)驗(yàn)分析證明,Non-Local注意力模塊在每個(gè)查詢位置的注意力圖幾乎是相同的。因此所有查詢位置共享同一個(gè)注意力圖是一種有效的簡(jiǎn)化方法。
SSD 算法是一種十分有效的一階段檢測(cè)算法,SSD 算法使用VGG16[29]作為主干網(wǎng)絡(luò),用不同尺度的特征圖分別進(jìn)行檢測(cè)。SSD 算法預(yù)先在不同尺度的特征圖上定義不同尺寸和長(zhǎng)寬比的錨框,從淺層特征圖到深層特征圖錨框的尺寸逐漸變大,即用淺層特征圖預(yù)測(cè)小目標(biāo),用深層特征圖預(yù)測(cè)大目標(biāo),以此來(lái)解決檢測(cè)中存在的目標(biāo)尺度變化問(wèn)題。最后,SSD 算法使用NMS(non-maximum suppression)算法處理不同尺度特征圖的檢測(cè)結(jié)果。SSD 算法的整體框架如圖2所示。
圖2 SSD算法整體框架圖Fig.2 Overall framework of SSD
SSD算法采用不同尺度的特征圖分別進(jìn)行檢測(cè),存在淺層特征圖語(yǔ)義信息不足,深層特征圖細(xì)節(jié)信息缺失的問(wèn)題?,F(xiàn)有的跨尺度特征圖融合方法往往將不同尺度的特征圖采樣同一尺度,然后采用對(duì)應(yīng)特征圖元素相加或者在通道維度拼接的方式融合。其忽略了不同尺度特征圖之間存在的信息差異,融合后的特征圖可能包含冗余信息或者噪音信息。現(xiàn)有的注意力機(jī)制,大多是空間注意力機(jī)制與通道注意力機(jī)制的結(jié)合,空間注意力經(jīng)常采用擁有較大感受野的卷積層獲取局部特征。這不能有效利用像素點(diǎn)之間的關(guān)系。針對(duì)上述方法存在的優(yōu)缺點(diǎn),本文設(shè)計(jì)了新的特征增強(qiáng)模塊。不同于上述提到將相鄰兩層特征圖循序相加融合的方法,本文提出的特征融合模塊是以一種選擇融合的方式獲取兩個(gè)特征圖之間的互補(bǔ)信息,來(lái)進(jìn)行更深度的融合,從而有效緩解不同尺度特征圖的信息差異帶來(lái)的融合負(fù)面影響。同時(shí),為了擴(kuò)大特征圖空間位置的感受野,利用不同感受野的信息提升對(duì)小目標(biāo)的識(shí)別能力。本文根據(jù)池化金子塔的思想設(shè)計(jì)了深度特征提取模塊,通過(guò)多個(gè)分支產(chǎn)生不同感受野的特征圖并進(jìn)行整合,以使每個(gè)空間位置都有不同的感受野,有效緩解了跨尺度預(yù)測(cè)問(wèn)題。進(jìn)一步地,提出了非局部通道注意力模塊,將空間注意力和通道注意力整合為一個(gè)輕量級(jí)模塊,可有效捕獲通道之間的重要性關(guān)系,并在每個(gè)查詢點(diǎn)與全局像素點(diǎn)之間建立了長(zhǎng)距離關(guān)系。
卷積神經(jīng)網(wǎng)絡(luò)可以有效提取圖片的金字塔形式特征,從淺層特征到深層特征語(yǔ)義信息越來(lái)越豐富。SSD算法直接使用不同尺度的特征圖進(jìn)行檢測(cè),這使得SSD算法不能有效地將包含豐富細(xì)節(jié)信息的低級(jí)特征圖與包含豐富語(yǔ)義信息的高級(jí)特征圖進(jìn)行融合,從而SSD 算法的檢測(cè)結(jié)果是次優(yōu)的。尤其是對(duì)于小目標(biāo),小目標(biāo)在圖像中占有很少的像素,因此小目標(biāo)的識(shí)別需要充分結(jié)合其外觀細(xì)節(jié)信息和語(yǔ)義信息。有效融合不同尺度的特征對(duì)于提高基于卷積網(wǎng)絡(luò)的檢測(cè)器的性能是十分有必要的。
本文改進(jìn)了傳統(tǒng)的SSD 算法,主要思路是通過(guò)運(yùn)用提出的方法產(chǎn)生一個(gè)具有豐富表征能力的特征圖,然后將該特征圖通過(guò)一個(gè)特征金字塔提取層,以產(chǎn)生多尺度的特征圖來(lái)檢測(cè)不同尺寸的目標(biāo)。改進(jìn)的SSD架構(gòu)可以改善淺層特征圖語(yǔ)義信息不足的缺點(diǎn),同時(shí)豐富了深層特征圖的細(xì)節(jié)信息,極大提高了檢測(cè)性能。
改進(jìn)的整體架構(gòu)如圖3 所示。具體改進(jìn)方法如下,設(shè)置Conv4_3 層為優(yōu)化層,使用其他層來(lái)增強(qiáng)Conv4_3層的表示能力。首先使用特征融合模塊,將VGG主干網(wǎng)絡(luò)產(chǎn)生的Conv4_3層特征圖與上采樣后的Conv5_3層特征圖融合,融合后的特征圖再與上采樣后的Fc7 層融合,以進(jìn)一步提高Con4_3 層特征圖的語(yǔ)義信息。同時(shí),為了充分利用淺層特征圖的細(xì)節(jié)信息,本文利用特征提取模塊對(duì)Conv3_3層進(jìn)行特征提取。設(shè)置特征提取模塊的目標(biāo)尺寸為兩倍下采樣大小,使用特征融合模塊將Conv3_3層提取到的特征圖與融合后的Con4_3 層進(jìn)一步融合,以產(chǎn)生更具語(yǔ)義和細(xì)節(jié)的特征圖。然后將該特征圖經(jīng)過(guò)非局部通道注意力模塊,來(lái)突出有用信息,抑制噪音等無(wú)效信息。最后經(jīng)過(guò)一個(gè)特征金字塔層,提取不同尺度的特征圖以進(jìn)行不同尺寸目標(biāo)的檢測(cè)。
圖3 改進(jìn)的SSD算法整體架構(gòu)圖Fig.3 Overall framework of improved SSD
各模塊的詳細(xì)描述將在下面小節(jié)介紹。
融合不同尺度的特征圖已經(jīng)被證明可以有效地提高檢測(cè)性能,如FPN[11]、DSSD[17]、PAFPN[12]。由于不同尺度的特征圖有不同大小的感受野,這些不同尺度的特征圖存在大的信息差異,常規(guī)的融合手段是將兩個(gè)不同尺度的特征圖采樣到同一尺度然后采取直接相加或在通道維度拼接的方法對(duì)兩個(gè)特征圖進(jìn)行融合,這種做法忽略了不同尺度特征圖之間存在的信息差異,會(huì)產(chǎn)生次優(yōu)的融合結(jié)果。
針對(duì)上述問(wèn)題,本文設(shè)計(jì)了一個(gè)跨尺度特征融合模塊,有效地融合深層特征圖fh∈RH×W×C和淺層特征圖fl∈Rh×w×C。由于淺層特征圖具有較小的感受野,fl包含豐富的細(xì)節(jié)信息,同時(shí)也保留了一些背景噪音。相反由于多次下采樣操作,fh丟失了許多細(xì)節(jié)信息卻有著豐富的語(yǔ)義信息。這兩種特征圖之間存在大的信息差異??绯叨忍卣魅诤夏K首先將兩個(gè)特征圖采樣到同一尺度,然后將這兩個(gè)特征圖經(jīng)過(guò)各自的降維模塊以減少后續(xù)融合時(shí)的計(jì)算量。降維之后的兩個(gè)特征圖求哈達(dá)瑪積并經(jīng)過(guò)特征遷移層,產(chǎn)生一個(gè)對(duì)兩個(gè)特征圖有全局綜合描述的中間模板特征圖,然后將其與原始的特征圖fl、fh采用按元素相加的方式融合。fl、fh會(huì)根據(jù)模板特征圖的信息進(jìn)行互補(bǔ)融合,吸收彼此之間有用的信息來(lái)產(chǎn)生互補(bǔ)作用,即fl的噪音將被抑制,fh的語(yǔ)義將被增強(qiáng)。相比之前方法直接將兩個(gè)特征圖按元素相加或者拼接,本文的融合方法可以避免引入一些對(duì)檢測(cè)結(jié)果帶來(lái)負(fù)面影響的冗余信息。該跨尺度融合模塊包含兩個(gè)分支,如圖4所示,一條分支用來(lái)細(xì)化fl,另一條分支用來(lái)細(xì)化fh,細(xì)化后的兩個(gè)特征圖求哈達(dá)瑪積后再經(jīng)過(guò)特征遷移層可以產(chǎn)生一個(gè)包含兩者信息的中間層。網(wǎng)絡(luò)會(huì)學(xué)習(xí)到兩個(gè)特征圖之間的差異信息,最后原始特征圖與模板特征圖的融合相當(dāng)于互補(bǔ)選擇的過(guò)程。
圖4 特征融合模塊Fig.4 Feature fusion module
整個(gè)過(guò)程可以用下列公式描述:
語(yǔ)義信息對(duì)復(fù)雜場(chǎng)景以及小目標(biāo)的識(shí)別是重要的。例如,當(dāng)通過(guò)目標(biāo)的形狀等外觀信息無(wú)法判斷目標(biāo)是什么類別的時(shí)候,可以結(jié)合其所處的語(yǔ)義環(huán)境來(lái)幫助判斷。在深度卷積網(wǎng)絡(luò)模型中,可以用感受野的尺寸粗略描述模型利用了多少語(yǔ)義信息。Zhou等人[30]證明了CNN網(wǎng)絡(luò)的實(shí)際感受野遠(yuǎn)遠(yuǎn)小于理論感受野,尤其是在更深的卷積層中。因此為了獲取不同感受野的語(yǔ)義信息,更進(jìn)一步提取豐富的特征描述,根據(jù)池化金字塔的思想設(shè)計(jì)了一個(gè)深度特征提取模塊,通過(guò)該模塊可以讓特征圖的每一個(gè)空間位置看到不同大小空間的語(yǔ)義信息,進(jìn)一步擴(kuò)大特征圖的感受野。深度特征提取模塊架構(gòu)如圖5所示。其包含三個(gè)分支,每一個(gè)分支先經(jīng)過(guò)一個(gè)指定大小池化核的平均池化操作,并對(duì)下采樣后的特征圖經(jīng)過(guò)3×3的卷積以減少池化操作產(chǎn)生的信息偏差。然后將三個(gè)不同尺度的特征圖采用雙線性插值的方法上采樣到目標(biāo)尺寸,并將輸入的特征圖也采樣到目標(biāo)尺寸。最后將這些特征圖在通道維度進(jìn)行拼接,拼接后的特征圖再經(jīng)過(guò)3×3 的卷積層使信息充分融合。深度特征提取模塊分支的數(shù)量以及池化核大小都可以更改。本文中三個(gè)分支的池化核大小各自為2、4、8。
圖5 特征提取模塊Fig.5 Feature extraction module
空間注意力機(jī)制可以基于特征圖全局的關(guān)系,得到特征圖中每個(gè)位置的相關(guān)性。強(qiáng)調(diào)網(wǎng)絡(luò)感興趣的部分,抑制背景等無(wú)用部分。通道注意力機(jī)制,可以結(jié)合特征圖通道之間的關(guān)系,建模各通道之間的重要程度,通過(guò)通道注意力機(jī)制網(wǎng)絡(luò)可以獲得更多通道間的信息。非局部通道注意力詳細(xì)結(jié)構(gòu)如圖6所示。該模塊主要包含兩部分:一部分用來(lái)建模各通道之間的重要性關(guān)系,另一部分用來(lái)建模像素點(diǎn)之間的長(zhǎng)距離關(guān)系。其中長(zhǎng)距離關(guān)系分支采用Global Context Block 的全局注意力池化部分。它采用嵌入高斯計(jì)算像素點(diǎn)之間的相似度。對(duì)于輸入的特征圖F∈RC×W×H,非局部通道注意力機(jī)制主要分為以下步驟:(1)在像素點(diǎn)間的長(zhǎng)距離關(guān)系部分,對(duì)F先采用1×1的卷積Wk和Softmax函數(shù)得到注意力權(quán)重Fw∈RHW×1×1,然后與鍵值項(xiàng)特征Fk∈RC×HW相乘得到長(zhǎng)距離關(guān)系的全局特征z∈RC×1×1。(2)F經(jīng)過(guò)全局最大池化和全局平均池化產(chǎn)生特征圖FM、FA;FM、FA經(jīng)過(guò)同一個(gè)遷移層網(wǎng)絡(luò)產(chǎn) 生對(duì)應(yīng)元素相加后經(jīng)過(guò)Sigmoid激活產(chǎn)生通道注意力圖。(3)將步驟(1)和步驟(2)產(chǎn)生的注意力圖進(jìn)行對(duì)應(yīng)元素相乘融合,然后經(jīng)過(guò)特征遷移層后得到非局部注意力特征圖。(4)將原始的特征圖與非局部注意力特征圖相加。以上過(guò)程可以用下面公式表示:
圖6 非局部通道注意力機(jī)制模塊Fig.6 Non-local channel attentional mechanism module
其中,x是輸入的特征圖,u是產(chǎn)生的通道注意力圖,z是產(chǎn)生的長(zhǎng)距離關(guān)系注意力圖,Np=H×W是特征圖中像素點(diǎn)的數(shù)量。T(·)=ReLU(BN(conv2d(x)))是特征遷移層。是Sigmoid激活函數(shù),C(·)、M(·)、G(·)分別表示卷積、全局最大池化和全局平均池化?!惚硎竟_(dá)瑪積。
全局最大池化可以提取特征圖最顯著的內(nèi)容捕獲目標(biāo)特征的差異信息。全局平均池化可以捕獲特征圖全局的綜合信息。融合全局最大池化和全局平均池化產(chǎn)生的特征圖對(duì)建立特征圖通道之間的關(guān)系有重要意義。
通道注意力圖可以指導(dǎo)檢測(cè)器更應(yīng)該關(guān)注哪一個(gè)通道。長(zhǎng)距離關(guān)系注意力圖可以有效地建立查詢點(diǎn)與全局像素點(diǎn)的聯(lián)系,以獲取更全面的空間相關(guān)信息。通過(guò)融合通道注意力圖和空間注意力圖可以提高原始特征圖的表征能力,讓每個(gè)空間位置和每個(gè)通道產(chǎn)生聯(lián)系,有效地提高檢測(cè)能力。
圖7為特征金字塔產(chǎn)生層。
圖7 特征金字塔產(chǎn)生層Fig.7 Pyramid feature generation layers
為了評(píng)估提出方法的有效性,在PASCAL VOC數(shù)據(jù)集上設(shè)計(jì)了豐富的實(shí)驗(yàn)進(jìn)行驗(yàn)證。在PASCAL VOC數(shù)據(jù)集上,如果預(yù)測(cè)框與真實(shí)框的交并比(IOU)大于0.5則預(yù)測(cè)結(jié)果是正確的。采用平均精確度(11 point mAP)作為評(píng)價(jià)指標(biāo)。
PASCAL VOC 數(shù)據(jù)集包括20 個(gè)類別,即aero、bike、bird、boat、bottle、bus、car、cat、chair、cow、table、dog、horse、mbike、person、plant、sheep、sofa、train、tv。使用PASCAL VOC2007trainval 和PASCAL VOC2012 trainval訓(xùn)練模型,使用PASCAL VOC2007test 和PASCAL VOC2012test 數(shù)據(jù)集測(cè)試模型。訓(xùn)練集一共16 551 張圖片,PASCAL VOC2007 測(cè)試集一共4 952 張圖片,PASCAL VOC2012 測(cè)試集一共10 991張圖片。
本文應(yīng)用提出的方法到SSD 框架,并基于Pytorch 框架實(shí)現(xiàn)了模型。本文使用VGG16 作為主干網(wǎng)絡(luò),實(shí)驗(yàn)中所有上采樣操作后會(huì)經(jīng)過(guò)3×3卷積和ReLU 激活,F(xiàn)c7 層上采樣后的卷積層通道數(shù)調(diào)整為512 以便后續(xù)融合。深度特征融合模塊和非局部注意力模塊瓶頸層的降維比率均設(shè)為1/4。訓(xùn)練策略、數(shù)據(jù)增強(qiáng)策略以及損失函數(shù)和錨框參數(shù)均與原始SSD一致。本文使用RTX-2080Ti 顯卡進(jìn)行實(shí)驗(yàn)。對(duì)于300×300 輸入分辨率圖片,Batch size設(shè)為16,初始學(xué)習(xí)率設(shè)為0.001,120 000 次和140 000 次迭代后學(xué)習(xí)率依次下降10%,迭代180 000 次得到最終的網(wǎng)絡(luò)模型。對(duì)于512×512 輸入分辨率圖片,Batch size設(shè)為8,初始學(xué)習(xí)率0.001,迭代140 000次和160 000次后學(xué)習(xí)率依次下降10%,總共迭代240 000次得到最終模型。
本文在各個(gè)類別的檢測(cè)結(jié)果上與SSD300、DSSD321、ION300 算法進(jìn)行了對(duì)比。各類別檢測(cè)精度詳細(xì)結(jié)果如表1 所示。比較四種算法在PASCAL VOC2007 測(cè)試集上的檢測(cè)結(jié)果可以看出,應(yīng)用本文提出的模塊對(duì)SSD算法進(jìn)行改進(jìn)可以極大提高檢測(cè)精度,各個(gè)類別相對(duì)其他算法有了明顯的精度提升,mAP 比原始的SSD 算法提高了2.9 個(gè)百分點(diǎn)。對(duì)比結(jié)果如圖8所示。同時(shí),為了進(jìn)一步評(píng)估所提算法的有效性,在相同的實(shí)驗(yàn)環(huán)境下,將SSD512 模型與本文模型對(duì)PASCAL VOC2012測(cè)試集的預(yù)測(cè)結(jié)果分別提交至PASCAL VOC 官方評(píng)測(cè)網(wǎng)站進(jìn)行評(píng)測(cè),評(píng)測(cè)結(jié)果如表2 所示。從表中可以看出,在PASCAL VOC2012測(cè)試集上本文方法的各類別檢測(cè)精度相對(duì)原始SSD算法有了顯著提升。
表2 PASCAL VOC2012test數(shù)據(jù)集上20類別檢測(cè)精度對(duì)比Table 2 Comparison of detection accuracy of 20 categories on PASCAL VOC2012test dataset 單位:%
圖8 PASCAL VOC 2007test數(shù)據(jù)集上4種檢測(cè)算法mAP對(duì)比Fig.8 Comparison of mAP of 4 detection algorithms on PASCAL VOC2007test dataset
表1 PASCAL VOC2007test數(shù)據(jù)集上20類別檢測(cè)精度對(duì)比Table 1 Comparison of detection accuracy of 20 categories on PASCAL VOC2007test dataset 單位:%
為了比較提出方法與其他主流檢測(cè)算法的差異,本文進(jìn)一步在PASCAL VOC2007 測(cè)試集上對(duì)比了多種算法的檢測(cè)精度和檢測(cè)速度,具體比較結(jié)果如表3所示。從表中可以看出,本文算法與其他算法相比,在輸入分辨率相近的情況下檢測(cè)精度更好,且能達(dá)到實(shí)時(shí)的檢測(cè)效果。
表3 PASCAL VOC2007test數(shù)據(jù)集上檢測(cè)速度和檢測(cè)精度對(duì)比Table 3 Comparison of detection speed and accuracy on PASCAL VOC2007test dataset
為了更直觀地評(píng)價(jià)本文算法,圖9給出了SSD模型和本文模型在PASCAL VOC2007測(cè)試集下部分圖片檢測(cè)結(jié)果對(duì)比。兩個(gè)模型均在VOC07+12 數(shù)據(jù)集上訓(xùn)練,輸入圖片分辨率均為300×300。通過(guò)對(duì)比可看出,本文算法在復(fù)雜場(chǎng)景下魯棒性更好,對(duì)于SSD算法沒(méi)有檢測(cè)出的目標(biāo),本文算法可有效檢測(cè),且對(duì)遮擋目標(biāo)以及小目標(biāo)的識(shí)別優(yōu)于原始SSD算法。
圖9 本文與SSD算法檢測(cè)結(jié)果對(duì)比Fig.9 Comparison of detection results between SSD and ours
為了驗(yàn)證各模塊的有效性,本文設(shè)計(jì)了一系列控制變量實(shí)驗(yàn),測(cè)試在添加或不添加提出的方法下模型檢測(cè)精度和檢測(cè)速度的差異。實(shí)驗(yàn)環(huán)境與3.2節(jié)相同。在PASCAL VOC2007測(cè)試集下進(jìn)行了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表4所示。SSD*表示只改變?cè)糞SD的架構(gòu)不使用任何本文提出的方法。實(shí)驗(yàn)中Conv3_3層直接經(jīng)過(guò)一個(gè)3×3 卷積調(diào)整維度到512并下采樣到38×38。Conv5_3 上采樣后直接與Conv4_3 相加融合然后Fc7 層經(jīng)過(guò)上采樣后再與Conv4_3 相加融合,最后與調(diào)整維度后的Conv3_3 相加融合。SSD*+EM 表示在SSD*的基礎(chǔ)上Conv3_3 層使用的特征提取模塊。+FM表示相加融合改為所提的特征融合。+NCA 表示融合后的特征圖經(jīng)過(guò)非局部通道注意力模塊。通過(guò)觀察表4 可以看出,在改進(jìn)版的SSD 框架中逐步加入提出的方法可以明顯提高檢測(cè)精度,尤其是使用深度特征融合模塊代替相加融合操作可以顯著提高檢測(cè)精度。非局部注意力模塊在略微損失檢測(cè)速度的前提下提升了0.7 個(gè)百分點(diǎn)的檢測(cè)精度。當(dāng)將三個(gè)模塊全部加到改進(jìn)版的SSD框架中可達(dá)到最好的檢測(cè)精度。
表4 消融實(shí)驗(yàn)對(duì)比結(jié)果Table 4 Comparative results of ablation experiments
為了更直觀地說(shuō)明非局部通道注意力模塊的有效性,本文使用Grad-CAM[34]可視化了PASCALVOC2007測(cè)試集的部分圖片,如圖10所示。Grad-CAM是最近提出的一種可視化方法,它使用梯度來(lái)計(jì)算特征圖空間位置的重要性。顏色越深說(shuō)明該區(qū)域?qū)︻悇e識(shí)別的影響越大。通過(guò)觀察圖10可以發(fā)現(xiàn),非局部通道注意力機(jī)制可以進(jìn)一步突出對(duì)當(dāng)前目標(biāo)任務(wù)有利的信息,并且有效抑制了背景等對(duì)檢測(cè)沒(méi)有幫助的信息,因此可以推斷非局部通道注意力機(jī)制對(duì)檢測(cè)精度的提升有很大幫助。
圖10 注意力圖可視化Fig.10 Visualization of attention maps
針對(duì)傳統(tǒng)SSD算法存在的多尺度獨(dú)立預(yù)測(cè)造成的各尺度信息不平衡,以及魯棒性差、小目標(biāo)識(shí)別差等問(wèn)題,本文設(shè)計(jì)了新的架構(gòu)以解決這些問(wèn)題。首先設(shè)計(jì)了一種新的特征圖融合方法,有效地融合了不同尺度特征圖,同時(shí)緩解了不同尺度特征圖之間的信息差異帶來(lái)的融合負(fù)面影響。其次為了增大特征圖的感受野,充分利用不同感受野下的語(yǔ)義信息,進(jìn)一步提高特征圖的表示能力,本文根據(jù)池化金字塔的思想設(shè)計(jì)了深度特征提取模塊,利用不同尺寸的池化核獲取不同大小的感受野,以使特征圖利用不同感受野的語(yǔ)義信息,從而提高對(duì)目標(biāo)的識(shí)別能力。本文還設(shè)計(jì)了一種非局部通道注意力機(jī)制,將像素點(diǎn)的長(zhǎng)距離關(guān)系注意力和通道關(guān)系注意力融合到一個(gè)輕量級(jí)模塊,突出特征圖對(duì)當(dāng)前任務(wù)有效的信息,抑制背景等無(wú)效信息,進(jìn)一步提升了檢測(cè)精度。最后基于上述方法,本文改進(jìn)SSD 算法的架構(gòu),改進(jìn)的SSD 算法有了大幅度的檢測(cè)精度提升,同時(shí)還保留了實(shí)時(shí)性。本文設(shè)計(jì)的所有模塊均可用于基于卷積的神經(jīng)網(wǎng)絡(luò),即插即用。未來(lái)將繼續(xù)改進(jìn)各個(gè)模塊的架構(gòu)以在保持精度提升的前提下,進(jìn)一步減少模塊的計(jì)算量,以較少的速度損失獲取更多的精度提升。