?

基于改進SSD的魯棒小目標檢測算法

2023-12-21 06:14李學偉劉宏哲
關鍵詞:卷積局部特征

秦 振,李學偉,劉宏哲

(1.北京聯合大學北京市信息服務工程重點實驗室,北京 100101;2.北京聯合大學機器人學院,北京 100101)

0 引言

目標檢測是計算機視覺領域中一項基礎的任務,被廣泛應用于車輛檢測、行人檢測、交通燈檢測等系統中.隨著深度學習技術的快速發展,基于傳統手工特征的目標檢測算法逐漸被淘汰,基于深度學習的方法由于能夠同時處理特征提取和分類,以其優越的性能而被廣泛使用.基于深度學習的目標檢測方法可以分為一階段和兩階段方法.以R-CNN系列[1-3]為代表的兩階段方法首先在圖像上生成候選區域,然后對每一個候選區域依次進行分類與邊界回歸.而單階段方法能夠在單個步驟中完成目標的定位和分類,其檢測精度有所損失,但運行速度快,滿足自動駕駛系統等現實應用對目標檢測算法的實時性要求[4].

YOLO[5]和SSD[6]是目前最流行的單階段目標檢測算法.YOLO將輸入圖像分成S×S個方格,物體中心點落在某個方格內,就由該方格負責預測物體.YOLOv2[7]從原始YOLO中刪除了全連接層,并應用錨框來提升算法的檢測精度.YOLO和YOLOv2對于小對象的檢測效果不理想,為了解決這個問題,YOLOv3[8]采用多尺度特征圖進行檢測,提高算法對小目標的檢測準確率.YOLOv4[9]并未進行理論創新,而是在原始YOLO的基礎上采用優化策略來提升檢測準確率.

SSD算法的速度與YOLO相當,它的檢測精度與Faster R-CNN相當.SSD算法通過卷積神經網絡提取多尺度特征,可以預測多尺度目標對象.基于SSD的各種研究的特征金字塔結構對多尺度對象的魯棒性不強,為了提高SSD算法對多尺度對象的魯棒性,對特征金字塔進行了重構.SD-SSD[10]通過分段反卷積重新設計了融合結構,豐富底層特征圖語義信息,提高小目標檢測精度.FD-SSD[11]采用空洞卷積獲得特征的多尺度上下文信息,同時在通道方向上將深層特征與淺層特征進行連接,增強底層特征的語義信息來提高小目標的檢測精度.文獻[12]提出新的特征融合模塊來豐富細節信息,同時引入注意力機制突出特征圖中的關鍵信息.DF-SSD[13]使用DenseNet作為特征提取主干,同時引入了多尺度特征層的融合機制,將網絡結構中的淺層視覺特征和深層語義特征有機地結合起來.最后,在目標預測之前建立一個殘差塊,以進一步提高模型性能.文獻[14]采用基于可變形卷積的ResNet50作為特征提取網絡,通過特征融合與引入注意力機制來提高檢測性能.TTB-SSD[15]提出一種結合PANet多尺度特征融合網絡和自上向下特征融合路徑的改進算法,使得深層特征能夠準確地對小目標進行定位,強化淺層特征對小目標檢測的準確率.但在自動駕駛等現實應用場景中,受到雨雪、光照、遮擋等情況的影響,現有算法對小目標的檢測精度明顯降低,魯棒性不強.

因此,本文提出一種基于改進SSD的魯棒小目標檢測算法.提出了一種新穎的特征金字塔結構,該結構通過連接SSD的相鄰特征層來生成,有效地利用上下文信息提高小目標檢測精度.設計了非局部特征增強模塊,用于提取不同大小的非局部特征之間的關系,增強特征映射.在公開數據集PASCAL VOC和KITTI上的實驗結果表明,本文方法提升了SSD算法的小目標檢測準確率,且比現有方法具有更好的小目標檢測性能.

1 改進SSD算法

通過融合SSD相鄰的特征圖,同時設計非局部特征增強模塊,提高網絡對小目標的魯棒性,圖1為基于改進SSD的整體模型圖.

圖1 改進SSD的整體結構

1.1 整體結構

本文方法的基本框架基于SSD算法,采用VGG16作為骨干網絡進行特征提取,將VGG16中的全連接層FC6和FC7通過權重采樣變成卷積層Conv6和Conv7.SSD中卷積層Conv4、Conv7、Conv8、Conv9、Conv10與Conv11生成不同分辨率的特征圖,通過所提出的特征融合模塊將這些特征進行融合.選擇將相鄰的特征圖進行融合,對上下文具有魯棒性,而不會丟失細節信息.表1為融合后特征層的詳細信息.

表1 融合特征的詳細信息

從表1中可以看出,本文方法將原始SSD的Conv4層每個單元錨框的數量由4個增加到6個,允許更多的錨框作為小目標的輸出,提高小目標的檢測性能.同時這些特征圖具有連續遞減的空間分辨率和遞增的感受野,更低層的特征層由于感受野較小,可以關聯小尺度的錨框,用于檢測小目標.因此,本文方法在最底層的兩個特征層中應用提出的非局部特征增強模塊,更專注于小目標檢測.

本文方法的中間特征層Conv8和Conv9是由RFB生成的.如圖2所示,RFB通過將給定的特征圖分為3個具有不同感受野的特征圖,并將它們再次合并,形成了與人類視覺相似的感受野模型,提高了特征圖的辨識度和魯棒性.而最頂層的特征圖由于分辨率太低,無法應用特征增強模塊,即Conv10和Conv11層的特征圖并沒有使用特征增強.

圖2 RFB模塊結構

本文方法共輸出11 620錨框,比原始SSD的8 732個錨框多出2 888個.其中,Conv4和Conv7的兩個特征圖主要用于小目標檢測,分別產生8 664和2 166個錨框.將不同特征圖獲得的錨框結合起來,經過非極大值抑制方法來抑制掉一部分重疊或者不正確的錨框,得到最終的檢測結果.

1.2 特征融合模塊

提出的特征融合模塊通過一次反卷積、一次批歸一化、一次ReLU和兩次卷積運算設計了特征融合模塊,如圖3所示.該模塊相較于其他融合方法結構簡單,但能夠將上下文信息傳遞到融合特征中.

圖3 特征融合模塊

反卷積用于提升特征圖的大小,使低分辨率特征圖和高分辨率特征圖的大小保持一致.每個卷積層都對輸入特征圖進行變換,使融合后的特征圖既有上下文信息又有詳細的融合特征信息.批歸一化層是對特征進行歸一化.在逐元素求和與ReLU操作之后,生成輸出特征.

1.3 非局部特征增強模塊

在融合后的Conv4和Conv7層的特征圖中應用非局部特征增強,以提高對小目標的檢測性能.NLNN提取通過1×1卷積從特征圖分支生成新的特征圖之間的非局部關系來增強特征,但NLNN只能計算相同尺寸的特征關系,不能推導出不同尺寸的特征之間的關系.RFB通過融合具有不同感受野的特征圖來考慮不同大小的語義特征,但它只是一種局部方法.因此,本文提出的非局部特征增強模塊使用了具有不同感受野的特征圖的非局部關系,其結構如圖4所示.

圖4 多尺度非局部特征增強模塊

根據卷積核的大小和空洞卷積的擴張率,將一個輸入特征圖分支為3個感受野不同的特征圖.這3個特征圖具有相同的空間大小,但它們的網格單元具有不同大小的感受野,所以它們的語義大小也不同.

3個不同大小的卷積核被用來產生不同大小的感受野.圖4中最左邊的分支,通過1×1卷積,輸入通道被降低到1/4.為了有效降低其他兩個分支的計算復雜度,通過前面的1×1卷積,將輸入通道降低到1/8,通過應用3×3和5×5卷積,將輸入通道大小降為1/4的特征圖作為輸出.然后將空洞卷積應用到每個分支特征圖中.空洞卷積可以在不增加計算成本的情況下,通過調整核內的間隔來擴展感受野.在3個分支的特征圖上分別應用擴張率為1,3和5的空洞卷積.

使用不同大小的卷積核和空洞卷積,生成3個不同感受野的特征圖,然后將它們同時輸入到多尺度非局部塊中,提取不同分支特征之間的非局部關系,并反映在最終的特征圖上.圖5為多尺度非局部塊的結構.多尺度非局部塊可以獲得具有不同感受野的多個特征圖的非局部關系.在圖5中,x1,x2和x3是3個具有不同感受野的特征圖,x1是用于特征增強的目標特征圖.

圖5 多尺度非局部塊結構

首先通過1×1卷積(θ1,θ2,θ3,φ)將可學習參數嵌入到每個特征圖中,并將通道降低到1/2以減少計算量.對寬度W、高度H和通道C的特征圖進行φ卷積的結果重新排列為C/2×WH,對θ卷積的結果重新排列為WH×C/2,并將φ卷積的特征圖與3個θ卷積的特征圖進行內積運算,得到所有可能的配對關系,即3張WH×WH大小的關系圖.然后將Softmax函數應用于關系圖的和,產生一個概率圖p,它代表了目標特征圖x1和其他特征圖x2和x3之間的非局部關系.

概率圖p通過與目標特征圖x1進行1×1卷積(φ)的結果進行內積運算反映在目標特征圖x1上.因此,通過概率圖p可以得到包含非局部關系的特征圖y,公式為

(1)

其中,F表示CNN的權重參數,使用歸一化指數函數Softmax將輸入轉換為概率分布.非局部特征增強模塊的最終輸出z是由x1和y融合產生的.對于自適應融合,如式(2)所示,對y進行1×1卷積(Fz),并將其結果加到x1中.

z=Fzy+x1.

(2)

(2)式的特征圖增強作用是通過可學習的參數來平衡兩個特征圖,從而獲得一個更有效的特征圖用于目標檢測.

具有不同感受野的目標特征圖x1,x2和x3通過非局部特征模塊得到非局部特征增強的特征圖z1,z2和z3,將z1,z2和z3在通道方向通過級聯疊加并融合成單個分支特征圖,如圖4所示.然后將融合的分支特征圖添加到包含可學習參數的原始特征圖中.為了自適應整合,對原始特征圖進行了1×1卷積并使用其結果.最后,通過ReLU激活函數生成非局部特征增強模塊的輸出,最終輸出的大小與原始特征圖相同.非局部特征增強模塊產生的多尺度非局部特征之間的關系提供了與小目標相關的各種尺寸的上下文信息,從而增強了對小目標的檢測能力.

2 實驗結果與分析

2.1 實驗數據集

使用了2個具有代表性的目標檢測數據集PASCAL VOC和KITTI.其中,VOC2007由9 963張RGB圖和每個圖的標注信息組成,分為包含5 011幅圖的訓練數據集和包含4 952幅圖的測試數據集.VOC2012的訓練和驗證數據集包含11 540幅圖,共包含20個檢測類別,如圖6(a)所示.

圖6 數據集示例

KITTI是一個用于道路駕駛中物體檢測的數據集,如圖6(b)所示,包含7 481張訓練圖和7 518張測試圖,其中僅有訓練圖包含標注信息.為了對本文方法進行定量分析,從KITTI訓練數據集中選取748幅帶有標注信息的圖作為測試數據集,訓練數據集中剩余的6 733幅圖用于訓練.KITTI數據集比VOC數據集少了9個檢測類別,但是額外提供了僅有邊界框信息的其他類.本文實驗中使用KITTI數據集,是因為在道路環境中,小目標的檢測性能非常重要,其準確性直接關系到駕駛的安全性.

2.2 評價指標

本文采用所有類別的平均精度(mean Average Precision,mAP)作為目標檢測模型性能的衡量標準.對于單個類別準確率(P)和召回率(R)的計算公式為:

(3)

(4)

其中:TTP為分類正確的正樣本,TFP為分類錯誤的正樣本,TFN為分類錯誤的負樣本.單類別的平均精度(AAP)即為單類別P-R曲線下的面積,其計算公式為

(5)

本文所采用的所有類別平均精度AmAP則是計算所有類別P-R曲線下面積的平均值.

2.3 實驗配置

實驗操作系統使用Ubuntu16.04,編程語言為Python,深度學習框架為Pytorch0.4.1,關鍵計算硬件為GeForce GTX Titan X顯卡進行加速運算.

骨干網絡使用ImageNet進行預訓練,并根據實驗數據集進行微調.網絡輸入圖像大小固定為300×300像素,數據增強策略與SSD相同.批大小(Batch Size)設置為32.初始學習率和L2正則化的權重衰減值分別被設定為4×10-3和5×10-4.優化器為SGD,動量為0.9,學習周期總數為300.

2.4 對比實驗結果

將本文方法與SSD[6]和文獻[12-15]進行比較.將PASCAL VOC 2007和2012的訓練和驗證數據集合并為VOC數據集,所有方法使用一個通用的訓練數據集.其中DF-SSD和文獻[14]分別使用DenseNet和ResNet50作為特征提取骨干網絡,其他方法均使用VGG-16作為骨干網絡.表2列出了在VOC數據集上各方法的AmAP值.

表2 VOC數據集上各方法AmAP值

通常,輸入圖像的大小會直接影響檢測性能,輸入圖像越大,圖像中物體像素越多,越有利于小目標的檢測.從表2可以看出,本文方法與其他方法一樣,具有最小的輸入圖像大小,但本文方法的AmAP值最高,達到了81.3%,證明了本文方法在小目標檢測中具有較好的魯棒性.

由于本文方法是基于SSD框架,且特征融合模塊與非局部特征增強模塊分別參照DSSD的DM模塊與RFB-Net的RFB模塊設計,因此,在KITTI數據集上對SSD、DSSD、RFB-Net與本文方法進行比較.表3為在KITTI數據集上各方法的AmAP值.

表3 KITTI數據集上各方法的AmAP值

由表3可見,本文方法的AmAP最高,達到了80.6%,證明本文設計的特征融合模塊與非局部特征增強模塊相較于DM模塊與RFB模塊能夠有效提升目標檢測性能.

本文參照COCO數據集進行目標尺寸分類,在該數據集中,將小于32×32像素的物體定義為小目標,將大于32×32像素小于96×96像素的物體定義為中目標,將大于96×96像素的物體定義為大目標.本文同樣根據邊界框的大小對物體進行分類,如表4所示.由于邊界框比目標對象本身大,因此判別參考值略有增加.根據表4中的標準,KITTI數據集有1 055個小目標、2 004個中目標和882個大目標.

表4 目標尺寸分類

在KITTI數據集上對本文方法和其他方法進行定量比較,實驗結果如表5所示.從表5中看出在大目標上,本文方法僅略微領先于其他方法,大目標檢測性能提高了1.3%.但是本文方法在中、小目標檢測性能上相較于其他方法有著明顯的提升,AmAP值分別達到了80.1%與61.8%,分別提升了2%和4.2%.由于KITTI數據集中小目標占比高達26.8%,其檢測結果的提升更能說明本文方法在小目標檢測上的有效性.

表5 KITTI數據集不同尺寸目標AmAP的檢測結果 %

2.5 消融研究

為驗證本文方法中各模塊對提高小目標檢測性能的有效性,在KITTI數據集上對本文方法的各個模塊進行消融實驗,實驗結果如表6所示.

表6 每個模塊對檢測結果的增益效果的AmAP值 %

從表6中可以看出,本文所提的特征融合方法與非局部特征增強模塊對于小目標檢測的提高有著明顯的效果,有效提高小目標檢測的魯棒性,從而有效提高整體的目標檢測性能.

2.6 結果可視化

為了直觀地展示本文方法在小目標檢測上相較于傳統SSD的性能優越性,對部分結果進行可視化對比.PASCAL VOC 2007數據集上本文方法與傳統SSD的檢測結果可視化對比見圖7.從圖7中可以明顯看出,本文所提的方法在小目標檢測上效果要明顯好于傳統SSD,其中,第一行中傳統SSD方法將兩個sheep類對象錯檢為dog類與cow類,且漏檢了上方像素較少的sheep類對象,而本文方法則沒有出現漏檢錯檢的情況;第二行中傳統SSD則完全忽略了上方的cow類小目標,本文方法則成功檢測出cow類的小目標;第三行中本文方法相較于傳統SSD成功檢測出每一個person類小目標;第四行中本文方法成功檢測出左側的car類小目標,而傳統SSD方法則未檢測出小目標.

圖7 VOC數據集檢測結果可視化對比

圖8為KITTI數據集上本文方法與傳統SSD的檢測結果可視化對比,其中左側為傳統SSD的檢測結果,右側為本文方法的檢測結果.從圖8中可以明顯看出,無論是在道路還是窄巷的交通場景中,本文方法在小目標檢測上明顯優于傳統SSD.如圖8(a)所示,在道路的場景中,傳統SSD對于遠處的汽車以及交通信號燈等小目標出現了明顯的漏檢情況,而本文方法則成功的檢測出遠處的車輛以及交通信號燈,可以更好地保證自動駕駛的安全性.在窄巷的場景中,傳統SSD同樣對于遠處停放的小目標車輛出現了漏檢的情況,而本文方法則成功檢測出遠處的小目標車輛,如圖8(b)所示.

圖8 KITTI數據集檢測結果可視化對比

圖9和圖10給出了本文方法對VOC數據集和KITTI數據集的檢測結果示例,每張圖片都包含一個或多個小目標,可以明顯看出,本文方法能夠有效地檢測出不同場景圖像中各種類型的小目標.

3 結論

本文提出一種基于新的特征融合方法與特征增強模塊的改進SSD小目標檢測算法,通過將SSD中的相鄰特征融合來有效利用上下文信息,然后通過不同尺寸特征之間的非局部關系來增強特征映射,從而提高對小目標的檢測精度.實驗結果表明,本文算法提升了SSD算法的小目標檢測準確率,且比現有方法具有更好的小目標檢測性能,對于自動駕駛等應用有著現實意義.本文所提的算法在小目標檢測精度上還有進一步提升空間,下一步工作將針對真實駕駛場景對算法做進一步的優化,以提升真實駕駛環境中算法對小目標的檢測性能.

猜你喜歡
卷積局部特征
局部分解 巧妙求值
基于3D-Winograd的快速卷積算法設計及FPGA實現
非局部AB-NLS方程的雙線性B?cklund和Darboux變換與非線性波
如何表達“特征”
從濾波器理解卷積
不忠誠的四個特征
基于傅里葉域卷積表示的目標跟蹤算法
抓住特征巧觀察
局部遮光器
吳觀真漆畫作品選
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合