毛世昕,李捍東
(貴州大學電氣工程學院,貴陽550025)
隨著計算機技術的不斷提高,人工智能技術的硬件需求得到了保障,以深度學習為核心的人工智能技術近年間得以飛速發(fā)展,其中目標檢測技術是計算機視覺及圖像處理領域的一個熱門研究主題。傳統(tǒng)目標檢測對輸入圖像使用滑動窗口來選取候選框,這樣選取候選框?qū)е麓翱谌哂?,提取特征的方式泛化性能差,檢測精度因此降低;提取步驟的繁雜也導致檢測速度慢,不具備實時性?;谏疃染矸e神經(jīng)網(wǎng)絡的目標檢測算法改善了目標檢測算法精度、速度、實時性等性能指標,相關研究也不斷涌現(xiàn),包括:Grishick等人提出了基于卷積神經(jīng)網(wǎng)絡的Fast R-CNN[1];蔡兆偉等人提出了一種級聯(lián)的檢測網(wǎng)絡Cascade R-CNN[2]。但這兩種是兩階段的目標檢測算法,需要生成候選區(qū)域才能進行目標檢測,極大限制了檢測速度,時效性無法得到保證。R edmon等人提出的YOLO網(wǎng)絡[3]和劉偉等人提出的SSD網(wǎng)絡[4],則是單階段的目標檢測算法,將候選區(qū)域省略掉,對整個網(wǎng)絡進行反向傳播迭代優(yōu)化,使檢測效率大大提升,且首次將不同維度的特征圖信息進行疊加進一步改善檢測精度和速度,但是對小目標的檢測精度不高。之后,比SSD所使用的VGG-16有著更高識別精度的基礎神經(jīng)網(wǎng)絡ResNet[5]被提出,汪慧蘭等利用殘差結構組成的預測模塊代替3×3的卷積提高小目標檢測精度[6]。利用反卷積模塊改進的DSSD[7]也被提出,但精度提高有限而網(wǎng)絡過深,導致訓練參數(shù)量大,速度不高。最新研究還包括基于空間域和通道域的注意力機制CBAM[8]。胡少暉等也在步態(tài)識別領域嘗試添加了CBAM注意力機制[9]。
基于上述已有研究,在此提出一種改進的SSD目標檢測算法,將SSD中的基礎網(wǎng)絡VGG-16替換成Res N et-50網(wǎng)絡,選擇合適的殘差塊作為淺層輸入特征,利用殘差網(wǎng)絡深度加深精度不退化的優(yōu)勢,提高SSD的檢測精度;同時也在Res N et-50網(wǎng)絡中添加注意力機制CBAM,結合空間域和通道域的注意力,以求獲得更高的檢測精度。
SSD是一種基于回歸的單階段目標檢測網(wǎng)絡,原始SSD的結構如圖1所示。它首先將圖片的大小處理成300×300的格式,然后運用VGG-16的部分基礎網(wǎng)絡對原始圖片進行特征信息的提取,通過非極大抑制處理(NMS)最后得到目標檢測結果。
圖1 原始SSD網(wǎng)絡
圖中左側為提取特征層之間所經(jīng)過的卷積層的大小和深度,s1和s2代表這一層所使用的的步距分別為1和2;右側為提取特征層的名稱以及輸出特征的大小和深度。
SSD通過這種多層卷積輸出特征圖進行檢測的方式,在淺層中小目標類別和位置的信息沒有完全丟失,對淺層信息的融合使得最后的檢測結果能夠反映原始圖片中小目標的類別和位置。深層卷積輸出的特征圖保留了原始圖中的大目標的類別和位置信息,其精度比傳統(tǒng)的YOLO以及Faster R-CNN有明顯的改進。
對于SSD目標檢測算法,損失函數(shù)分為類別損失和位置損失兩部分,總的損失函數(shù)如下式:
其中,L代表總的損失函數(shù);Lconf和Lloc分別是種類置信度損失函數(shù)和位置信息損失函數(shù);N代表預測框的數(shù)量。Lconf和Lloc的計算公式為:
式中,cx、cy、w、h分別表示預測框的中心坐標以及寬度、高度;lim代表第i個正樣本的回歸參數(shù);g^im代表第i個正樣本對應的真實框的回歸參數(shù);xijk={0,1};c^ip代表第i個預測框?qū)N類是p的置信度。
ResNet達到超深層次的網(wǎng)絡結構靠的是不斷堆疊殘差塊,同時通過批標準化(Batch Normalization)來代替以往的drop out方式,防止梯度爆炸或梯度消失,同時也能加速模型的收斂過程。ResNet-50作為ResNet的一種,它的基本結構如表1所示。
表1 ResNet-50基本結構
ResNet網(wǎng)絡通過直接將輸入信息繞道傳到輸出,保護信息的完整性。殘差網(wǎng)絡通過不斷疊加輸入和輸出讓網(wǎng)絡的訓練更加容易收斂,使網(wǎng)絡加深而不會出現(xiàn)退化現(xiàn)象。
基于上述原理與思路對基礎網(wǎng)絡做出改進。改進的網(wǎng)絡結構如圖2所示。
CBAM作為一種輕量的注意力機制模塊,能夠獲得比SENet更好的效果。CBAM分為通道(channel)和空間(spatial)兩個部分,通過將輸入特征和經(jīng)過注意力機制通道特征圖相乘,提高特征提取能力。CBAM模塊原理圖如圖3所示。
圖2 基于ResNet-50的SSD網(wǎng)絡
圖3 CBAM模塊工作原理
特征的每一個通道都代表著一個專門的檢測器,為了匯總空間特征,CBAM采用了全局平均池化和最大池化兩種方式來分別利用不同的信息。通道注意力模塊原理圖如圖4所示。
圖4 通道注意力模塊工作原理
它的輸入是一個H×W×C的特征矩陣F,先分別進行一個空間的全局平均池化和最大池化,得到兩個特征圖,然后通過共享多層感知機。第一層神經(jīng)元個數(shù)為C/r(r為減少率),激活函數(shù)為Relu;第二層神經(jīng)元個數(shù)為C,相加得到兩個特征后,通過激活函數(shù)Sigmoid得到系數(shù)Mc。拿Mc和原來的F相乘得到縮放后的新特征F′。
在此引入空間注意力模塊,原理如圖5所示。將通道域模塊輸出特征圖作為輸入,先進行基于通道的全局最大池化和平均池化,再做通道拼接,通過卷積層降維,再用激活函數(shù)Sigmoid得到空間注意力系數(shù)Ms,將Ms與輸入特征相乘得到最終特征圖。
將注意力模塊添加到ResNet-50的每一個殘差塊的輸出卷積層的后面,疊加之后再使用激活函數(shù)relu,形成新的殘差結構,如圖6所示。
實驗采用的數(shù)據(jù)集是PASCAL組織使用的PASCAL-VOC以及由德國卡爾斯魯厄理工學院和豐田美國技術研究院聯(lián)合創(chuàng)辦的KITTI數(shù)據(jù)集。
PASCAL-VOC數(shù)據(jù)集包括VOC2007和VOC 2012兩個版本。VOC2007包含9963幅標注好的圖片,VOC2012包含11530幅圖片,分成訓練集合測試集兩部分。在實驗中,將這兩個版本訓練集和驗證集拿來聯(lián)合訓練得到新模型的預訓練權重。
通過遷移學習,使用由PASCAL-VOC數(shù)據(jù)集訓練出來的預訓練權重來訓練交通數(shù)據(jù)集KITTI,其中包含7481張圖片,按照9:1的比例分為訓練集和測試集進行訓練和檢測。
在目標檢測領域常用的評價指標為mAP值。mAP值是所有種類的AP值得平均值,是目標檢測網(wǎng)絡性能的主要指標。mAP的計算公式為:
式中,P代表精度,R代表召回率,TP表示正樣本被預測為正樣本的個數(shù),F(xiàn)P表示負樣本被預測為正樣本的個數(shù),F(xiàn)N表示負樣本被預測為負樣本的個數(shù)。通過P和R來畫出P-R曲線圖,P-R曲線下方覆蓋的面積為所有種類的AP,對其取平均值即得到mAP值。
實驗選取GPU為NVIDIA GeForceGTX1080Ti;編程語言選用Python3.7,框架為Pytorch1.6,CUDA版本為9.0。初始學習率設為0.001,優(yōu)化算法選取SGD,Batchsize設為32。
先訓練PASCAL-VOC數(shù)據(jù)集,再訓練KITTI數(shù)據(jù)集。由于圖片標注格式在兩種數(shù)據(jù)集中并不一致,先把圖片統(tǒng)一轉(zhuǎn)換為JPG格式。為便于訓練,將Truck、Van歸為Car類,其中的Person_sitting類歸為Pedestrian類??紤]到Cyclist類和Pedestrian類的標簽大小差別較大,所以單獨作為一類,忽略掉Tram、Don′t care以及Misc類。提取標簽中種類和位置信息按照PASCAL-VOC數(shù)據(jù)集的標注格式進行處理,得到用于訓練的標注XML文件。
通過訓練,并逐步降低學習率,最終訓練損失穩(wěn)定在1.6左右。
基于改進的模型進行實驗后,將得到的算法檢測精度結果與Faster R-CNN、DSSD321、YOLOv3的進行對比。對比結果如表2所示。
表2 各算法檢測精度對比表單位:%
由表中可見,改進SSD網(wǎng)絡結構算法的mAP達到了62.0%,比Faster R-CNN的高了12.4%,比DSSD的好了4.7%,比YOLOv3的高了3.3%,與當前主流目標檢測網(wǎng)絡相比,仍有更優(yōu)良的平均精度。
再將改進點依次添加到原始的SSD中,通過改好的KITTI數(shù)據(jù)集對模型進行訓練,實驗最終結果如表3所示。
表3 改進點添加對aMP的提升效果單位:%
通過上述實驗結果可以得出,對基礎網(wǎng)絡的修改使得網(wǎng)絡在交通行人及其車輛檢測整體的精度上有了1.7%的提升;CBAM的添加使得精度再提升了2.5%。不同改進點對各類檢測精度影響情況如圖7所示。
圖7 不同改進點對檢測精度的影響
從圖中可以看出CBAM對小目標類的檢測精度較大目標改善明顯,CBAM和ResNet的引入提高了整體模型的精度。將不同改進度算法應用到具體圖像中,得到的實際檢測效果如圖8所示。
利用殘差網(wǎng)絡ResNet-50對原來的基礎網(wǎng)絡VGG-16進行替代,再在殘差模塊中添加注意力機制CBAM,確實可對小目標檢測效果做出實際性的改善。改進算法中的相關嘗試在實際應用中尚有更廣的發(fā)展?jié)摿?。改進后的算法在KITTI數(shù)據(jù)集上的檢測結果顯示其能夠達到更高的精度,但實際網(wǎng)絡結構參數(shù)龐大,后續(xù)研究中將嘗試通過網(wǎng)絡剪枝的方式來降低訓練參數(shù)的數(shù)量,提高運算速度。