胡朝海 李自勝 王露明
(1.西南科技大學制造科學與工程學院 綿陽 621000)
(2.制造過程測試技術教育部重點實驗室 綿陽 621010)
目標檢測是計算機視覺領域研究熱點和難點之一,廣泛應用于人機交互、智能導航等領域[1],其主要任務是精確定位圖像中一個或多個目標,并判斷其類別[2]。傳統的目標檢測算法如HOG[3]、SIFT[4]等,主要通過滑動窗口生成大量的候選區域,隨后提取每個區域的圖像特征,再將提取到的特征傳遞給(SVM)[5]或Adaboost[6]等傳統分類器。雖然這些方法能夠取得較好檢測效果,但特征提取過程中計算開銷大,實時性差,從而在應用場景中受到極大的限制。
近年來,研究人員將卷積神經網絡CNN[7](Convolutional Neural Network)應用于目標檢測,CNN 強大的特征提取能力大幅度提升了目標檢測的檢測速度和精度。基于CNN 的目標檢測方法主要有兩類:基于候選區域的檢測方法和基于回歸的檢測方法。2014 年,Girshick 等[8]將CNN 應用于目標檢測,提出了R-CNN(Region with Convolutional Neural Network)算法。R-CNN 算法通過selective search 獲取2000 個候選區,隨后逐個輸入CNN 進行特征提取,因其候選區域多計算開銷等,該算法未能得到很好的應用。2015 年,Girshick 等受到SPP-Net[9](Spatial Pyramid Pooling-Net)的啟發,將ROI pooling 融入R-CNN 提出Fast R-CNN[10]網絡,但該算法仍依賴selective search 來生成候選區域。同年Ren 等[11]將RPN(Region proposal network)網絡融入Fast R-CNN 提出了Faster R-CNN,用RPN代替Selective search 生成候選區域,進一步加快了檢測速度并提升了精度,使網絡達到實時目標檢測效果。
基于回歸的檢測方法,主要代表有YOLO(You Only Look Once)系列和SSD(Single Shot Multi Detector)系列算法。2017 年Liu 等[12]提出了SSD 算法,以VGG-16[13]為Backbone,將具有豐富幾何信息的淺層特征用于小目標檢測,具有豐富語義信息的深層特征用于大目標檢測。2017 年Hu 等[14]提出了DSSD(Deconvolutional Single Shot Multi Detector)網絡,此網絡在SSD 的基礎上加入了Deconvolutional layer 和殘差結構提升了精度。2015 年后,Redmon 等[15~16,21]相繼提出了YOLOv1、YOLOv2 和YOLOv3 算法,YOLOv1 算法一步完成圖像中目標定位、檢測和分類,實現實時目標檢測。YOLOv2是YOLOv1 的改進版,受到ResNet[17]啟發,該算法重新設計特征提取網絡DarkNet-19 網絡。YOLOv3 改進YOLOv2 的DarkNet-19 網絡,設計了DarkNet-53 網絡作為YOLOv3 的特征提取網絡。得益于DarkNet-53 和多尺寸訓練,使得目標檢測性能得以提升。YOLOv3 由于檢測速度快和精度高的優勢在各個行業中被廣泛使用,然而在精度要求更高的目標檢測任務中,YOLOv3 精度還有待提升。
嵌入注意力機制是改進目標檢測算法性能常用方法之一。Hu 等[18]提出了SENet(Squeeze and Excitation Net)網絡,該算法將特征圖的高和寬都壓縮為1,得到(C×1×1)的特征數據,再與原維度的特征數據相乘實現注意力機制,即通道注意力機制。Woo 等[19]提出卷積注意模塊CBAM(Convolutional Block Attention Module),和SENet 相比,增加了實現空間注意力的功能。向YOLOv3 嵌入注意力機制后取得較好的效果,如2019年Xu等[20]將Attention 嵌入YOLOv3 算法提出了Attention-YOLO算法,但Attention 權值較為單一,注意力效果有限。本文提出了類注意力機制(Attention-Like),在YOLOv3 的DarkNet-53 中嵌入Attention-Like 類注意力,實現了AL-YOLO(Attention-Like YOLO)算法。實驗表明,嵌入此Attention-Like后YOLOv3的性能得到了一定的提升。
YOLOv3 模型的特征提取網絡是DarkNet-53網絡。其結構如圖1 所示。圖中Conv 表示卷積層(Convolutional layer),BN 表示BatchNorm,對數據進行批正則處理,LeakyRelu 表示激活函數。YOLOv3的預測結構如圖2所示,將特征提取網絡的后三個不同尺寸的特征圖用于目標檢測,圖中的(n×c×13×13),其中n表示batch size,c表示通道數,13和13 分別表示特征圖的高和寬。Conv 表示卷積層,對特征圖進行卷積操作,Concat 表示將兩條支路上的特征圖在c維度上進行堆疊。對Concat 操作后的特征圖分別進行卷積操作調整其通道數為(256,512,1024)。

圖1 DarkNet-53網絡結構

圖2 YOLOv3 預測結構
Attention-Like 能更好地關注圖像中有目標存在的區域,抑制沒有目標的區域。本文提出的Attention-Like 是將前一個特征圖上的幾何信息在后一個特征圖中凸顯出來,通過學習,增強有目標部分的特征圖權重,抑制沒有目標的特征圖權重,來降低沒有目標部分特征圖對目標檢測造成的影響。如圖3 所示,Attention-Like 模塊的輸入為FA和FB。

圖3 Attention-Like網絡結構
其中C*、H*、W*分別表示特征圖的通道數、高度和寬度。
C'=2C'',H'=2H'',W'=2W'',令ω=[ω1,ω2,…,ωc],c表示第c個特征圖通道,ωc表示第c個特征圖通道上的卷積核參數,?表示卷積。整個卷積過程可由下式(5)表示:
在卷積過程中,進行Padding 補0,使得FB1和FA的高度和寬度相等。緊接著將卷積后的特征圖通過Sigmoid 函數,再與FA特征圖逐元素相乘再相加,可由如下公式表示:
上式中⊙表示逐元素相乘,⊕表示逐元素相加,下同。得到NF后,對NF進行步長為2 的卷積操作,使特征圖的高和寬為原來的一半。將NF通過Sigmoid 函數,再將NF與特征圖FB逐元素相乘和相加,最后輸出可由如下公式表示:
YOLOv3 將原圖和標注進行訓練,很大幅度上提升了網絡的訓練速度和預測速度。該網絡模型又為全卷積網絡,且采用回歸算法,進一步提升了該算法的訓練和預測速度。本文提出的Attention-Like需要兩個輸入值,可嵌在任意兩個或多個卷積操作之后。向DarkNet-53 中嵌入Attention-Like,如圖4 所示,分別在DarkNet-53 的第一個模塊和第二個模塊之后嵌入Attention-Like,得到AL-YOLO 算法。其中第一個Attention-Like 的輸入分別為DarkNet-53 的第一個模塊的Con(3,1,1)的輸出和Con(3,2,1)的輸出,Con(3,1,1)的輸出對應圖3的FA,Con(3,2,1)的輸出對應圖3中的FB。第二個Attention-Like 的輸入分別為第一個Attention-Like 的輸出和DarkNet-53 的第二個模塊Con(3,2,1)的輸出,分別對應圖3中的FA和FB。

圖4 Attention-Like嵌入DarkNet-53
YOLOv3 將DarkNet-53 網絡的后三個模塊的輸出用于檢測,以分辨率為416×416 的輸入圖像為例,后三個大小不同的特征圖經過Concat和卷積以后,分別得到(13×13×75)、(26×26×75)和(52×52×75)的特征圖,特征圖的高和寬取決于輸入圖像的大小,75 取決于數據集有多少個目標類。75=3×(4+1+20),其中3表示特征圖的每個網格上生成三個檢驗框,4 表示每個檢測框的中心位置坐標值和高寬值的數目個數,1 表示每個檢驗框中包含目標的置信度,20 表示數據集PASCAL VOC 數據集中的20個類,AL-YOLO沿用此檢測方法。
通過DarkNet-53 網絡對輸入圖像提取特征后,將最后三個大小不同的特征圖用于目標檢測,若輸入圖像的分辨率為416×416,最后三個特征圖的分辨率分別為52×52、26×26、13×13。在檢測階段,根據特征圖的大小生成網格,再在每個網格中生成三個邊界框,共生成(52×52+26×26+13×13)×3=10647 個邊界框,其中3 表示每個網格上生成3個檢測框。在每個網格上,網絡預測了25 個值,其中前兩個值是邊界框的中心坐標,用tx和ty表示,第三和第四個值表示邊界框的寬度和高度,用tw和t?表示,第五個值表示邊界框中有無目標的置信度,用t0表示。用(cx,cy)表示邊界框相對于圖像左上角的偏移量,在圖像坐標中,設置左上角為圖像的坐標原點。用pw和p?表示先驗邊界框的寬度和高度。目標的邊界框預測值可如下表示:
其中Pr(object)表示目標是否處于預測框中,若有目標存在,則Pr(object)=1,反之Pr(object)=0,表示預測框和真實框之間的交并比,其中gt表示真實框,object表示預測框。剩余的20 個值用來預測框中目標的類別,最大值對應的索引即為目標所屬類別。
實驗采用公開的PASCAL VOC數據集,該數據集由20 個類別的圖像組成,如aero、bike、bird、boat等。使用VOC2007 train+val 和VOC2012 train+val(共計16551 張圖像)訓練模型,使用VOC2007 test(共計4952張圖像)測試模型。
實驗硬件配置:雙核Intel(R)Xeon(R)CPU Gold 5115,內存大小為32GB,一塊Quadro P4000顯卡,顯存為8GB。軟件配置為Windows10,編程語言為Python3.7,使用Pytorch-1.7.1+cu101 框架構建網絡。在訓練過程中,先將DarkNet-53在ImageNet上進行預訓練,嵌入Attention-Like 模塊后加載預訓練好的網絡模型。訓練160 個epoch,每個epoch從(320~640)中以32 為間隔隨機抽取一個數作為輸入圖像的高和寬,實現多尺寸訓練。本文設置初始學習率為0.001,動量momentum 為0.9,權重衰減系數為0.0005,batch size 為4,交并比閾值為0.5。通過水平翻轉、隨機裁剪和隨機仿射實現數據增強。
在測試階段,采用mAP(mean Average Precision)平均精確率均值評價檢測性能。交并比IOU的閾值為0.5,通過IOU 計算出精準率P(Precision)和召回率(Recall),然后畫出PR 曲線圖(Precision-Recall),在峰值點向左畫一條線和上一個峰值的垂線相交,與橫軸和縱軸形成封閉的圖形,計算出此面積即為AP(Average Precision)。用此方法計算出所有類別的AP,然后求其均值即為mAP,可由如式(13)表示:
其中C為類別數,本文C=20。
4.3.1 Faster-RCNN、SSD512和AL-YOLO對比
將AL-YOLO 和主流的目標算法進行對比,Faster-RCNN[11]、SSD512[12](輸入圖像高和寬為512)以及AL-YOLO的實驗結果如表1所示。

表1 三種算法在PASCAL VOC測試集上的檢測精度(單位:%)
從檢測結果可以看出,AL-YOLO 在每個類別上的檢測精度幾乎都高于另外兩個算法每個類別上的檢測精度,三個算法對比如圖5所示。

圖5 三種算法在PASCAL VOC測試集上每個類別的檢測精度對比
三種算法在PASCAL VOC 測試集上的mAP 對比如表2 所示,AL-YOLO 算法精度均高于其余兩種算法,分別高出12.4%和7.9%。

表2 三種算法在PASCAL VOC測試集上的平均精確度均值(mAP)對比
4.3.2 AL-YOLO和其他改進的YOLO算法對比
AL-YOLO 和其他基于YOLOv3 改進的算法進行對比,如表3 所示,AL-YOLO 精度均高于該兩種算法,分別高出1.1%和0.9%。

表3 AL-YOLO與其他基于YOLO v3改進的算法在PACSCAL VOC測試集上對比
AL-YOLO 和Attention-YOLO-A 和Attention-YOLO-B 相比較,AL-YOLO 的權值在數量上遠大于Attention-YOLO的權值數量,更能關注圖像中每個目標存在的位置及目標的語義信息和幾何信息,從而提升目標檢測精度。
本文提出了Attention-Like 類注意力機制,將之嵌入到YOLOv3 的骨干網絡DarkNet-53 中實現了AL-YOLO 算法。實驗結果表明,Attention-Like不斷學習特征圖中有目標存在區域的權重,增強了小分辨率特征圖的幾何信息,從而提升了模型目標檢測的性能。由于設計的模型結構簡單,嵌入Attention-Like 后網絡復雜度和浮點運算量的增量分別不超過1%,實時性能和YOLOv3 相當。下一步工作將研究更進一步優化Attention-Like,力求再次提升模型的目標檢測性能。