魏文曉, 劉潔瑜, 沈 強, 李 成
(火箭軍工程大學導彈工程學院, 陜西 西安 710025)
目標檢測是計算機視覺領域的一個重要課題,廣泛應用于各行各業。傳統基于人工特征的檢測算法魯棒性、通用性都比較差,而目前基于深度學習的目標檢測算法則有更好的性能。基于深度學習的檢測算法主要分為雙階段目標檢測算法和單階段目標檢測算法,雙階段目標檢測算法雖然相較多類別單階檢測器(single shot multibox detection, SSD)等單階段算法精度高,但其運行速度慢,難以滿足實際場景中實時性的要求。目標檢測領域中,小目標具有分辨率低、信息少等問題,導致小目標特征表達能力不足,檢測過程中漏檢、錯檢現象嚴重。因此,針對小目標檢測精度不足問題,近年來國內外許多學者對小目標檢測問題提出了不同的改進方案,大多通過融合獲取含有充分信息的特征層分類回歸進行算法的改進。朱明明等基于快速區域卷積神經網絡(faster region convolutional neural network, Faster-RCNN)通過特征融合和軟判決非極大值抑制(soft non-maximum suppression, Soft-NMS)改進小目標檢測精度,但是由于Faster-RCNN為雙階段檢測算法,實時性較差。朱敏超等基于特征融合SSD (feature fusion SSD, FSSD)算法將不同特征圖進行融合,通過利用表征能力更強的淺層特征圖檢測小目標,但該算法引入過多的淺層特征,算法快速性降低過多,實時性較差。鄭浦等基于SSD算法通過金字塔特征融合思想,對每個通道進行權重分配,增加了算法的泛化能力,但該算法并未充分利用表征能力更強的淺層特征。汪能等基于SSD算法通過多尺度融合、增加卷積層深度,獲取更充分的具有表征能力的淺層特征,但該算法并未對融合信息進行篩選。因此,選擇生成更有表征能力的特征層是小目標檢測領域的研究核心。同時由于目標檢測算法中負樣本多,背景所占圖片比例大,如何突顯目標所在位置的像素也是提升精度的重要研究方向之一。文獻[14-15]對人眼視點圖的研究表明人眼的感受野是視網膜上呈現圖像的偏心度的函數,與偏心度呈正相關,距離視網膜上物體的中心越近,感受野的尺度越小,因此人眼在觀察物體時能夠形成所關注部分清晰,周圍模糊的視覺感受,同時對所觀察物體位置上的微小偏移也能夠較清晰地進行判斷。故構造類似人眼視點圖的感受野有助于目標檢測精度的提升。
基于以上分析,本文以典型的SSD算法為基礎,針對小目標信息少、分辨率低等特點,采用不同擴張率的空洞卷積構建具有類似人眼感受野的空洞卷積金字塔模塊,擴大淺層特征圖感受野,提升模型對目標所在位置像素的學習。同時,利用特征金字塔網絡(feature pyramid network, FPN)思想和長短時記憶(long-short term memory, LSTM)網絡的記憶思想,建立特征金字塔融合模塊,生成具有更佳表征能力的新特征層進行分類回歸。利用包含20個類別的VOC 2007數據集進行驗證,本文算法可以在保證檢測速度的前提下提升檢測精度
SSD算法借鑒了Faster-RCNN中的錨框和YOLO(you only look once)算法單階段檢測思想,在檢測精度、速度上都有較好效果。SSD網絡結構如圖1所示,基礎網絡通過VGG(visual geometry group)網絡進行特征提取獲取一個特征層,附加網絡中增加4層級聯卷積層獲取5個特征層,網絡輸入通道數為3通道,從左至右生成6個特征圖: Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2及Pool11,尺寸大小分別為 38×38、19×19、10×10、5×5、3×3、1×1,通道數分別為 512、1 024、512、256、256、256。不同大小的特征圖有利于檢測尺度差別較大的目標,淺層較大的特征層有利于檢測圖片中尺寸較小的目標,尺寸較小的特征層則負責檢測尺寸較大的目標。最后將6個特征層對應的檢測框進行合并,通過非極大值抑制(non-maximum suppression,NMS)得到最終結果。

圖1 SSD網絡結構圖Fig.1 SSD network structure
傳統SSD算法在特征圖中每一個網格單元設置不同比例的先驗框,以先驗框為基準計算偏差預測目標位置,降低模型的訓練難度。但SSD算法在淺層特征層上檢測精度低,且6個特征層在同一水平上檢測,導致算法提取位置信息、細節信息和全局語義信息的能力下降,因此小目標檢測精度較低。故增加細節特征、合并上下文信息、提高淺層特征信息的利用率是提高小目標檢測精度的重要途徑。
卷積神經網絡中淺層特征層包含大量細節信息,但SSD算法基礎網絡的淺層特征層對應的感受野大小僅為92×92,并不能覆蓋全圖的感受野,包含的語義信息和特征信息不豐富,造成大量小目標漏檢、錯檢。為此擴大VGG網絡輸出的Conv4_3特征層的感受野,改善淺層特征圖感受野小的不足。Conv9_2、Conv10_2、Pool11 3個特征層所對應的感受野覆蓋全圖,分別為356×356、485×485、612×612,而Conv7、Conv8_2兩個特征層的感受野大小為260×260、292×292,提取出的特征缺乏全局性,因此融合Conv9_2、Conv10_2、Pool11 3個特征層中豐富的位置信息、語義信息,增加細粒度信息,生成新的Conv7′、Conv8_2′。
改進的SSD網絡結構如圖2所示。基礎網絡輸出的淺層特征圖通過構建的空洞卷積空間金字塔模塊擴大感受野,附加網絡中的5個特征層通過建立的特征金字塔融合模塊提升細粒度信息,利用上下文信息對目標進行分類回歸。

圖2 改進的SSD網絡結構圖Fig.2 Improved SSD network structure
目前的深度學習模型,通常將感受野與特征圖上常規采樣的網絡設置為相同大小,會導致網絡魯棒性不強。Inception考慮了多種大小的感受野,并通過不同卷積內核的多分支卷積神經網絡來實現。其改進方式在目標檢測(兩階段檢測算法)中和分類任務中獲得了非常好的效果。但Inception結構中所有的內核都是在同一中心采樣的。可變形卷積根據物體的大小和形狀來自適應地調整感受野的空間分布,采樣網格非常靈活,但并未考慮感受野偏心率的影響,認為像素對輸出做出的貢獻相同,未強調重要信息。神經科學方面的發現表明,在人類視覺皮層中,群體感受野的大小在視網膜視點圖中是與偏心率呈正相關的函數,隨著偏心率的增加而增加。因此,本文根據人眼觀察物體時的視網膜視點圖的感受野設計空洞卷積空間金字塔模塊,觀察目標時,人眼視網膜視點圖如圖3(a)所示,V1、V3、hV4分別代表眼睛在不同視角觀察時的群體感受野,總體呈現隨偏心率的增加感受野尺度逐漸增加的趨勢,越靠近目標中心感受野越小,這樣的感受野有助于突出顯示靠近中心區域的像素,并提高位置預測時較小空間偏移的敏感度。因此構造類似人眼感受野的特征層更有利于提升檢測精度,提高對小目標的位置預測。故在SSD算法的基礎上增加空洞卷積空間金字塔模塊,如圖3(b)所示,通過融合不同擴張率空洞卷積下的特征層構造出如圖3(a)所示的人眼感受野。

圖3 特征層感受野結構圖Fig.3 Structure diagram of characteristic layer receptive field
將基礎網絡輸出的Conv4_3特征層經過不同擴張率的空洞卷積進行融合,構造出與人眼視點圖類似的感受野,既增加了特征層對應的感受野大小,又突出強調特征層中的重要特征信息。根據圖3(b)所示空洞卷積空間金字塔模塊的思想,本文改進的空洞卷積空間金字塔模塊結構圖如圖4所示,其中空洞卷積的擴張率分別選用1、3、5,對3個分支的特征層串聯融合。首先在每個分支中采用1×1卷積層組成的瓶頸結構,以減少加上×卷積層后特征圖的通道數。其次,為加深結構的非線性,減少參數和計算量,采用兩個堆疊的3×3卷積層代替5×5的卷積層,并使用一個1×3和一個3×1的卷積層來代替原始的3×3的卷積層,最終生成新的特征層Conv4_3′。

圖4 空洞卷積空間金字塔結構圖Fig.4 Structure of hollow convolutional spatial pyramid
圖2中特征金字塔融合模塊一主要是對深層特征中的全局語義信息和位置信息進行特征融合,借鑒特征金字塔的融合思想,對3個特征層建立自上而下的橫向鏈接,通過反卷積對深層特征信息進行融合構造。同時,通過1×1卷積整合不同維度信息,減少反卷積之后的通道數,增加網絡結構的非線性和特征層的表征能力。如圖5所示,生成的新模塊的特征層的表達式為
=(()+)+
(1)
式中:、分別為Pool11、Conv10_2的特征層;為Conv9_2的特征層;為通過反卷積層、1×1卷積層、歸一化層和激活層的總函數,其中反卷積層和1×1卷積層共享參數,減少計算量。

圖5 模塊一結構圖Fig.5 Structure of module 1
為豐富Conv8_2特征層的位置信息、語義信息以及細粒度信息,將模塊一中新生成的特征層與Conv8_2通過模塊二進行融合。由于模塊一新生成的特征層主要包含全局信息和位置信息,而僅有部分信息對檢測有利。同時,Conv7和Conv8_2兩個特征層尺寸相對較大,反卷積過程中易受噪聲干擾,因此模塊二引入LSTM的門控思想,對輸出的特征圖信息進行篩選,濾除無效信息。門控結構采用sigmoid函數生成激勵信號,對特征信息進行選擇性的濾除后將有效信息進行融合,0表示信息完全濾除,1表示信息完全接收。
模塊二的結構圖如圖6所示。將模塊一的特征層經過反卷積、卷積、批標準化、激活層后與Conv8_2層的特征層通過sigmoid函數進行特征融合,將融合后的特征層與Conv8_2比較,為選擇出更有代表性的特征層,選擇數組較大的組合作為新的特征層Conv8_2′。

圖6 模塊二結構圖Fig.6 Structure of module 2
小目標在目標檢測中定義為絕對小目標和相對小目標兩類,絕對小目標是指目標像素小于32×32,相對小目標指目標尺寸小于原圖尺寸的10%。為驗證本文算法的性能,本文在PASCAL VOC2007的數據集上進行訓練評估。VOC2007數據集包括不同尺寸大小的20個分類,總共9 964張圖片。其中,根據小目標定義數據集中的各個類別小目標所含數量如表1所示。

表1 PASCAL VOC2007數據集中小目標含量Table 1 Small target content in PASCAL VOC2007 data set
實驗在Ubuntu16.04系統的Pytorch框架下運行,并使用CUDA9.0和cuDNN7.1來加速訓練。計算機搭載的CPU為Corei7-8700k,顯卡為NVIDIA GTX1080Ti,內存為32 G。訓練過程中輸入圖片大小為300×300,batch size設置為16。優化器采用傳統的隨機梯度下降法(stochastic gradient descent with warm restarts, SGDR),初始學習率設置為0.001,動量值為0.9,權值衰減值設為0.000 1。
為驗證本文算法性能的有效性,設計了3個實驗:① 與經典主流算法的對比實驗,主要分析本文算法與經典SSD算法在訓練模型、檢測精度上的提升;② 消融實驗,主要驗證本文算法改進模塊的必要性;③ 與改進小目標檢測算法的對比實驗,主要與基于SSD算法改進的小目標檢測算法的精度對比,驗證算法在精度上的提升。
3.2.1 與經典主流算法對比實驗
為驗證本文算法有效性,在訓練過程中對不同算法的損失函數進行可視化,對比損失值的大小和下降趨勢,檢測改進算法的模型收斂效果。
SSD算法和本文算法在VOC 2007數據集上訓練的損失曲線如圖7所示,紅色為SSD算法的損失函數曲線圖,藍色為改進算法損失曲線圖。從對比圖中可以清晰地看出,本文算法損失函數中的損失值比SSD算法的更低。除此之外,本文算法在改變學習率之后損失函數有明顯下降趨勢,說明本文改進算法模型收斂效果更好,具有更好的識別度和魯棒性。

圖7 損失函數曲線對比圖Fig.7 Comparison of loss function curve
目標檢測精度在測試集上的評價指標,通常采用平均準確率均值(mean average precision, mAP),計算公式如下:

(2)

(3)

(4)

(5)
式中:表示正確識別目標的數量;表示將背景錯誤識別成目標的數量;表示目標未被正確識別的數量;+表示識別目標的總數;+表示目標的總數量;AP為第個類別檢測的平均準確率;為數據集包含的類別總數;mAP為所有類別檢測平均準確率的均值,表示模型在多個類別上的綜合性能。
本文采取mAP為檢測精度的評價標準,訓練時使用VOC 2007的訓練集和驗證集,測試集采用VOC 2007的測試集。本文算法與其他算法平均檢測精度的結果對比如表2所示,本文算法相比于SSD算法提高了3.7%,與目前精度較高的Faster-RCNN雙階段檢測算法的精度相比提高了1.8%。

表2 PASCAL VOC 2007測試數據集的檢測精度Table 2 Detection accuracy of PASCAL VOC 2007 test data set %
在算法速度上,本文選用每秒傳輸幀數(frames per second, FPS)作為評價指標。該算法引入空洞卷積空間金字塔模塊和特征金字塔融合模塊,兩個模塊擴大了特征層的感受野,增加了特征層之間的聯系,因此與原算法相比參數所需內存增加了80 MB,模型復雜度增加了35.9%,運行速度FPS下降為65幀/s,較SSD算法的71.4幀/s下降了6.4幀/s,但仍大幅度領先于雙階段算法。
表2的檢測結果表明本文算法在所有類別中的檢測結果都高于SSD算法,且在包含小目標較多的plant、tv類別上,檢測精度高于Faster RCNN算法。在bottle、chair、bird 3個小目標的類別上本文算法雖檢測精度超出SSD算法,但由于數據集中該類目標的周圍環境相對比較復雜,并未超出雙階段檢測算法的精度。
3.2.2 消融實驗
為進一步分析本文所提網絡結構對檢測的影響,分別對空洞卷積空間金字塔模塊和特征金字塔融合模塊進行了實驗驗證,如表3所示,其中√表示在原有算法基礎上加入了不同的模塊,—表示檢測時沒有加入。空洞卷積空間金字塔模塊為算法提供了1.2%的精度提升,表明增加淺層特征層的感受野可以有效提升檢測精度。特征融合金字塔模塊中的模塊二在未加入門控思想時由于未對全局信息進行篩選而導致檢測精度下降,加入門控思想后檢測精度提升了0.7%。

表3 不同模塊效果對比表Table 3 Comparison of the effects of different modules
3.2.3 與改進的小目標檢測算法對比實驗
為與文獻[12]中提出的Bi-SSD算法對比,本文算法將實驗數據集的訓練集設置為VOC 2007+2012的訓練集,測試集設置為VOC 2007的測試集,與Bi-SSD算法的對比結果如表4所示,雖然總體檢測精度僅提高了0.8%,但在bottle、plant、tv等小目標較多的類別上檢測精度提升較明顯。另外,與YOLOv3相比,本文算法在輸入圖片大小為300×300時的檢測精度相同,但在輸入圖片大小為512×512時檢測精度相較于YOLOv3提升了2.1%。

表4 小目標檢測算法平均檢測精度對比Table 4 Comparison of mean detection accuracy of small target detection algorithms %
圖8是SSD模型與本文算法在VOC數據集上得到的檢測結果對比圖,其中圖8(a)為輸入原圖,圖8(b)為本文算法的檢測效果圖,圖8(c)為SSD算法的檢測效果圖。本文算法相較于SSD算法減少了漏檢率和錯檢率,提升了整體目標的檢測精度。另外,如第一、二、六行圖片所示,針對遮擋物體本文算法有較好的檢測結果。


圖8 測試圖片的結果對比圖Fig.8 Results comparison chart of test data
本文設計的基于人眼視點圖的小目標檢測算法主要通過人眼視點圖的思想擴大淺層特征層感受野,同時通過特征金字塔融合的方法改善了SSD算法不同特征層在同一水平上檢測回歸的問題,提升了全局語義信息的提取率,從兩方面的改進提升了檢測精度。在VOC 2007數據集上進行驗證,結果表明,本文算法的檢測精度相較于SSD算法提升了3.7%,相較于Faster-RCNN提升了1.8%。但SSD算法的錨框設置在針對不同數據集時有非常大的局限性,且在數據集背景較為復雜時檢測精度不夠理想,因此如何改善錨框的設置及提升復雜背景下的目標檢測精度是將目標檢測算法應用到實際的重要研究方向。