高建瓴,馮嬌嬌,王子牛,韓毓璐,孫 健
(貴州大學 大數據與信息工程學院,貴陽 550025)
目標檢測[1-3]是計算機視覺領域中一個具有挑戰(zhàn)性的課題[4],主要目的是從視頻或者一些數據集中檢測并定位特定的目標。由于目標所在的環(huán)境影響,至今還沒有一種比較通用且成熟的檢測方法。傳統的目標檢測算法已經難以滿足現有數據的處理效率、速度和精度等各方面的要求。
隨著網絡的發(fā)展,陸陸續(xù)續(xù)出現很多基于深度學習[5]方法思想的目標檢測模型。例如,一種是基于區(qū)域提取的R-CNN系列[6-8]為代表的目標檢測,其次就是基于回歸的目標檢測算法,包括YOLO[9](You Only Look Once)和SSD[10](Single Shot Multi-BoxDetector)。在基于回歸的方法中,YOLO第一個采用了回歸思想,實現了one-stage檢測的算法[11]。如今該算法已經從YOLO經YOLO V2發(fā)展到現在YOLO V3[12],不論在檢測速度方面還是在精度上,已遠遠超過第一代的YOLO。相比作為后輩的SSD法,性能也得以超越。但是YOLO算法依舊存在一些問題,比如定位精度、召回率等較低,且對尺寸較小的物體檢測效果欠佳。
YOLO V3利用特征金字塔[13](Feature Pyramid Network,FPN)的思想,將相鄰尺度的特征圖通過串聯(concat)操作進行特征融合[14],通過特征融合可以有效提高目標的檢測精度。
本文基于YOLO存在的問題,以YOLO V3模型為主要架構,提出了一種基于金字塔模型和注意力機制的YOLO V3目標檢測算法,建立了多尺度的目標檢測算法。通過反卷積和金字塔模型,來融合不同尺度的淺層和高層的信息,從而提升對目標的檢測精度。利用注意力機制,使得具有注意力效果的梯度能流入更深的網絡中。實驗結果表明,改進后的YOLO V3比原始的YOLO V3在COCO 2014數據集上具有更高的目標檢測精度。
通過構建特征金字塔網絡,解決了眾多尺度檢測問題,代替了Faster R-CNN之類的檢測模型的特征提取器,生成多層特征映射,信息的質量比普通的用于特征檢測的特征金字塔更好。如圖1所示。
圖1 預測網絡Fig.1 Predicting network
圖1中(a)、(b)、(c)是現在常有的金字塔結構,(d)是本文采用的金字塔結構。圖1(a)是檢測系統選擇使用于更快速檢測的單尺度特征,它自底向上卷積,使用最后一層特征圖進行預測。如SPPNet、Faster R-CNN就是采用這種方式,即僅采用網絡最后一層的特征。該方式雖然檢測速度快,但會造成檢測小目標時的精度下降。圖1(b)的改進是將圖片分成不同尺寸,然后進行不同尺度的預測,有效的改善了圖1(a)中的單一預測。圖1(c)是自底向上然后自頂向下的線路,橫向連接,同時融合了相鄰特征之間的信息。通過高層特征進行上采樣和淺層特征進行自頂向下的連接,而且每一層都會進行預測。其問題是它忽略了高層和淺層的聯系。所以,針對于此提出了圖1(d)的改進金字塔結構模型。該模型采用跳躍連接的方式,同時采用4倍和2倍的反卷積進行上采樣,從而得到相同的特征圖大小,有效的解決了圖1(c)的問題。改進的金字塔詳細結構如圖2所示。
圖2 改進的金字塔的細節(jié)結構Fig.2 The detailed structure of the improved pyramid
從圖2中可以清晰看到3個預測層分別來自何處。YOLO V3的融合通過catenate進行張量拼接,在進行一個Convolutional Set操作時,其結構如圖3所示。在大小為13*13和52*52的特征圖之間,采用步長為4的反卷積進行上采樣,使其不同特征層的大小一致,最后輸出檢測結果。
注意力機制[15](Attention mechanism)可以按不同的形式分類。按照注意力產生的方式可分為兩種:一種是自頂向下的注意力或者稱聚焦式注意力,還有一種是自底向上的注意力,稱為基于顯著性的注意力。若按照注意力作用的特征形式,可分為基于項的注意力和基于位置的注意力。在計算機視覺領域中,基于位置的注意力是與任務相關、作用方法直接的注意力機制,其應用比較廣泛。
1.2.1 空間注意力機制[16](Spatial Transformer Network,STN)
STN網絡模型如圖3所示。其中包含3個部分:定位網絡(Localisation network)、網格生成器(Grid generator)、采樣器(Sampler)。
圖3 STN模型結構Fig.3 STN model structure
定位網絡用來生成仿射變換的系數,其中輸入為U,輸出為θ,θ是一個可變換參數,其 維度大小根據變換類型而定。
網格生成器是根據上面生成的參數?,對輸入進行變換。從而得到原始圖像或者是經過平移、旋轉等變換的特征圖結果。
采樣器根據網格生成器得到的結果,生成一個新的輸出圖片或者特征圖V,用于下一步操作。
1.2.2 通道注意力(Channel Attention,CA)
通道注意力可以理解為讓神經網絡看什么,典型的代表是SENet[17]。卷積網絡的每一層都有很多卷積核,每個卷積核對應一個特征通道。相對于空間注意力機制,通道注意力在于分配各個卷積通道之間的資源。網絡結構如圖4所示。
圖4 SE塊Fig.4 SE block
1.3.1 網絡結構
相對YOLO V1和YOLO V2的特征提取網絡,YOLO V3的網絡結構是Darknet-53。對比同期其它的特征提取網絡擁有較好的表現。YOLO V3網絡結構如圖5所示。
從圖5中可以看出,YOLO V3的Darknet-53網絡不同于YOLO V2的Darknet-19網絡。Darknet-53網絡中連續(xù)使用1x1和3x3的卷積核,一共有53個卷積層和5個殘差塊。其中,YOLO V3通過卷積層,對輸入圖片進行了5次下采樣,最后進行了多尺度的預測,處理過程借鑒了殘差神經網絡的思想[18]。Darknet53結構單元如圖6所示。
圖5 YOLO V3網絡結構Fig.5 YOLO V3 network structure
圖6 Darknet53結構單元Fig.6 Structural unit of Darknet53
圖6(a)中,每個殘差塊由多個殘差單元組成,通過輸入兩個DBL單元進行殘差操作,構建了殘差單元。其中,DBL單元包含卷積、批歸一化和leaky relu激活函數,如圖6(b)所示。通過引入殘差單元使得網絡深度可以更深,避免梯度消失。
1.3.2 k-means維度聚類算法
通過k-means聚類算法得到更好的邊界框,對網絡來說,則能學習到準確的預測方法。所以YOLO V3繼續(xù)延用了YOLO V2的思想,采用kmeans的方式對訓練集的邊界框做聚類,找到合適的邊界框。YOLO V3在VOC和COCO數據集上聚類,邊界框的數量為9。因是對邊框做相應的聚類,所以聚類方法中的距離公式定義為:
1.3.3 檢測過程
YOLO V3是基于回歸的目標檢測,不需要預先生產感興趣區(qū)域。如圖7所示,首先輸入尺寸為416x416的圖片,經過Darknet53網絡進行特征提取,可以獲得3個不同尺寸的網格區(qū)域,其分別是13×13、26×26、52×52。經過特征金字塔,在網絡后兩個特征圖上采樣,與網絡前期相應尺寸的特征圖聚合,最后再預測輸出結果。
圖7 檢測流程圖Fig.7 Detection flow chart
通過對神經網絡中傳遞的特征通道加以不同的權重,網絡可以更加重視權重較大的通道進行參數更新。由于全局平均池化[19]不同于平均池化和最大池化,它是一種特殊的池化,通常用來聚集空間信息。它是對特征圖全局平均后輸出一個值,從而使其具有全局的感受野,使得網絡淺層也能利用全局信息。通道注意力機制的用途是通過對特征圖的各個通道之間的依賴性進行建模,從而提高對于重要特征的表征能力。
在YOLOv3的網絡結構中含有很多的殘差連接,所以在殘差塊中加入通道注意力機制,它具有擠壓(Squeeze)和激活(Excitation)兩部分操作。設輸入注意力模塊的卷積核集合為Y=[y1,y2…,yc],卷積操作為Fconv,前一層的卷積核集為X=[x1,x2…,xc],H、W、C分別為特征圖的長度、寬度、通道數。擠壓操作為Fsq,也就是全局池化過程。設輸出結果為長度為c的一維數組,具體操作公式如式(2):
然而激勵過程就是對各通道間的相關度進行建模,公式如下:
式中,F C1和F C2是全連接層,s是最終激活操作的輸出參數為向量。通過上述2個公式,在經過特征加權,可以得出最終的輸出結果為:Y+yc×sc。
相對之前的YOLO V3,由于引入了注意力機制,增加了兩個全連接層和一個全局平均池化以及特征加權,這大大的添加了算法的計算量,在速度上會比原YOLO V3低。其算法流程如圖8所示。
圖8 改進算法流程圖Fig.8 Improved algorithm flow chart
在YOLO V3中,引入了FPN網絡,將淺層的信息和高層的信息通過使用上采樣融合,從而得到3個不同尺度的特征圖,再進行檢測輸出結果。由于原YOLO V3中忽略了淺層信息和高層信息二者之間的聯系,所以本文對網絡進行了相應的改進,如圖9所示。
圖9 改進的YOLO V3檢測模型圖Fig.9 Improved YOLO V3 detection model diagram
在原YOLO V3的3個尺度檢測上,把淺層的信息和高層的信息進行反卷積。改進的具體細節(jié)是:輸入圖片經過Darknet-53得到特征圖,在輸出尺度為13x13時執(zhí)行上采樣操作,再和26x26融合,得到新的特征信息,再把融合后的信息與52x52的輸出融合。之后,對13x13做反卷積與52x52進行融合,因此實現了淺層和高層二者信息的聯系。3個尺度在經過上采樣和反卷積以及特征融合,得到了新的3組不同尺度的YOLO特征層,并使用這3組特征層進行位置和類別的預測。
實驗環(huán)境配置見表1。
表1 實驗環(huán)境配置Tab.1 Experimental environment configuration
本實驗的數據采用COCO_2014數據集,使用該數據進行預訓練得到該數據集的預測模型。數據集大約包含16萬張圖片,圖片包括了動物圖片、自然風景圖片、生活街景圖片和人物圖片等。圖片中背景都較復雜,目標數量較多,大量圖片樣本中具有多目標物體。其中用于訓練為117 263張圖片,測試集共有5 000張圖片。
在COCO 2014上對已經訓練好的網絡進行測試,分別計算了YOLO-tiny、YOLO V3和改進的YOLO V3模型的平均準確率均值(mAP),作為檢測效果評價指標。測試結果見表2。YOLO-tiny和YOLO V3模型的mAP分別是16.3%和31.1%,改進后的YOLO V3模型的平均精準度為32.4%,提升了1.3%。
表2 COCO 2014測試集中平均準確率(mAP%)測試結果Tab.2 COCO 2014 test set average accuracy rate(mAP%)test results
本文對特征金字塔融合的改進以及添加的注意力機制,使其對數據集中的小目標有了一定的提升。在80類中選擇了7類進行做對比,結果見表3。
表3 COCO 2014測試集中不同目標的平均準確率(mAP%)Tab.3 The average accuracy of different targets in the COCO 2014 test focuses(mAP%)
從表3可知,改進后的模型對目標的精準度有了相應的提高,對于cat、bird、cow、bed等目標的精準度均比原來的有所提高。其中每個小目標分別提升了5.1%、0.7%、1.4%、2.7%、3.2%、1.1%、3.3%。相對于YOLO-tiny來說,提升的較大,因為YOLOtiny簡化了網絡架構。
本文提出一種基于金字塔模型和注意力機制的YOLO V3算法,保留了多尺度檢測的特點,同時還把淺層特征圖的細節(jié)信息和高層的語義特征信息進行融合,從而提高檢測效果。外加在殘差連接中加入通道注意力機制,整個網絡能更好地篩選出有利于后續(xù)檢測的特征向量。實驗結果表明,改進后的YOLO V3在小目標和精準度上都有提高,但在速率上還不夠理想。究其原因,是在特征融合階段加入了反卷積以及對殘差網絡的改進所致。下一步的工作是繼續(xù)研究如何在保持目標精準度的情況下,減輕網絡層,降低計算量,提升檢測速度。