趙文清,楊盼盼
(1.華北電力大學 控制與計算機工程學院,河北 保定 071003;2.復雜能源系統(tǒng)智能計算教育部工程研究中心,河北 保定 071003)
目標檢測是計算機視覺領域的重要研究方向。現(xiàn)階段的目標檢測方法主要有2 種:一種是基于分類的兩階段法,另一種是基于回歸的單階段法。2014 年Girshick 等[1]首次提出R-CNN(region convolutional neural networ,R-CNN)使用選擇性搜索[2]生成的區(qū)域建議。該算法相比傳統(tǒng)算法得到了很大的提升,但是不能滿足實時性要求。在2015 年,Girshick 等[3-4]在R-CNN 和SPPNet(spatial pyramid pooling net)網絡的基礎上提出了Fast-RCNN 網絡。Fast R-CNN比R-CNN 快,但是這個網絡還是不能實現(xiàn)端到端的訓練,因此He 等[5]就端到端的問題提出了解決方法,提出了Faster-RCNN 網絡。Faster-RCNN 將區(qū)域建議階段和分類階段結合到一個模型中,允許端到端學習。從R-CNN 到Faster-RCNN 的發(fā)展過程,都是先得到候選框,對候選框做處理之后再進入分類器做處理,這種類型的方法統(tǒng)稱為兩階段目標檢測法。兩階段方法不能滿足實時性要求,基于回歸的單階段檢測法應運而生。在單階段檢測方法中最具代表性的是YOLO[6-7]系列和SSD[8]系列。YOLO 算法檢測速度快,但是容易出漏檢。為了改善YOLO 算法中的缺陷,Liu 等[8]提出SSD 算法,SSD 使用多尺度特征進行分類和回歸任務,但是其效果仍有待提高。為了提高目標檢測的準確率,DSSD[9]將反卷積技術應用于SSD的所有特征圖,以獲得放大的特征圖。但是,由于將反卷積模塊應用于所有特征圖,因此存在模型復雜度增加和速度降低的局限性。此外,針對尺度較小的目標在檢測中存在的問題,相關學者提出了一系列改進算法。Singh 等[10]提出SNIP(scale normalization for image pyramids)算法,該算法主要思想是對特征圖進行不同倍數(shù)采樣,通過實驗給出相對最優(yōu)的檢測小目標的特征圖尺寸,最后通過Soft-NMS 融合不同分辨率下的檢測結果。Wen等[11]通過融合多尺度和反卷積獲得了更高的準確性。Li 等[12]使用生成對抗網絡(GAN)[13]和低分辨率特征作為GAN 的輸入來生成高分辨率特征。但是這些方法在檢測中仍然存在不能有效提取目標特征的缺陷。
特征金字塔網絡(feature pyramid networks,F(xiàn)PN) 將高層特征圖進行上采樣,然后與淺層特征進行加法合并操作,得到新的表達能力更強的特征圖。但是FPN[14]在融合之前,不同的特征之間存在的語義信息差距較大,直接進行融合會降低多尺度特征的表達能力;其次,在融合過程中,信息自高層向低層進行傳播時會丟失一些信息,而且FPN 在進行特征提取時,忽略了高層信息與低層信息之間的關系,導致檢測的精確度有所降低。
本文提出了雙向特征融合與注意力機制結合的目標檢測方法。該方法首先對SSD 模型深層特征層進行雙線性插值放大與淺層特征層進行特征融合,然后將得到的特征通過降采樣的方式與深層信息進行融合,這樣可以充分結合深層和淺層信息以提升淺層特征網絡對小目標的表達能力,同時,引入通道注意力機制SeNet 結構對特征融合后的特征圖進行更新,提取出更有利于檢測特征的通道。最后,針對目標檢測中小目標漏檢的情況,優(yōu)化了正負樣本的判定策略,使得篩選出的框的數(shù)量增加,進一步提高小目標檢測的精度。
SSD 對目標進行分類和回歸的過程:首先,輸入大小為300 像素×300 像素的圖片,然后使用卷積神經網絡提取同卷積層中目標的特征,本文采用的是VGG 作為特征提取網絡;其次,提取到的特征根據(jù)不同特征層anchor 的數(shù)目,對anchor 進行分類,利用邊界框回歸對其進行位置調整,得到最終的建議框;然后,再使用非極大抑制算法對這些建議框進行篩選,得到檢測結果。
特征金字塔網絡(feature pyramid networks,F(xiàn)PN)對高層特征圖進行上采樣,然后與淺層特征進行加法合并操作,得到新的表達能力更強的特征圖,這種多尺度的特征圖在面對不同尺寸的物體時,具有更好的魯棒性[15-17]。此外,這種特征金字塔結構是一種通用的特征提取結構,可以應用到不同的網絡框架中,例如Faster-RCNN、SSD等。針對小目標的檢測,可以檢測出更加豐富的特征,進而提升其準確度。
本模型采用VGG16 作為骨干網絡,使用雙向特征網絡完成特征提取,首先,從骨干網絡中提取出Conv3_3、Conv4_3、Conv5_3、FC7、Conv8_2和Conv9_2 特征圖,然后分兩個部分進行雙向特征融合,如圖1 所示。
2.1.1 自頂向下特征融合
圖1 中自頂向下的特征融合分為6 個步驟:

圖1 雙向特征融合與注意力機制結合的模型Fig.1 Target model based on the combination of bidirectional feature fusion and an attention mechanism
1)對256 通道的特征圖Conv9_2 使用1×1 卷積升維成512 通道的特征圖P1;
2)對P1進行2 倍上采樣后與Conv8_2 進行融合,對融合結果使用一個3×3 的卷積層消除上采樣過程中的混疊效應,使用SeNet 對消除混疊效應后的特征圖進行通道更新得到特征圖P2;
3)對1024 通道的特征圖FC7 使用1×1 卷積降維成512 通道,對P2進行2 倍上采樣后與降維后的FC7 進行融合,使用3×3 卷積層消除混疊效應,接著,使用SeNet 進行通道更新,得到特征圖P3;
4)由于特征圖Conv5_3 通道數(shù)為512,并且特征圖尺寸與P3大小一致,因此直接對Conv5_3和P3進行相加融合,對融合結果同樣使用3×3 的卷積和SeNet 得到特征圖P4;
5)對P4進行2 倍上采樣,由于Conv4_3 特征圖尺寸為38×38 比較大,因此在進行P4與Conv4_3的特征融合時需要先對P4進行歸一化,接著使用3×3 的卷積和SeNet 得到特征圖P5;
6)對P5進行2 倍上采樣,Conv3_3 特征圖尺寸為75×75,先對P4進行歸一化,再與Conv3_3特征相加融合,接著使用3×3 的卷積和SeNet 得到特征圖P6。
2.1.2 自底向上特征融合
圖1 中自底向上的特征融合分為5 個步驟:
1)將自頂向下融合中步驟6)中的P6作為起始特征圖B1,然后,對B1進行2 倍降采樣,接著對降采樣后的特征圖進行歸一化,對Conv4_3、P5和歸一化后的特征圖進行相加融合,對融合后的結果使用3×3 的卷積和SeNet 得到特征圖B2;
2)對B2進行2 倍降采樣,由于Conv4_3 特征圖尺寸為38×38,比較大,因此,在B2與Conv5_3、P4融合時,需要先對B2進行L2歸一化,接著使用3×3 的卷積和SeNet 得到特征圖B3;
3)由于特征圖Conv5_3 通道數(shù)為512,并且特征圖尺寸與B3大小一致,因此直接對B3與FC7、P3進行相加融合,對融合后的結果同樣使用3×3 的卷積和SeNet 得到特征圖B4;
4) 對B4進行2 倍降采樣,然后與Conv8_2、P2進行相加融合,對融合后的結果同樣使用3×3 的卷積和SeNet 得到特征圖B5;
5) 對B5進行2 倍降采樣,然后與Conv9_2、P1進行相加融合,對融合后的結果同樣使用3×3 的卷積和SeNet 得到特征圖B6。
2.1.3 雙向特征融合模塊
文獻[18-22]中提出了不同的特征融合的方法可以增強語義信息的表達能力,本文提出的雙向特征融合機制首先將深層特征層進行雙線性插值放大與淺層特征層進行特征融合,然后將得到的特征通過降采樣的方式與深層信息進行融合,這樣可以充分結合深層和淺層信息進行特征提取,進而提升淺層特征網絡對目標語義信息的表達能力。雙向特征融合過程細節(jié)如圖2 所示,圖1中的自頂向下的方式進行特征融合如圖(a)所示,自底向上的方式進行特征融合如圖(b)所示,圖中以Conv8_2 和Conv9_2 為例進行特征融合的表示。如圖2 所示,首先,將SSD 提取到的高層特征Conv9_2 使用雙線性插值的方法與SSD 提取的原始特征Conv8_2 通過自頂向下的方式進行融合得到P3;然后將B4通過降采樣的方式與P2進行融合。在進行自底向上的特征融合過程中,為了得到表征能力更強的特征,同時融合了SSD 提取的原始Conv8_2 特征。為了防止出現(xiàn)梯度爆炸問題,在進行雙向特征融合中,在自頂向下和自底向上都加入了BN 層,經過ReLU 激活函數(shù)和SeNet 注意力機制,得到最終的B5特征,最后送入檢測層。

圖2 雙向特征融合過程Fig.2 Bidirectional features fusion process
2.1.4 注意力機制模塊
注意力機制是一種資源分配的策略,廣泛應用在計算機視覺各個方向[23-24]。注意力機制讓神經網絡更多地去關注與特征相關的細節(jié)信息,這樣可以加快信息的處理時間,進而一定程度上提高計算機處理信息的效率,最終提高特征的表達能力。本文選用的是SeNet 注意力機制,該機制通過學習通道之間的關系,然后對卷積得到的特征圖進行相應地處理,最終得到一個與通道數(shù)相同維度的向量,并且將此向量作為一個權重數(shù),加到相應的通道上。注意力機制模型如圖3 所示。

圖3 注意力機制模塊Fig.3 Attention mechanism module
首先,對輸入的特征圖進行全局池化,再連接兩個全連接層,第一個全連接層神經元個數(shù)是c/16,第二個全連接層神經元個數(shù)為c。然后,再接一個Sigmod 層輸出1×1×c,得到各個通道對應的權重系數(shù),最后與輸入的特征圖元素相乘。
首先,將提取到的特征層輸入到預測層,然后,根據(jù)不同特征層anchor 的數(shù)目和類別,對anchor 進行分類,利用邊界框回歸對其進行位置的調整,得到最終的建議框。
2.2.1 對anchor 進行的改進
在網絡模型劃分正負樣本階段,anchor 和真實框的交并比(intersection over union,IoU)值作為正負樣本劃分的依據(jù)。低于通常使用的閾值作為負樣本,高于通常使用的閾值作為正樣本。當IoU 低于通常使用的閾值時存在兩種情況。第1 種情況,anchor 大于真實框。但是,anchor 中的上下文信息在目標檢測中也有很大的作用,通過上下文信息可以有效地檢測目標的信息,進而改善目標的漏檢情況。第2 種情況,anchor 小于真實框,但是這些anchor 包含被檢測目標更多的局部特征。針對這兩種情況,本文提出了一種改進的正負樣本判定策略,保留低于IoU 閾值但與目標相關的anchor 作為正樣本。將式(1)用于正負樣本的判斷中:

式中:SP代表先驗框集合;ST代表真實框集合;SP∩ST代表先驗框和真實框的交集;min(SP,ST)代表先驗框和真實框中面積較小的一個。由經驗可得a的值為0.9。第一種情況下若a>0.9,表示anchor 覆蓋住90%以上的真實目標,就判斷為正樣本。第2 種情況下,表示anchor 有90%以上和目標真實框覆蓋,就判定為正樣本。
2.2.2 損失函數(shù)
網絡的損失函數(shù)由兩部分組成,分別是置信度損失和位置損失,如式(2)~(5)所示:

式中:t為輸入圖像;Lf表示置信度損失;Ll表示位置損失;i表示屬于正樣本的個數(shù);j表示屬于負樣本的個數(shù);x表示所選框的橫坐標;y表示所選框的縱坐標;w表示所選框的寬;h表示所選框的高;m是框的位置的集合;N為匹配成功的先驗框個數(shù)。
非極大抑制算法實現(xiàn)步驟:首先根據(jù)設定的目標框的置信度閾值排列候選框列表,然后選取置信度最高的框添加到輸出列表,并將其從候選框列表中刪除。最后計算置信度最高的框與候選框列表中的所有框的IoU 值,刪除大于閾值的候選框。重復上述過程,直到候選框列表為空。
本實驗GPU 使用的是NVIDIA GeForce GTX 1080Ti。Batch-size 設置的是16,防止模型過擬合和模型收斂,先將學習率設置為0.001,訓練8 萬次,再將學習率降低10 倍設置為0.0001 訓練2 萬次,最后再降低10 倍設置為0.00001 訓練2 萬次,共12 萬次。實驗中的深度學習框架使用的是pytorch1.1。
VOC 數(shù)據(jù)集有20 類,包括訓練集、驗證集和測試集。為了防止過擬合,本文采用VOC2007+VOC2012 數(shù)據(jù)集進行訓練,然后再采用VOC2007測試集進行測試。
本文實驗采用平均準確率(average precision,AP)、召回率(average recall,AR)和所有類別的均值平均精度mAP (mean average precision)作為精度評價指標;f/s(frame per second)作為速度評價指標,代表每秒內可以處理的圖片數(shù)量。其中,AP代表正確檢測為正占全部檢測為正的比例[25]。
通過改進SSD 模型,本文模型在VOC2007 和VOC2012 訓練集上訓練,在不同尺度上的平均準確率和召回率值如表1 所示。

表1 不同尺度的檢測結果Table 1 Test results of different scales
由表1 可知,在本文所提出的算法中,當輸入尺寸大小為300 像素×300 像素時,平均準確率為80.6%,召回率為90.2%,速度為33 f/s;當輸入大小為321 像素×321 像素時,平均準確率為81.5%,召回率為91.7%,速度為30 f/s,當輸入大小為512 像素×512 像素時,平均準確率為82.5%,召回率為93.5%,速度為12 f/s。
為了進一步驗證本文算法的有效性,進行了消融實驗,其結果如表2 所示。

表2 不同方法對精度的影響Table 2 Influence of different improvement methods on accuracy
由表2 可知,本文所改進的方法中,在雙向特征融合的基礎上加入注意力機制可以使平均準確率提高2.2%,anchor 的改進可以使平均準確率提高0.4%,整體的平均準確率可以提高3.1%。
本文模型在VOC2007 和VOC2012 訓練集上訓練,在VOC 2007 測試集上的結果與主流算法Faster-RCNN、YOLOV2、DSSD321 等實驗結果對比如表3 所示。

表3 VOC2007 測試結果對比Table 3 Comparison of test results of VOC2007
由表3 可知,輸入圖像尺寸為300 像素×300像素時,本文提出的模型平均準確率較YOLOV2、SSD300、DSSD321 分別提高了6.9%、3.1%、1.1%。同時,SSD 模型每秒檢測46 張圖像,而本文改進后SSD 模型每秒檢測33 張圖像,相比于SSD 模型,改進模型的檢測速度略有下降,這是由于改進雙向特征融合時模型計算量有所增加,從而影響模型的檢測速度。
VOC2007 具有20 類目標,其中每一類別目標與主流的目標檢測算法的AP 的對比結果如表4所示。

表4 VOC2007 測試結果詳細比較Table 4 Detailed comparison of test results of VOC2007 m AP/%
由表4 可知本文算法平均精度有一定的提高,尤其對小目標的提升更為顯著。
為了驗證本文算法的有效性,對原始SSD 算法和本文算法的目標檢測結果進行了可視化展示,如圖4、5 所示。本文算法檢測框和目標貼合得更為緊密,同時對小目標的漏檢和誤檢情況有一定程度的改善。

圖4 SSD 檢測效果Fig.4 SSD detection results

圖5 改進的SSD 檢測效果Fig.5 Improved SSD detection results
針對SSD 目標檢測中存在的問題,提出了雙向特征融合和注意力機制結合的目標檢測方法。與傳統(tǒng)的特征金字塔不同,該方法引入雙向融合特征金字塔,充分考慮高層與低層信息之間的關系,進一步得到了語義信息更豐富的多尺度特征圖。同時,在自頂向下和自底向上的雙向融合中加入了通道注意力機制,提高了特征融合的效率。最后,針對目標的漏檢情況,本文提出了一種改進的正負樣本判定策略,提取到被檢測目標更多的局部特征。經過實驗對比,本文所提出的算法模型相較于傳統(tǒng)SSD 算法,平均準確率方面提高3.1%,表明了本文所提算法的有效性。