汪 能,胡君紅,劉瑞康,范良辰
(華中師范大學 物理科學與技術學院,武漢 430079)
目標檢測技術是計算機視覺領域的重要研究內容和應用領域[1].在行人檢測[2]、車輛檢測[3]和遙感圖像檢測[4]等諸多應用場景中,目標檢測技術扮演著非常重要的作用.目前目標檢測算法對大目標的檢測效果顯著優于小目標,然而實際場景目標尺寸差異很大,針對小目標的目標檢測技術的研究一直是計算機視覺領域的研究熱點和難點[1].近年基于深度神經網絡的目標檢測算法的研究取得了較大的進展,但由于深度神經網絡主要依賴深層特征進行目標檢測,而對淺層特征利用不足,因此對小目標的檢測有很大的困難.本文主要研究提升淺層特征的利用效率的方法,以此提升網絡對小目標的檢測性能.
深度學習目標檢測框架大多是通用目標檢測框架,并沒有針對小目標進行優化設計,所以對小目標的檢測效果并不理想.為解決小目標檢測問題,近年有學者提出了不同的優化方案.Chen 等[5]在2016年提出了針對小目標的多區域語義信息目標檢測器來優化對小目標的檢測性能.Sommer 等[6]在2017年提出了一種由4 個卷積層和3 個全連接層構成的淺網絡檢測模型,對航空圖像中的小目標進行檢測.Li 等[7]在2017年提出將生成對抗網絡應用于圖像識別領域,通過挖掘不同尺度物體間的結構關聯,提高小物體的特征表示,使之與大物體類似,幫助小目標檢測接近大目標檢測的水平.Lin 等[8]在2017年提出了特征金字塔的概念,通過網絡的多尺度特征信息提升網絡對小目標的檢測性能.Singh 和Bharat 等[9]在2018年提出了一種尺度歸一化的目標檢測圖像金字塔,利用圖像的尺度縮放來解決小目標的檢測問題.
在以上優秀的研究成果的基礎上,本文基于單階段多目標檢測器SSD (Single Shot multibox Detector)[10]結構提出了針對小目標的改進模型,雙向單階段多目標檢測器Bi-SSD (Bi-directional Single Shot multibox Detector).Bi-SSD 模型在目標檢測公共數據集PASCAL VOC2007 test 和MS COCO2017 test 上分別對原始的SSD 算法取得了1.34%和2.4%的性能提升.本文的主要工作包括:為淺層特征輸出設置了小目標檢測專用模塊,增強了網絡對淺層輸出的特征提取能力;參考雙向特征金字塔網絡BiFPN (Bi-directional Feature Pyramid Network)[11]結構優化了SSD 分類和回歸部分的網絡結構,設計了6 尺度雙向特征融合模塊,使多尺度特征進行兩次特征融合,分別增加了淺層特征的語義信息和深層網絡的細節信息.
SSD 網絡是一種端到端的目標檢測模型,以VGG16[12]為基礎網絡,網絡結構如圖1所示.VGG16網絡可分為7 部分,前5 部分Conv1~Conv5 主要由卷積層構成,最后兩個部分FC6~FC7 為全連接層.

圖1 SSD 網絡結構圖
為實現全卷積結構,SSD 模型將VGG16 中的FC6 和FC7 替換為卷積層,并且移除了所有池化層和fc8 層.算法設置了6 個特征輸出層,分別是Conv4_3,FC7,Conv8_2,Conv9_2,Conv10_2,Conv11_2,這些特征輸出層各與一個輸出卷積層相連.SSD 模型根據每個特征輸出層輸出的特征圖尺寸N,將圖片劃分為N×N個方格,以每個方格的中心點為中心,使每個方格與一定數量的大小固定的方框匹配,這些框稱為候選框,其中包括兩個正方形的候選框和兩個矩形候選框,所以對于每個方格,SSD 模型都會為其生成不同尺寸和寬高比的候選框,確保不同尺寸的目標均可以被候選框覆蓋.
SSD 算法為每個特征輸出層設置了一個候選框尺寸縮放因子sk,計算公式如式(1) 所示,其中smin為0.2,smax為0.9,第k層特征圖的候選框尺寸與sk成正比,所以淺層特征圖對應的候選框尺寸較小,深層特征圖對應的候選框尺寸較大.根據SSD 候選框的匹配機制,較小的候選框通常與較小的真實框匹配,用于檢測小目標,所以SSD 模型中負責檢測小目標的輸出層主要是Conv4_3,特征輸出層中其他深層特征圖主要負責檢測較大的目標.

作為小尺寸目標檢測的主要來源,Conv4_3 所處的卷積深度較淺,特征提取和表達能力有限,而較深的特征輸出層又主要負責檢測較大尺寸的目標,因而導致SSD 網絡對于小目標的檢測性能較差.
基于以上對SSD 網絡的分析,SSD 算法的主要問題在于基礎網絡的特征輸出層對于小目標的特征提取能力不足,導致算法對小目標的檢測能力較差,本文將從以下幾個方面對SSD 算法進行優化:
在進行分類和回歸網絡前,針對淺層特征輸出層,設置了一個小目標特征優化模塊,改善網絡對小目標特征提取能力有限的問題.
改進分類和回歸子網絡,從現有的各種多尺度檢測解決方案中探索多尺度檢測在面對小目標時的更優解決方案,利用多尺度特征融合方案提升小目標檢測性能.
修改后的網絡結構圖如圖2所示.

圖2 改進后的SSD 網絡結構圖
SOFI 模塊結構如圖3所示,由5 個卷積層堆疊而成,卷積核尺寸分別為1×1 和3×3,其中3×3 卷積核在模塊中主要作用為特征提取[12],確保SOFI 模塊能提高網絡的特征提取能力,1×1 卷積核的主要作用有兩個:降維和跨通道信息交互[13].因為1×1 卷積本身參數很少,通過降維可以降低模塊的整體參數數量,而1×1 通過通道間的線性組合增加了通道間的信息交互能力,使提取的特征能合理分配到各個通道中.

圖3 小目標特征優化模塊SOFI
SSD 的多尺度特征直接與輸出層連接,導致淺層特征提取能力不足,特征金字塔網絡FPN (Feature Pyramid Networks)[8]結構在輸出層之前,增加了深層特征向淺層特征進行特征融合的結構,增加了淺層特征圖中包含的語義信息,提高了淺層輸出的檢測能力.
本文利用FPN 結構為SSD 模型設計了特征融合模塊,并基于BiFPN 結構對特征融合模塊進行了優化,如圖4所示.BiFPN 對多尺度的輸出要經過兩次卷積操作,第一次卷積操作將深層特征向淺層特征整合,除了最深層的特征直接向淺層整合外,其他的多尺度特征均經過卷積后向淺層整合,第二次卷積操作將淺層經過處理后的特征再向深層特征融合,實現了特征在多個尺度的輸出間的傳遞,所有的特征融合均通過特征圖間的加法運算實現.文獻[11]比較了現有的不同特征融合方案,驗證了這種結構在計算量和特征融合效果上取得了最優的平衡.

圖4 Bi-SSD 分類回歸網絡結構圖
為了客觀評估Bi-SSD 算法的性能,本文分別在PASCAL VOC 2007+2012 和MS COCO 2017 數據集上對算法進行了訓練和評估.VOC 2007+2012 數據集包含常見的20 個分類,共計21 503 張圖片,其中訓練集為16 551 張,測試集為4952 張;COCO 2017 數據集將樣本分為80 個類別,其中訓練集的共包括338 002 張圖片,測試集共包括14 408 張圖片,COCO 數據集中所有樣本被粗略分為大,中,小3 個尺寸,方便評價目標檢測算法對不同尺寸目標的檢測能力.
在模型訓練過程中,本文將輸入圖片尺寸設置為300,batch size 為32,初始學習率為10-3,優化算法選擇隨機梯度下降法SGD (Stochastic Gradient Descent).在VOC 數據集上訓練時,訓練集為VOC 2007 train 和VOC 2012 train,測試集為VOC 2007 test,迭代次數為120 000 次,在前50 000 次迭代過程中,學習率保持不變,從第50 000 次迭代開始,每迭代10 000 次,學習率減半.在COCO 數據集上訓練時,訓練集為COCO 2017 train,測試集為COCO 2017 val,迭代次數為400 000 次,在前120 000 次跌代過程中,學習率保持不變,從第120 000次跌代開始,每迭代40 000 次,學習率減半.
SSD 模型和Bi-SSD 模型在VOC 數據集上的訓練訓練損失曲線如圖5所示,圖中包括SSD 和Bi-SSD的損失曲線,3 幅圖從左到右分別為分類損失,回歸損失和總體損失.從圖中可知訓練過程中,Bi-SSD 模型的分類損失和回歸損失均小于SSD 模型,以上現象說明了Bi-SSD 模型相比SSD 模型更少出現誤檢和漏檢,有更好的識別精度和魯棒性.

圖5 VOC 數據集訓練損失曲線
SSD、SSD+SOFI、SSD+BiFPN 和Bi-SSD 模型在VOC 數據集上的實驗結果如表1所示.

表1 PASCAL VOC2007 test 數據集上的檢測結果
表1中SSD+SOFI 和SSD+BiFPN 分別為僅添加SOFI 模塊和僅添加BiFPN 模塊的SSD 模型.與SSD 模型相比,SSD+SOFI、SSD+BiFPN、Bi-SSD 模型在測試集VOC 2017 test 的檢測性能均有所提升,所有類別的均值平均精度mAP (mean Average Precision)提高了分別提高了0.47%、1.22%和1.34%,且在體積較小的目標類別如bird,bottle 等的分類樣本中,檢測精度均有提升.
以上結果說明了SOFI 模塊和BiFPN 模塊對小目標檢測的有效性.與SSD 模型相比,同時具有SOFI 模塊和BiFPN 模塊的Bi-SSD 模型對小體積目標的檢測能力有最大的提升.
圖6是SSD 模型和Bi-SSD 模型在PASCAL VOC數據集上訓練后的檢測結果對比,為使檢測結果更清晰,僅顯示了對“person”類別目標的檢測結果,3 行圖片從上到下分別是原圖,SSD 模型檢測結果和Bi-SSD 模型檢測結果.測試圖片中目標均為小目標,很明顯Bi-SSD模型在小目標場景下,檢測到的正樣本更多,具有更高的查準率和查全率.實驗結果證明Bi-SSD 對小目標的檢測性能確實優于SSD 模型,由于選取的測試圖片取復雜自現復雜實街景,也證明了Bi-SSD 模型魯棒性高.
SSD、SSD+SOFI、SSD+BiFPN 和Bi-SSD 模型在COCO 數據集上的實驗結果如表2所示,其中mAP@0.5 和mAP@0.75 分別為模型在正樣本交并比(IoU)閾值分別為0.5 和0.75 時模型的均值平均精度,mAP@0.5:0.95 為正樣本IoU 閾值分別為0.5 至0.95,以0.05為間隔時所有均值平均精度的平均值.在mAP@0.5,mAP@0.75 和mAP@0.5:0.95 3 個指標上,Bi-SSD 的得分均高于SSD.比較不同尺寸目標的檢測結果,Bi-SSD 在小、中、大 3 種尺寸的檢測樣本中檢測平均精度AP 分別為0.084,0.288 和0.43,相比SSD 分別提高了2.4%,3%和3.1%.對于另外一個指標平均召回率AR,Bi-SSD 算法在小,中,大3 種尺寸上的檢測結果分別為0.129,0.417,0.569,與SSD 相比分別提升了2.9%,2.9%和2.1%.SSD 在僅添加SOFI模塊的情況下,對小目標的平均精度和平均召回率分別提升了0.9% 和8%,在僅添加BiFPN 模塊的情況下,各尺度的平均精度和平均召回率均有所提升.

圖6 SSD 與Bi-SSD 檢測結果對比

表2 COCO 2017 test 數據集上的檢測結果
從mAP@0.5,mAP@0.75 和mAP@0.5:0.95 3 個指標的檢測結果中可以看出Bi-SSD 模型和SSD+BiFPN 模型的檢測性能上全面優于SSD 模型,SSD+SOFI 模型在小目標檢測性能上優于SSD 模型.對不同尺寸檢測樣本的平均精度和平均召回率說明了BiFPN模塊使SSD 模型對不同尺寸目標的檢測能力均有所提升,其中對小目標的檢測結果則說明SOFI 模塊使SSD模型更容易從背景中檢測出小目標,且對小目標的檢測更為準確.以上分析說明BiFPN 模塊和SOFI 模塊的有效性,與SSD 模型相比,同時具備SOFI 模塊和BiFPN模塊的Bi-SSD 模型對小目標的檢測能力更強.
綜合以上2 個實驗的結果可知,Bi-SSD 算法相比SSD 算法,檢測性能從整體上有所提升,并且對于小目標,不論是精確率還是召回率,Bi-SSD 算法均有較大的提升.以上結果說明了,本文以SSD 為基礎提出的Bi-SSD算法確實優化了模型對小目標檢測能力.
本文以SSD 模型為基礎,設計了一種新型的One Stage 目標檢測模型Bi-SSD.本文的關鍵思想是為提升小目標特征提取能力設計的SOFI 模塊和參考BiFPN結構設計的特征融合結模塊,這兩個模塊分別從特征提取能力和多尺度特征融合兩個角度優化了模型的小目標檢測能力,提升了模型在實際應用場景中使用價值.在保留SSD 算法的基礎網絡VGG-16 的基礎上通過添加上面兩個模塊,在常用目標檢測數據集PASCAL VOC 和MS COCO 上均取得了性能的提升,在小目標上的提升尤為明顯.若使用更優秀的基礎網絡來進行特征提取,模型的性能應該還有提升的余地,而且SOFI模塊和特征融合模塊除了本文提出的結構外,還可以根據不同的基礎網絡嘗試更多的結構.如何選擇合適的基礎網絡和與之匹配的SOFI 模塊和特征同和模塊將是以后的工作方向.