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