王燕妮,余麗仙
西安建筑科技大學 信息與控制工程學院,西安710055
目標檢測是計算機視覺中最基本也是最關鍵的一項任務,在視頻監控、智慧醫療等領域中都具有廣泛的應用價值。高精度目標檢測要求當給出一張圖片或一段視頻流時,可以準確地對圖片或視頻中的目標進行定位并識別出所屬類別。然而目標自身的形狀、顏色、姿勢等因素,以及外界的遮擋、光照等條件,都對目標檢測任務產生了巨大的干擾。常見的目標檢測方法有基于像素分析的方法、基于特征匹配的方法、基于頻域的方法和基于識別的檢測方法。使用較為廣泛的檢測器通常分為特征提取和目標分類兩大步驟,常用的傳統特征提取方法有方向梯度直方圖(histogram of oriented gradient,HOG)、尺度不變特征變換(scale-invariant feature transform,SIFT)、局部二值模式(local binary pattern,LBP)等。與這些特征提取方法搭配使用的分類器有支持向量機(support vector machine,SVM)、隨機森林(random forests)、AdaBoost等。同時還有一系列基于上述方法改進得到的目標檢測器,如由TPIHOG(thermal-position-intensity-histogram of oriented gradient)和AKSVM(additive kernel SVM)組合得到的TPIHOG-AKSVM檢測器,還有融合Haar-Cascade 和HOG-SVM 得到的新的檢測器。但是這些方法的魯棒性較差,當檢測目標較為復雜時,檢測精度和實時性都比較低。
隨著人工智能的發展,深度學習在目標檢測領域越來越受歡迎,目前主流的目標檢測方法主要分為兩階段檢測法和單階段檢測法。Fast R-CNN、Faster R-CNN、RefineNet等都是經典的兩階段檢測法。YOLO(you only look once)、SSD(single shot multibox detector)、RetinaNet等都屬于典型的單階段檢測法。兩階段檢測法主要是將候選框的提取和目標檢測分為兩個步驟執行,首先進行候選對象的篩選,然后對候選對象進行分類和回歸操作。而單階段目標檢測則是將其融合到一個網絡中,直接輸出檢測結果。單階段檢測算法在精度上稍優于兩階段檢測法,但在檢測速度上遠超于兩階段檢測法。
YOLOv1 算法是單尺度目標檢測算法,因此對于多尺度目標檢測任務不適用。SSD 相比于YOLOv1有較大的提升,它引入了多尺度檢測方法,針對檢測目標的大小不同,使用不同尺度的特征圖進行檢測,但是淺層目標無法充分利用上下文語義信息,因此對于小目標等困難樣本存在較多的誤檢、漏檢。為了解決小目標檢測困難等問題,學者們又提出了多種特征融合方法,如最常見的FPN(feature pyramid network)和PAFPN(path aggression FPN)。通過簡單的自下而上或自上而下的特征融合,得到特征信息更加豐富的特征圖。通常直接通過特征相加或維度拼接進行特征融合,對于算法的性能提升具有有效性,但是容易引入噪聲和冗余信息。文獻[21]中提出了一種多尺度感受野注意力,通過引入注意力,增強圖像目標信息權重,從而提升小目標的檢測精度。
本文針對SSD 算法存在的檢測缺點,引入注意力機制和新的特征融合模塊,改善網絡的漏檢和誤檢情況。注意力機制可以提升網絡對關鍵信息的學習能力,而特征融合可以豐富SSD 中用于目標檢測的特征層信息,兩者結合可以有效提升目標檢測的準確率。
SSD 是一種經典的多尺度單目標檢測算法,以VGG-16作為基礎骨干網絡,算法結構如圖1 所示。SSD 算法預先通過骨干網絡提取出6 個由大到小的特征圖,在每個尺度上預先定義多種長寬比的錨框,不同尺度的特征圖對應檢測的目標大小不同,淺層特征圖檢測小目標,深層特征圖檢測大目標。最后使用非極大值抑制(non-maximum suppression,NMS)刪除重復的預測框,保留結果最好的預測框。

圖1 SSD 算法結構圖Fig.1 SSD algorithm structure diagram
SSD 采用了多尺度預測方法,淺層網絡檢測小目標,深層網絡檢測大目標。淺層網絡雖然含有豐富的幾何信息和較為準確的定位,但是感受野小,且語義信息表征能力弱。深層網絡與淺層網絡特性相反,其具有較大的感受野和豐富的語義信息,但是分辨率小,幾何信息表征能力弱。因此,SSD 在進行目標檢測時會存在嚴重的漏檢和誤檢的情況。
為了提高SSD 的目標檢測性能,本文在SSD 的基礎上引入了注意力機制模塊和特征融合模塊。通過注意力機制模塊,使網絡將更多的關注點放置在關鍵信息上,增強網絡對目標的識別能力;通過特征融合模塊,將深層網絡中的特征融合到淺層網絡中,增強網絡對小目標和復雜目標的檢測能力。
為了改善SSD 算法中存在的復雜目標檢測困難等問題,在原始的網絡中融入了注意力機制模塊和特征融合模塊。首先將原始SSD 提取出的6 個尺度不同的特征層依次輸入到注意力機制模型中,增強特征圖對關鍵信息的表達能力。其次,將深層網絡和淺層網絡相融合,提升淺層網絡的語義信息表征能力。改進后的網絡結構如圖2 所示。

圖2 改進的SSD 算法結構Fig.2 Improved SSD algorithm structure
注意力機制具有與人類視覺相似的特性,當出現物體時,會優先將更多的注意力放置在關鍵信息上,同時抑制無用信息。近幾年來,計算機視覺任務與注意力機制之間的聯系日益密切。如用于阿爾茨海默病(Alzheimer’s disease,AD)識別和分類的帶有注意力機制的殘差網絡,使用帶有注意力機制的網絡對合成孔徑雷達(synthetic aperture radar,SAR)圖像中的橋梁進行檢測。
根據注意力關注的區域不同,注意力機制通??煞譃橥ǖ烙?、空間域和混合域。SE-Net(squeezeand-excitation networks)是一種典型的通道域注意力機制,通過對各個通道的自主學習,辨別各個通道的重要程度,主動增強重要通道的權值。如圖3 所示,為SE-Net 的結構模型圖。但是SE-Net 中含有的降維運算會影響渠道相關性預測,同時對所有渠道都進行相關性捕獲也會降低網絡的效率。Jaderberg等提出的Spatial Transformer Networks 則是典型的空間域注意力機制,該機制可以將圖像中的空間信息轉換并保存到另一個空間,該模型結構如圖4 所示。CBAM(convolutional block attention module)則是一種常見的混合域注意力機制,通過將空間域和通道域串聯,可以更加有效地提升網絡性能。

圖3 擠壓和激發網絡模型圖Fig.3 Squeeze-and-excitation networks model structure

圖4 空間域結構模型圖Fig.4 Spatial transformer model structure
考慮到網絡參數量和計算量,選擇了一種輕量級注意力機制,即ECA-Net(efficient channel attention for deep convolutional neural networks),它 是SENet 的改進版本。ECA-Net 不僅參數量更少,性能也更優。如圖5 所示,為ECA-Net 的架構圖。該網絡結構中取消了降維運算,當網絡完成全局平均池化之后,直接進行局部跨通道連接,即將由池化操作得到的每個與其相鄰最近的個通道進行一維卷積操作,的取值通過通道數自適應確定:

圖5 深度卷積神經網絡的有效通道注意Fig.5 Efficient channel attention for deep convolutional neural networks

其中,|·|表示取離結果最近的奇數;和表示常量,分別取值為2 和1。
ECA-Net 網絡的注意力熱圖如圖6 所示,圖6(a)為原始圖片,圖6(b)為普通卷積輸出熱圖,圖6(c)為ECA-Net注意力熱圖??梢钥吹?,含有注意力機制的熱圖中,背景信息明顯被抑制,更加突出了關鍵目標信息。

圖6 ECA-Net熱圖Fig.6 ECA-Net heat map
引入注意力機制前后的主干網絡多層輸出特征圖對比如圖7 所示。上半部分的特征圖為原SSD 網絡的輸出特征圖,下半部分為引入ECA-Net 之后輸出的特征圖。通過特征圖對比,發現在引入注意力機制之后,目標和背景差明顯被放大,背景信息的亮度被抑制,在38×38 的特征圖中表現得尤為明顯。這有利于網絡捕獲更多的目標信息,同時減少背景對目標的影響。實驗表明,引入ECA-Net 模塊,網絡的參數量個數依舊為59 719 217 個,說明引入的輕量級注意力機制并沒有增加網絡的計算量,即沒有對網絡的檢測速度造成影響。

圖7 特征圖可視化對比圖Fig.7 Visualized comparison chart of feature maps
SSD 的淺層網絡用于小目標檢測,但是深層特征圖感受野小,語義信息表征能力弱。為了增強SSD網絡對小目標的檢測能力,引入特征融合模塊。
為了得到更好的目標檢測效果,卷積神經網絡結構開始向更深和更寬這兩個方向發展。但是擴展神經網絡的結構通常意味著帶來更大的計算量,這會在一定程度上提高目標檢測任務的成本。受CSPNet(cross stage paritial network)的啟發,構造了簡潔版的CSPNet結構模塊,并將其融入特征融合模塊中,如圖8 所示為CSPNet 模塊結構,圖8(a)為改進前的結構圖,圖8(b)為改進后的結構圖。本文設計的簡單的跳變連接網絡,首先將基礎層特征圖劃分為兩部分,然后通過跨階段層次結構進行合并,可以在實現更加豐富的梯度組合的同時減少網絡計算量。通過該結構可以增強卷積神經網絡的學習能力,降低網絡計算瓶頸。

圖8 CSPNet結構圖Fig.8 CSPNet structure diagram
不同尺度之間的特征融合需要對小的特征圖進行上采樣,本文使用的上采樣方式為線性差值法中的最近鄰插值算法,其基本原理是將已知像素的值賦予給最鄰近的位置像素。如圖9 所示,區域的像素值均由點(,)決定,區域的像素值則由點(+1,)決定,以此類推可以得到該區域的所有(+,+)的像素值。

圖9 最鄰近插值法Fig.9 The nearest interpolation
完整的特征融合模塊結構如圖10 所示。首先將骨干網絡輸出的特征圖送入輕量級注意力模塊,通過注意力機制對無用信息進行抑制,增強網絡對關鍵信息的捕獲。然后通過改進后的CSPNet 結構,進一步優化網絡特征。改進后的CSPNet網絡由兩個分支組成,主分支上由兩個卷積核大小不同的卷積層串聯組成;次分支為一個1×1 的卷積核。通過該結構可以先將上一層的特征映射劃分為兩部分,再使用跨層次合并操作,可以在保證網絡精度的同時減少計算量。然后進行上采樣將深層網絡中的特征圖尺寸擴展成待融合的淺層特征圖大小,最后通過element-wise add 方式將對應的特征圖相加,它可以在不增加特征通道數的同時豐富特征圖信息。為了避免因不同尺度特征圖之間存在的信息差異而引起的次優融合結果,再次經過卷積操作,輸出最終得到的融合后的特征圖。

圖10 特征融合模塊Fig.10 Feature fusion module
融合模塊雖然可以充分利用上下文語義信息,豐富淺層網絡的特征信息,但是同時也增加了模型的復雜度。相比于改進前的SSD,改進后的網絡多了3 個特征融合模塊,在一定程度上增加了網絡的計算量,對網絡的總體實時性產生了影響,但是提升了整個網絡的檢測精度。
在網絡初始化時采用了遷移學習的思想,首先使用預訓練好的SSD 模型對改進后的網絡進行參數初始化,新增加的網絡層采用He 初始化方法。然后進入微調階段,對改進后的網絡的權重參數進行微調,并在訓練過程中引用數據增強策略。微調階段采用了兩步驟訓練法,將骨干網絡和檢測網絡分開訓練。首先訓練檢測網絡,即關閉骨干網絡中的梯度更新命令。當網絡達到穩定時,開啟骨干網絡的反向傳播指令,然后從頭訓練整個網絡。這樣在訓練初期可以防止骨干網絡中的權重被破壞,同時也可以加快網絡的訓練速度。
優秀的訓練數據集對于神經網絡來說及其重要,在模型訓練過程中參考了最新的SSD 訓練策略,引入了一系列常規的數據增強方法,如水平翻轉、顏色扭曲、隨機裁剪等。通過數據增強策略,可以在訓練過程中豐富訓練數據集,從而達到提升網絡性能的目的。
為了更好地檢測各種大小和形狀不同的目標,每一個特征圖都需要預先設置好各種尺度的先驗框。本文根據SSD 算法設置的先驗框選取規則,進行錨框選定。候選區的尺寸選取原則如下:





與原始SSD 相同,改進后的算法依舊通過分類和回歸進行目標預測。分類時使用Softmax 函數進行分類置信度預測,定位時使用回歸函數輸出目標位置。目標損失函數由置信度誤差和位置誤差組成,即:

其中,通常默認設置為1;為匹配的候選框數量,當為0 時,則說明沒有匹配的候選框,值為0;其中置信度誤差計算公式如下:

其中位置誤差計算公式如下:

式中,(g,g,g,g) 表示真實框,(d,d,d,d) 表示候選框。
網絡訓練階段使用Adam 優化器,采用兩步驟訓練法,可以防止通過預訓練模型初始化得到的權重被破壞。首先凍結骨干網絡,訓練檢測網絡,batch_size 設置為32,初始學習率為0.000 5,總共迭代23 350 次,且每迭代一次,學習率下調5%。然后將被凍結的骨干網絡參數釋放,從頭訓練整個網絡,batch_size 依舊設置為32,初始學習率為0.000 1,總共迭代23 350 次,且每迭代一次,學習率也下調5%。整個訓練階段總共迭代46 700 次。
為了評估改進后的網絡性能,使用PASCAL VOC 數據集進行驗證。該數據集總共包含20 個物體類別,如鳥、人、車、羊、牛、盆栽、沙發、椅子等。在訓練階段,使用PASCAL VOC2007 trainval 數據集和PASCALVOC2012 trainval數據集作為訓練集和驗證集,總共包含16 551 張圖片。在測試階段使用PASCAL VOC2007 test數據集作為網絡評估數據集,總共包含4 952 張圖片。
實驗過程中使用的顯卡為Nvidia Tesla T4,顯存為16 GB,采用Pytorch 進行神經網絡構建,并為其配置了對應的CUDA 和CUDA 深層神經網絡庫。
采用AP 和mAP 作為算法的性能評估指標。并且與SSD300、Faster R-CNN、DSSD321、ION300等目標檢測算法進行對比。各類別檢測精度詳細結果如表1 所示。通過表1 可以發現,本文網絡對各個類別的檢測精度都有一定程度的提升。在羅列出的6 種方法中,最高單類別目標AP 值進行了加粗顯示,其中DSSD 占有4 項,ION 占有5 項,本文方法占有12項。改進后的SSD 的mAP 比原SSD 提高了2.4 個百分點,比DSSD 提升了1 個百分點,比ION 提升了0.4個百分點。圖11 為表1 的數據可視化結果,可以很直觀地看到,本文方法基本在每一個類別上都處在最高點,說明本文提出的改進方法具有有效性。

圖11 PASCAL VOC2007 test數據集上20 種類別AP 對比Fig.11 Comparison of AP of 20 classes on PASCAL VOC2007 test dataset

表1 PASCAL VOC2007 test數據集上20 種類別檢測精度對比Table 1 Comparison of detection accuracy of 20 classes on PASCAL VOC2007 test dataset %
網絡的評價指標除了mAP 之外,還有檢測速度。為了更全面地比較本文算法與其他主流的目標檢測算法的差異,進一步對比了多種算法在PASCAL VOC2007 test數據集上的檢測速度和檢測精度,結果如表2 所示。從表中可以看出,當輸入分辨率相近時,改進后的算法雖然在實時性上有所下降,但是在精度上具有優勢。相比同樣帶有數據增強操作的原始SSD300 算法,本文方法在精度上提升了2.4 個百分點;相比于RSSD300,雖然在精度上只提升了1.1個百分點,但是檢測速度遠遠高于該算法。當網絡的輸入分辨率大于本文算法時,在檢測精度相近的情況下,本文算法具有更快的檢測速度,如SSD512算法,在精測精度上與改進后的SSD 網絡幾乎相同,但是在檢測速度上比本文方法要慢很多。綜上,說明本文提出的改進方法具有有效性,不僅可以減少漏檢、誤檢,還能保證檢測速度,同時滿足了高精度和高實時性。

表2 PASCAL VOC2007 test數據集上檢測速度和檢測精度對比Table 2 Comparison of detection speed and detection accuracy on PASCAL VOC2007 test dataset
為了更直觀地顯示本文算法的有效性,圖12 展示了原SSD 和改進的SSD 方法在PASCAL VOC 2007 test 數據集上的檢測結果圖,兩個算法的訓練數據集輸入分辨率均為300×300,且訓練集均為PASCAL VOC 2007 trainval 數據集和PASCAL VOC 2012 trainval 數據集。圖(a1)~(f1)為SSD 算法的檢測結果,圖(a2)~(f2)為本文算法的檢測結果。通過圖(a1)、(a2),(b1)、(b2)的對比,可以看到本文算法對行人的檢測性能更好;通過圖(c1)、(c2)的對比,可以看到本文算法對摩托車的檢測性能更好;通過圖(d1)、(d2),(e1)、(e2)的對比,可以看到本文算法對牛羊的檢測性能更好;通過圖(f1)、(f2)的對比,可以看到本文算法對自行車的檢測性能更好。
從圖12 可以看出,改進后的算法在復雜背景下的檢測性能明顯優于原SSD 算法,且對于一些相似物體的識別能力更強。圖中紅色橢圓為錯誤檢測目標示例,如在圖12(c1)中,原SSD 算法將摩托車識別成自行車;在圖12(e1)中,原SSD 算法將牛識別成羊,而在本文算法中,這兩張圖片中的目標均被正確識別。另外,從被識別出的物體的置信度還可以發現,改進后的算法識別出的物體的置信度值更高,且當目標被遮擋時,改進后的算法也能準確檢測目標。

圖12 SSD 與本文算法檢測結果對比Fig.12 Comparison of detection results between SSD and proposed method
為了進一步驗證本文算法對遮擋目標的魯棒性,從PASCAL VOC2007 測試集中挑選了100 張含有大量遮擋目標的圖片,組成小型目標遮擋檢測數據集,使用原始SSD 目標檢測算法和改進后的目標檢測算法對該數據集進行檢測。如表3 所示為檢測結果對比,圖13 為檢測結果可視化。改進后的算法的mAP 值比原SSD 提升了4.7 個百分點,說明改進后的算法對遮擋目標具有魯棒性。

圖13 SSD 與本文算法遮擋目標的檢測結果對比Fig.13 Comparison of detection results of occluded objects between SSD and proposed method

表3 遮擋目標數據集上檢測速度和檢測精度對比Table 3 Comparison of detection speed and detection accuracy on occluded objects dataset
綜上,改進后的算法不僅能準確識別出更多的目標數量,且對相似目標的辨別能力更強,對小目標和遮擋目標等困難目標的檢測效果也更好。通過上述實驗,充分說明改進后的方法有利于改善目標的誤檢、漏檢等情況。
為了解決傳統的SSD 算法存在的小目標、遮擋目標等困難目標檢測效果差、相似目標辨別性能低等情況,對網絡框架進行了改進。首先,在特征輸出層之后引入輕量級注意力機制,使網絡可以更好地區分背景和目標,從而增強網絡對關鍵信息的辨識能力。其次,針對SSD 的淺層網絡存在的缺點,設計了一款新的特征融合模塊,將5×5、10×10、19×19 和38×38 這四層特征層自下而上進行有效的特征融合,可以減少融和時因信息差而產生的負面影響。使用公開的PASCAL VOC 數據集對算法進行驗證,改進后的網絡在PASCAL VOC2007 測試集上的檢測精度達到了79.6%,比原始SSD 算法提升了2.4 個百分點,在自制小型遮擋目標數據集上提升了4.7 個百分點,充分證明了改進方法具有一定的時效性和魯棒性。
由于引入了新的網絡模塊,增加了模型參數量,導致改進后的網絡檢測速度有所下降,但是改進后的模型的檢測速度仍然滿足實時性。本文算法雖然對小目標和遮擋目標的檢測性能有一定的提升,但還需進一步完善。在后續工作中,將針對網絡的各個模塊繼續進行優化,全面提升網絡的檢測性能。