梁延禹,李金寶,3+
1.黑龍江大學計算機科學技術學院,哈爾濱 150080
2.黑龍江大學黑龍江省數據庫與并行計算重點實驗室,哈爾濱 150080
3.黑龍江大學軟件學院,哈爾濱 150080
近幾年隨著深度學習的發展,越來越多的目標檢測算法被提出。對于具有較高分辨率的大目標,目前的檢測方法已經取得了較好的檢測結果[1-3]。但是這些方法在對包含語義信息相對較少的小目標檢測時效果較差。而小目標檢測在日常生活普遍存在,例如遠距離的人臉識別、自動駕駛中交通標志檢測等。因此小目標檢測仍然是目標檢測中的一項具有挑戰性的任務。
卷積神經網絡目前廣泛應用在目標檢測中,它利用卷積核實現了局部連接,傳遞相鄰兩個特征層之間的信息。為了獲取距離較遠的局部特征之間的相關性,通常需要經過大量的卷積操作。對于在整個圖像中占比較小、包含語義信息較少的小目標而言,卷積操作會損失大量的細節信息,在后續傳播中可能造成小目標的細節特征丟失。
最近提出的基于深度學習的方法研究了小目標檢測任務中目標的特征表達能力弱的問題。Chen等人[4]通過擴大輸入圖片的尺度進而增加小目標的分辨率,提高了小目標的檢測準確率,但同時也降低了網絡的檢測速度。2016年,Liu等人[5]首次提出利用不同尺度特征圖進行的目標檢測方法(single shot multibox detector,SSD),使小目標能夠在目標細節信息較為豐富的淺層特征圖中進行檢測。但是,淺層特征中缺乏目標的上下文語義信息,會導致檢測到的小目標出現局部缺失等問題。為了解決此類問題,Zhu等人[6]利用特征金字塔結構將網絡的深、淺層特征進行結合,以獲取小目標的豐富特征。Li等人[7]提出利用感知生成對抗網絡生成小目標的高分辨率表達特征,縮小小目標與大目標特征之間的差距以提升小目標檢測效果,但該網絡中包含的參數較多,增加了計算負擔。
針對上述小目標檢測存在的問題,本文提出一種多尺度非局部注意力網絡(multi-scale non-local attention network,MSNAN)。首先,MSNAN利用淺層特征圖中目標細節信息相對豐富的特點,在淺層特征中進行小目標的檢測。其次,為了提高網絡的特征獲取能力,又在深層特征中利用密集連接結構實現特征的跨層連接,加強深層網絡的信息傳輸能力。不僅提高了小目標檢測的準確率,而且使模型具有實時性。為了彌補淺層特征中缺乏的目標上下文語義信息,本文設計了一個非局部通道注意力模塊(non-local channel attention block,NLCA-Block)。該模塊包括兩個過程,在非局部操作過程中通過合并通道信息獲取全局空間信息對局部特征的影響;在注意力機制過程中利用池化操作收集每個通道的全局信息,以生成通道間的非線性關系。該模塊既利用空間域信息增強了局部特征表達能力,又利用通道域注意力機制對通道間的特征進行校準,將空間注意力機制與通道注意力機制相結合,豐富了淺層特征中小目標的上下文語義信息。本文提出的MSNAN在PASCAL VOC[8]、MS COCO[9]數據集上的實驗結果表明,與現有目標檢測方法相比,MSNAN能夠有效提高小目標的檢測效果,并且可以達到實時檢測。
利用多尺度特征進行檢測可以提高小目標的檢測效果。其中多尺度特征通常可以通過多尺度的輸入圖片[10]或在網絡結構中選擇多尺度特征圖實現,進而對不同大小的目標進行檢測。
Shen等人[11]提出一種無需預訓練模型的目標檢測算法,利用密集連接結構[12]的思想實現模塊間的特征傳遞,最終可以達到與使用預訓練模型檢測方法相近的檢測精度。Cai等人[13]針對多尺度目標的檢測問題,在不同檢測層設計了不同的檢測方法以檢測相應的目標。利用反卷積操作增加淺層特征圖的分辨率,雖然提高了小目標檢測效果,但增加了模型計算量。Liu等人[14]模擬人類視覺的感受野,通過擴張卷積操作有效增大了感受野,提高了目標檢測準確率。
為了獲取目標更加豐富的語義信息,一些方法采用將卷積過程中的多個特征圖相融合的方法增強特征的表達能力[15-16]。Lin等人[17]將深層特征和淺層特征進行融合,逐步增加了淺層特征的高級語義信息,進而提升了整個模型的檢測效果。Zhou等人[18]采用自帶高低層特征融合的DenseNet網絡[12]作為特征提取網絡,并融合各部分預測結果得到最終結果。其中特征融合過程采用類似特征金字塔的結構,利用尺度轉移層生成尺寸較大的特征映射。Fu等人[19]利用反卷積模型將不同尺度特征進行融合,形成了類似沙漏型的網絡結構,在多個檢測層中獨立進行檢測,但引入大量參數,降低了模型檢測速度。Cui等人[20]將淺層特征與深層特征進行融合,采用7個不同尺度特征圖進行檢測,在小目標檢測任務中取得較好檢測效果。
上述檢測方法的目的是通過多尺度特征獲取小目標的豐富信息,利用融合后的特征增強小目標特征表達能力,進而提高小目標檢測準確率。然而,這些方法并沒有在獲取小目標上下文語義信息的同時兼顧模型的計算量,會產生降低網絡檢測速度的問題。
最近注意力機制受到了人們的廣泛關注,這種方法常應用于圖像分類、檢測等方面。一些研究利用注意力機制增強特征的表達能力,提高目標檢測任務的檢測效果。
Hu等人[21]首次提出利用注意力機制對通道間的相互依賴關系進行建模。該方法獲得特征圖的每個通道的全局信息,并為每個特征通道重新分配權重,根據重要性提升或抑制相應的特征。Kong等人[22]在特征金字塔結構基礎上,將全局注意力與局部注意力重新組合,進而在空間和通道間提取目標全局和局部的相關特征。Wang等人[23]提出了非局部神經網絡,通過建立特征圖中位置間的聯系,增強空間局部特征的表達能力。然而,非局部操作僅利用特征的空間信息相關性,對每個通道內的特征進行相同處理,忽略了不同通道間的信息對目標特征的影響,無法充分提取小目標的細粒度特征,影響最終的檢測效果。
本文在淺層特征的空間域和通道域兩方面對目標特征進行增強和校準,利用全局信息對局部信息的影響,獲取空間局部信息的遠距離依賴關系,并利用通道注意力機制增強淺層特征中小目標的表達能力。同時,在深層特征中利用密集連接結構實現不相鄰的特征層之間的信息傳遞,增強網絡的特征獲取能力。在實現深度網絡的特征提取的同時減少模型的參數量,提高網絡中特征的利用率和網絡的運行速度。

Fig.1 Architecture model of multi-scale non-local attention network圖1 多尺度非局部注意力網絡整體框架結構
針對目標檢測任務中小目標上下文語義信息缺失的問題,本文提出了一個多尺度非局部注意力網絡MSNAN,如圖1所示。MSNAN是一個端到端的網絡,它主要由兩部分組成:一個是淺層網絡中的非局部通道注意力模塊;另一個是深層網絡中的密集連接模塊。整個網絡以VGG-16作為基礎部分,分別用兩個卷積過程替換其兩個全連接層。在Conv7層后利用連續的卷積層進行下采樣操作,獲取不同尺度的特征圖,整個網絡共包括11個卷積過程。選擇基礎網絡中的2個卷積層作為檢測層,在新添加的卷積過程中選擇4個卷積層作為檢測層,共利用6個不同尺度檢測層構建多尺度目標檢測網絡。
非局部通道注意力模塊:為增強淺層特征中小目標的上下文語義信息,在網絡的淺層部分添加非局部通道注意力模塊。該模塊首先利用1×1的卷積操作對特征圖的通道進行合并,以得到特征信息空間域的相關性。然后利用全局平均池化操作對特征圖的空間維度進行壓縮,添加Relu激活函數和Sigmoid函數重構通道間的非線性關系,彌補忽略的通道間的目標特征關系。使目標特征能夠利用空間及通道間的全局信息得以增強。選取網絡淺層部分中感受野較大的Conv4_3和Conv7兩個檢測層進行小目標檢測,其中NLCA-Block將不改變特征圖的大小,對應的特征圖尺寸分別為38和19,通道數分別為512和1 024。
密集連接模塊:利用NLCA-Block在淺層特征中得到了包含目標上下文信息的特征,同時還在網絡的深層部分采用卷積層的密集連接(dense block)結構,進一步加強不相鄰的特征層之間的信息傳遞,避免梯度消失問題。其中每個密集單元將之前所有層的特征作為輸入特征,并將輸出特征通過合并的方式與該單元的輸入特征進行拼接,作為下一個密集單元的輸入特征。選擇在Conv8和Conv9卷積過程中使用密集連接結構,這種連接結構增強了網絡中的特征傳遞。MSNAN中的密集連接模塊共包含6個密集連接單元,如圖1所示,X0作為密集連接模塊的輸入特征圖,通道數為512,卷積核大小為1×1和3×3,增長率設定為32,得到了輸出特征圖X5。將密集連接模塊替換卷積操作過程,提高了深層網絡的特征獲取能力并減少了模型的參數量。
最后,整個網絡中選取了6個不同尺度的特征圖對目標進行檢測,特征圖的大小分別為32、19、10、5、3、1。在每個檢測層中生成默認目標候選框,并計算候選框與真實標簽之間的損失。利用Softmax函數計算模型的分類損失,利用Smooth L1函數計算模型的回歸損失。
NLCA-Block的目的是增強網絡淺層部分小目標的上下文語義信息,然后在包含小目標上下文語義信息的特征層中進行小目標檢測。同時該模塊可增強整個網絡前饋過程中的特征表達能力,提高模型的檢測準確率。NLCA-Block如圖2所示。
非局部模塊(non-local block)[23]在圖像和視頻檢測中表現出了較好效果,該模塊可以壓縮通道特征、聚合全局空間特征以增強目標局部特征。該過程首先計算了當前像素點與特征圖內所有像素點間的相似性值,然后對相似性值進行加權求和以表示當前像素點特征信息,達到利用全局空間特征增強局部特征的目的。
NLCA-Block首先通過非局部操作獲取特征在空間域的全局信息,進而增強小目標空間維度特征表達能力,具體計算過程如下:

Fig.2 Non-local channel attention block圖2 非局部通道注意力模塊

其中,X、Y分別為輸入和輸出特征,X∈?H×W×C(H、W、C分別為特征圖的高度、寬度和通道數),X和Y具有相同維度。j為輸入特征中所有的位置索引,i為輸出特征的所有位置索引。F(Xi,Xj)函數用于計算Xi和Xj之間的相似性,g(Xj)函數計算位置j的特征表示,T(X)為歸一化參數。本文采用嵌入式高斯函數作為相似性函數,可表示為:

其中,θ(Xi)=Wθ Xi,φ(Xj)=WφXj。Wθ、Wφ是通過學習得到的權重矩陣。
結合殘差網絡結構的優點,該模塊將原始輸入信息X與非局部操作得到的結果WzY進行疊加,得到通過空間全局信息得以增強的目標特征Z。該模塊也可添加到其他的網絡框架中,可表示為:

其中,Y由式(1)計算得到,Wz為權重矩陣。
由于非局部操作過程把特征圖各通道進行了合并,忽略了特征圖通道之間的相關性。因此提出了非局部通道注意力模塊,進一步利用通道注意力機制獲取特征圖各通道間的依賴關系,使目標特征從空間和通道間均得以增強。該模塊對特征圖各通道進行全局平均池化,將特征圖空間維度進行壓縮,操作過程如下:

其中,H和W分別為特征圖的高度和寬度,ZC表示第C個通道的特征,i和j分別為特征圖高度和寬度的位置索引。通過式(4)對每個特征圖進行歸一化,將特征圖空間維度進行壓縮,在通道上響應全局分布。將H×W×C的輸入特征轉化為1×1×C的輸出特征,輸入與輸出特征在通道數上相匹配,從而獲取到每個通道域的全局信息。
對式(4)中得到的M重新計算通道的權重。利用兩個全連接層、Relu激活函數和Sigmoid函數獲取0~1之間的歸一化權重,并將歸一化后的權重加權到每個通道的特征上,完成通道維度上對特征Z的重新標定,并得到特征S,計算過程如下:

其中,特征Z由式(3)得到,M由式(4)得到;σ(?)為Relu激活函數;δ(?)為Sigmoid函數;W1、W2是權重矩陣。
最后,利用特征S與原始特征X進行像素點的疊加,如式(6):

為了評估本文方法的檢測效果,在PASCAL VOC數據集和MS COCO數據集中進行實驗。其中PASCAL VOC數據集包括20類目標,MS COCO數據集包括80類目標,使用平均準確率(mean average precision,mAP)和幀率(frame per second,FPS)作為評價指標。根據MS COCO數據集的標準,規定目標面積小于32×32為小目標,目標面積大于32×32且小于96×96為中等目標,目標面積大于96×96則為大目標。
采用與SSD類似的訓練設置進行模型訓練。首先,為了增強模型的性能,對數據集中原始圖片進行數據增強,其方法包括隨機裁剪、隨機光照補償、隨機尺度變換、隨機水平和垂直翻轉等,此操作能夠使模型在檢測過程中更加穩定。其次,為檢測不同尺度圖像中包含的不同尺度、不同形狀的目標,在每個檢測層中設定不同尺度的先驗框與真實標簽進行匹配。參考SSD方法中先驗框的設計原則,為每個先驗框設定兩種不同的長寬比,分別為2.0和3.0。其中在Conv10_2和Conv11_2檢測層中每個檢測點設置4個候選框,在其他4個檢測層中每個檢測點設置6個檢測框。
實驗環境為基于Windows 7操作系統的PyTorch深度學習框架,使用GPU進行訓練,配置NVIDIA CUDA8.0+cuDNN6.0的深度學習庫加速GPU運算。硬件配置為:Intel Core i7-7820X處理器,NVIDIA GeForce GTX 1080Ti GPU,Kingston DDR4 128 GB內存。
在PASCAL VOC 2007和PASCLA VOC 2012數據集的訓練驗證集對模型進行聯合訓練(16 551張圖片),并在PASCAL VOC 2007測試集中進行測試(4 952張圖片)。其中當輸入圖片大小為300×300時,設定批次大小為32;當輸入圖片大小為512×512時,設定批次大小為16。使用初始學習率為10-3迭代60 000次,將學習率降為10-4迭代40 000次,最后將學習率降為10-5迭代20 000次。使用隨機梯度下降優化方法優化參數,動量和權重衰減參數分別為0.9和0.000 5。
表1給出了本文方法與Faster R-CNN、R-FCN、SSD、DSSD和MDSSD等檢測方法在PASCAL VOC 2007測試集中的檢測準確率對比結果。在輸入圖片尺寸為300×300像素時,MSNAN方法的mAP為79%,將輸入圖片尺寸擴大為512×512像素時,MSNAN方法的mAP為80.5%。與SSD方法相比,MSNAN的檢測精度分別提高了1.5個百分點和1個百分點。雖然MDSSD將網絡中不同層特征進行融合,增強網絡特征的表達能力,但其檢測準確率仍低于本文方法。由此說明,本文利用非局部通道注意力模塊和密集連接結構有效地提高了檢測效果。
此外MSNAN與輸入圖片尺寸較大的兩階段目標檢測算法,例如Faster R-CNN、MR-CNN、R-FCN等方法相比不僅檢測速度快,而且檢測準確率也得到較大提升。雖然DSSD513的mAP高于MSNAN 512,但由于DSSD513使用深層次的Residual-101結構作為網絡基礎部分,其訓練和測試過程將造成大量時間消耗。而MSNAN512采用VGG-16作為基礎部分,網絡層次較少,檢測速度可以達到22.4FPS。
在PASCAL VOC 2007數據集中將MSNAN模型在檢測速度和檢測準確率方面與現有的檢測方法進行對比,結果如表2所示。MSNAN 300和MSNAN-512的運行速度分別為42.5 FPS和22.4 FPS。本文方法的檢測性能在準確率和速度上均優于Faster RCNN、R-FCN等兩階段目標檢測方法,其中MSNAN-512在更小輸入圖片條件下達到R-FCN檢測的準確率,并且檢測速度提升2.5倍。MSNAN方法在SSD模型基礎上增加了非局部通道注意力模塊,因此檢測速度比SSD稍慢,但準確率得到了較大提升。由于DSSD513利用Residual-101結構作為基礎網絡,并且使用了特征融合過程,雖然檢測準確率較高,但測試過程需要的時間是MSNAN512的4倍以上。而MDSSD采用VGG-16作為主干網絡提高了DSSD的檢測速度,但使用了效率較低的特征融合過程,其檢測速度仍然慢于MSNAN。另外,相比于YOLOv2、YOLOv3方法,MSNAN采用多尺度特征圖檢測,并充分利用淺層特征中目標信息,提升了檢測準確率,即使檢測速度稍有降低,但仍具實時性。

Table 1 Detection results on PASCAL VOC 2007表1 PASCAL VOC 2007測試集檢測結果 %

Table 2 Comparison of speed and accuracy on PASCAL VOC 2007表2 PASCAL VOC 2007測試集上檢測速度與檢測準確率對比
圖3展示了本文的MSNAN在PASCAL VOC 2007數據集中的檢測結果。在每列圖片中,上面圖片為SSD檢測結果,下面圖片為MSNAN檢測結果。不同顏色的識別框標記出不同種類的目標。本文方法在以下兩方面的檢測結果優于SSD:第一個方面是對小目標的檢測效果更好,圖3中的圖片顯示,MSNAN在檢測牛、汽車等小目標時的準確率更高。本文方法增強了淺層特征空間和通道間信息的相關性,彌補了一階段目標檢測任務中小目標檢測效果差的缺點。第二個方面是在復雜背景條件下的檢測效果更好。例如圖3中MSNAN能更好地檢測到遮擋條件下的瓶子、椅子等目標。因此非局部通道注意力模塊和密集連接模塊有效地利用全局特征增強了目標的上下文語義信息,提高了小目標檢測準確率,并且能在相對密集的環境中檢測出更多的目標。
MS COCO數據集包含80 000張訓練圖片,40 000張驗證圖片和20 000張測試圖片。本文使用訓練驗證集進行訓練,測試集進行測試,其中當輸入圖片尺寸為300×300像素時,批次大小設為32,輸入圖片尺寸為512×512像素時,批次大小設為16。使用初始學習率為10-3迭代160 000次,學習率降為10-4迭代40 000次,最后降為10-5迭代40 000次。
表3給出了本文方法在test-dev中的檢測結果,分別使用不同交并比值檢測的準確率(Avg.Precision,IoU)和不同尺度目標檢測的準確率(Avg.Precision,Area)作為評價指標。MSNAN的檢測效果明顯優于Faster R-CNN、R-FCN等兩階段檢測方法。MSNAN-300在AP@[0.50:0.95]、AP@0.50和AP@0.75時的結果分別為28.2%、46.3%、29.5%。MSNAN300與SSD300相比,AP分別提高3.1個百分點、3.2個百分點、3.7個百分點。MSNAN300與DSSD321相比,AP分別提高了0.2個百分點、0.2個百分點、0.3個百分點。在對小目標S(面積<32×32)進行檢測時,MSNAN-300與MSNAN512檢測準確率達到13.4%和17.2%。對中等目標M(32×32<面積<96×96)、大目標L(面積>96×96)進行檢測時,本文方法也取得較好的檢測效果。
通過實驗對比發現,相比于SSD、DSSD和YOLOv2模型,MSNAN300檢測方法的檢測效果得到了明顯提升。由于YOLOv3使用殘差結構的Darknet-53作為基礎網絡,同時利用608×608像素圖片進行模型訓練,而本文方法使用深度較淺的VGG作為基礎網絡,并且輸入圖片尺寸不及YOLOv3的一半,因此針對部分目標的識別效果YOLOv3優于MSNAN300。但是本文方法在512×512像素圖片中進行檢測時,由于擴大了輸入圖片,MSNAN512的準確率相比于MSNAN 300提升到33.6%,并且高于YOLOv3方法的檢測準確率,這是由于MSNAN利用非局部密通道注意力模塊加強了對淺層特征的處理,同時在相對較大的輸入圖片中檢測,小目標的檢測準確率有所提升,因此總體上本文方法的檢測精度高于YOLOv3方法。

Fig.3 Detection results on VOC2007圖3 VOC2007數據集中檢測結果

Table 3 Detection results on MS COCO test-dev表3 MS COCO測試集檢測結果
圖4展示了MSNAN在MS COCO數據集中對小目標的檢測結果,說明了非局部通道注意力模塊在網絡淺層部分加強了目標的特征提取,獲取了小目標的上下文語義信息,因此MSNAN能準確檢測到人、橘子等小目標。同時網絡利用密集連接結構,將豐富的圖像特征傳遞到網絡的深層,提高了網絡對風箏、牛等大目標的檢測準確率。
為了進一步研究非局部通道注意力模塊和密集連接模塊在網絡架構中的有效性和必要性,設置不同的網絡結構進行訓練,并在PASCAL VOC 2007數據集中測試,表4列出了不同網絡設置的檢測結果。

Fig.4 Detection results of MSNAN on MS COCO dataset圖4 MSNAN方法在MS COCO數據集的檢測結果

Table 4 Ablation studies on PASCAL VOC 2007 dataset表4 PASCAL VOC 2007數據集上模型簡化測試
非局部通道注意力模塊(NLCA-Block):使用SSD方法進行目標檢測的平均準確率為77.5%。在SSD網絡架構的淺層部分添加一個非局部模塊進行檢測的平均準確率為78.3%,較SSD提高0.8個百分點。由此說明,通過非局部模塊獲取了特征圖的全局信息,在空間維度增強目標的局部特征。在相同網絡結構下使用本文提出的NLCA-Block的檢測準確率得到進一步提升,證實了NLCA-Block不僅利用空間域的全局特征信息增強了目標的局部信息,而且彌補了通道域上忽略的特征信息,進而增強淺層特征中的小目標上下文語義信息。
多模塊串行疊加(NLCA-Block(S)):為了研究多模塊串行疊加結構進行檢測的效果,在網絡中將多個NLCA-Block疊加進行檢測,其中在38×38和19×19像素的檢測層前分別疊加了2個和3個NLCABlocks。結果如表4所示,可以發現使用多個NLCABlocks串行疊加結構提高了模型0.2個百分點的檢測準確率。進一步證實該模塊的疊加操作增強了遠距離特征間的相關性,目標特征能夠在不同位置間進行信息回傳,同時可以在保證模型檢測速度的同時提高檢測準確率。
密集連接模塊(Dense Block(S)):密集連接結構能夠實現特征的跨層連接,如表4所示,在網絡的深層部分使用密集連接結構進行特征提取,模型的mAP提高到79.0%,證明了網絡中的密集連接模塊有效地加強網絡中的特征傳遞,增強特征的表達能力,進而提高模型的檢測準確率。
本文提出了一個有效進行小目標檢測的網絡MSNAN。通過特征圖空間和通道間的全局信息增強目標局部信息的表達能力,彌補了小目標檢測所缺乏的上下文語義信息。并采用密集連接結構增強主干網絡的特征提取能力,提高了網絡的檢測速度。在PASCLA VOC數據集和MS COCO數據集中的實驗結果表明,本文方法在檢測準確率和檢測速度上均表現突出,有效地提高了小目標的檢測精度,同時達到實時檢測目的。未來的工作將繼續探索復雜場景中的小目標的檢測方法,包括模糊、強弱光照等低質量圖像中進行檢測。