楊朝晨,陳佳悅,邢 可,劉夢尼,高 濤
(1.長安大學(xué) 信息工程學(xué)院,陜西 西安 710064;2.西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院,陜西 西安 710127)
隨著人工智能技術(shù)的飛速發(fā)展,目標(biāo)檢測(object detection)已成為計算機圖像處理中一個重要研究課題,在智能交通[1]、人臉識別[2]、智能圖像檢索[3]等領(lǐng)域發(fā)揮著重要作用。
傳統(tǒng)的目標(biāo)檢測算法采用窮舉策略使得模型產(chǎn)生過多冗余窗口,導(dǎo)致模型檢測速度緩慢,面對龐大數(shù)據(jù)集時過程繁瑣,且對于復(fù)雜場景泛化性能差,無法有效處理由于不同姿勢、遮擋等引起的非線性變化,在特征識別上有著難以彌補的劣勢,進而難以有效提高分類水平。
近年來,深度學(xué)習(xí)憑借其優(yōu)異的特征提取能力被廣泛應(yīng)用于目標(biāo)檢測領(lǐng)域。目前,基于深度學(xué)習(xí)的目標(biāo)檢測算法可大致分為兩類:第一類為基于候選區(qū)域的兩階段算法,如以RCNN[4]、Fast R-CNN[5]和Faster R-CNN[6]等為代表的一系列目標(biāo)檢測框架,這類算法準(zhǔn)確度較高,但速度較慢;第二類為基于端到端模型的一階段算法,典型代表有SSD[7]、YOLOv3[8]、DSSD[9]等,這類方法利用回歸思想,通過卷積網(wǎng)絡(luò)預(yù)測回歸邊框及分類概率,無需預(yù)先提取候選網(wǎng)絡(luò),直接對圖像中的目標(biāo)進行位置預(yù)測和類別判斷,較二階段算法準(zhǔn)確度略低,但檢測速度更快,實時性更高。
然而在實際情況中,圖像中的小目標(biāo)分辨率低,圖像模糊,攜帶信息較少,使得其特征表達能力弱,算法對小目標(biāo)的檢測不敏感,誤檢率或漏檢率較高。針對以上問題,一些學(xué)者對普通目標(biāo)檢測算法做出了改進。鄭浦等[10]采用多尺度特征融合的方式,增強淺層特征表達能力對小目標(biāo)進行檢測。劉順民等[11]使用特征金字塔替代多尺度特征層,充分融合了底層和高層的信息。趙文清等[12]通過將改進的分段比例懲罰因子NMS算法和連續(xù)比例懲罰因子NMS算法相結(jié)合以提高檢測性能。馬躍等[13]設(shè)計了一種融合結(jié)構(gòu)用以豐富特征圖細節(jié)信息和語義信息。
上述研究均使用完整特征圖作為特征輸入,然而在實際分類任務(wù)中,并非所有特征對特征識別的作用程度都是相同的。因此,針對算法對小目標(biāo)敏感性較低的問題,該文提出了一種改進的DSSD算法,引入注意力機制突出局部重點區(qū)域,在通道維度上增加權(quán)重分量進行加權(quán)求和表示信息相關(guān)度,并將圖片中的空間域信息做對應(yīng)空間變換,有利于前景小目標(biāo)的特征學(xué)習(xí)。
SSD(single shot multibox detector)模型是一種基于回歸的高精度、強實時性的目標(biāo)檢測算法,其主要設(shè)計思想是利用不同尺度的特征圖進行目標(biāo)的檢測和識別。網(wǎng)絡(luò)框架分為基礎(chǔ)網(wǎng)絡(luò)和附加網(wǎng)絡(luò)兩部分?;A(chǔ)網(wǎng)絡(luò)使用改進的VGG16網(wǎng)絡(luò)進行特征提取,附加網(wǎng)絡(luò)新增四層級聯(lián)卷積層以獲得高維特征圖用于目標(biāo)檢測。在網(wǎng)絡(luò)模型進行訓(xùn)練時,預(yù)測框會以先驗框為基準(zhǔn),通過softmax分類和邊界回歸來獲得真實目標(biāo)的位置,多尺度特征圖共同參與目標(biāo)檢測有利于提升目標(biāo)檢測的精確度。
SSD模型檢測速度較快,對大目標(biāo)檢測精度較高,但對小目標(biāo)不敏感,漏檢或誤檢率較高。DSSD模型此基礎(chǔ)上進行了改進,主要是采用ResNet101代替VGG16作為主干網(wǎng)絡(luò),其中ResNet101的Conv3_x卷積層與其后4層級聯(lián)卷積層共同構(gòu)成DSSD模型的特征層;特征層與5層反卷積層共同構(gòu)成反卷積模塊以擴大模型在小尺度上的高層特征信息,有效改善了小目標(biāo)的檢測能力;并引入預(yù)測模塊提升檢測精度,DSSD模型結(jié)構(gòu)如圖1所示。
圖1 DSSD模型結(jié)構(gòu)
1.2.1 反卷積模塊
為了得到更多的檢測信息,DSSD模型引入反卷積層組成反卷積模塊,反卷積模塊結(jié)構(gòu)如圖2所示。
DM模塊里的需要反卷積的高層特征圖(圖中以A表示)、SSD的卷積低層特征圖(圖中以B表示)和最后得到的融合后的卷積圖(圖中以C表示)與DSSD的沙漏結(jié)構(gòu)中的對應(yīng)位置如圖所示。融合后的特征圖C送入預(yù)測模塊中,作為下一級DM模塊要反卷積的特征圖再進行下一級的DM模塊操作。至于2 H和2 W經(jīng)過一系列的padding=1,stride=1的3*3卷積后仍保持2 H*2 W的特征圖尺寸。
圖2 反卷積模塊結(jié)構(gòu)
1.2.2 預(yù)測模塊
DSSD模型在特征層和反卷積模塊之間又加入了預(yù)測模塊,該模塊在SSD預(yù)測模塊的基礎(chǔ)上增加了一個殘差學(xué)習(xí)單元,進一步提高模型的精確度。預(yù)測模塊結(jié)構(gòu)如圖3所示。
圖3 反卷積模塊結(jié)構(gòu)
雖然DSSD模型的預(yù)測模塊提取更深維度的特征用于分類和回歸,網(wǎng)絡(luò)整體構(gòu)成不對稱的“沙漏”結(jié)構(gòu),充分利用了上下文信息和層的特征,從而在小目標(biāo)和密集目標(biāo)的檢測率上有很大的提高。但上述均使用完整特征圖作為特征輸入,然而在實際分類任務(wù)中,并非所有特征對特征識別的作用程度都是相同的。因此,為了突出對特征識別有效的信息并抑制作用小或無效的信息,一些研究引入了注意力機制。
CBAM(convolutional block attention module)[14]是一種簡單有效的混合注意力模塊。通過將注意力過程分為兩個獨立的部分,通道注意力模塊和空間注意力模塊,沿著空間和通道兩個維度依次推斷出注意力權(quán)重,然后與原特征圖相乘來對特征進行自適應(yīng)調(diào)整,其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 CBAM模型結(jié)構(gòu)
為了匯總空間特征,通道注意力模塊采用了全局平均池化和最大池化兩種方式來分別利用不同的信息。輸入是一個H×W×C的特征F,先分別進行一個空間的全局平均池化和最大池化得到兩個1×1×C的通道描述。接著將它們分別送入一個兩層的神經(jīng)網(wǎng)絡(luò),第一層神經(jīng)元個數(shù)為C/r,激活函數(shù)為Relu,第二層神經(jīng)元個數(shù)為C。這個兩層的神經(jīng)網(wǎng)絡(luò)是共享的。然后,再將得到的兩個特征相加后經(jīng)過Sigmoid激活函數(shù)得到權(quán)重系數(shù)Mc。最后,拿權(quán)重系數(shù)和原來的特征F相乘即可得到縮放后的新特征。
在通道注意力模塊之后再引入空間注意力模塊,給定一個H×W×C的特征F,分別進行一個通道維度的平均池化和最大池化得到兩個H×W×1的通道描述,并將這兩個描述按照通道拼接在一起。然后經(jīng)過一個7×7的卷積層,激活函數(shù)為Sigmoid,得到權(quán)重系數(shù)Ms。最后,拿權(quán)重系數(shù)和特征F相乘即可得到縮放后的新特征。
本實驗采用優(yōu)化后的DSSD模型,引入CBAM混合注意力機制,在保證檢測速度的同時,提高了檢測精度,改進的模型結(jié)構(gòu)如圖5所示。
圖5 改進的DSSD模型結(jié)構(gòu)
在圖5中,反卷積模塊中各卷積層既具有良好的淺層特征表征能力,又具有深層特征語義信息,故在反卷積模塊引入CBAM注意力機制。由于CBAM模塊屬于輕量級模塊,不會帶來大量復(fù)雜參數(shù),故對改進的DSSD模型檢測速度基本沒有影響,且一定程度上提高了網(wǎng)絡(luò)整體檢測精度和對小目標(biāo)的檢測精度。
實驗使用的深度學(xué)習(xí)框架為pytorch,計算機操作系統(tǒng)為Ubuntu16.04,顯卡型號為NVIDIA Quadro P5000。
采用平均精度(average precision,AP)和平均精度均值(mean average precision,mAP)作為模型檢測性能的評價指標(biāo),其計算過程如下:按照目標(biāo)檢測模型預(yù)測結(jié)果對樣本進行排序,針對逐個樣本將置信度作為劃分正負樣本的閾值,計算查準(zhǔn)率(Precision)和召回率(Recall),繪制P-R(Precision and Recall)曲線,將PR曲線上召回率相同的點記為一組,共分為n組,AP的計算公式如下:
(1)
其中,Pi表示第i組的最大精度值,N表示該類別在測試集中的所有實例個數(shù)。
最后計算各個類別AP值的均值即為mAP。AP和mAP越高,目標(biāo)檢測模型的性能越好。
實驗采取2個通用數(shù)據(jù)集,分別為PASCAL VOC2007和PASCAL VOC2012數(shù)據(jù)集。PASCAL VOC[15]數(shù)據(jù)集是一個包含Person、Bird、Cat、Cow、Dog、Horse、Sheep、Aero-plane、Bicycle、Boat、Bus、Car、Motorbike、Train、Bottle Chair、Table、Plant、Sofa、Monitor等20個類別物體的目標(biāo)檢測數(shù)據(jù)集。該文使用PASCAL VOC2007和PASCAL VOC2012的trainval部分共16 551張圖片作為訓(xùn)練集,使用PASCAL VOC2007的test部分作為測試集。
通過一系列的調(diào)參實驗后總結(jié)出了最適合該模型訓(xùn)練的相關(guān)網(wǎng)絡(luò)超參數(shù),具體如下:訓(xùn)練模型過程中采用Momentum優(yōu)化算法,動量衰減項為0.9,權(quán)重衰減因子設(shè)定為0.000 1,步長設(shè)定為120 000,batch size為16。學(xué)習(xí)率為動態(tài)的即初始學(xué)習(xí)率為0.001,前500步學(xué)習(xí)率為0.000 1,500步后學(xué)習(xí)率為0.001,80 000步后學(xué)習(xí)率下降為原來的0.1倍,調(diào)整至0.000 1,100 000步后學(xué)習(xí)率調(diào)整為0.000 01。當(dāng)模型構(gòu)建完成及參數(shù)確定后進行MFF-SSD網(wǎng)絡(luò)模型的訓(xùn)練,網(wǎng)絡(luò)模型訓(xùn)練的全過程被記錄在圖6中。
圖6 模型訓(xùn)練損失值
由圖6可知:損失值在前5 000步迅速下降;5 000至21 000左右時損失值逐漸趨于穩(wěn)定狀態(tài);21 000步后損失值趨于穩(wěn)定。
利用訓(xùn)練好的網(wǎng)絡(luò)對測試集進行檢測,網(wǎng)絡(luò)對VOC2007 test部分的檢測精度如表1所示。可以看出所提算法對每個類別的識別精度都有一定程度的提升。
表1 不同算法各個類別目標(biāo)檢測精度對比結(jié)果 %
表2是不同模型在VOC2007數(shù)據(jù)集上的實驗結(jié)果,對比DSSD和所提方法的實驗結(jié)果可知,在平均檢測時間略微提升的情況下,所提方法得到了比DSSD更優(yōu)的實驗精度,證明了算法的有效性。
表2 VOC2007測試集上測試結(jié)果
針對當(dāng)前DSSD模型沒有考慮小目標(biāo)特點及特征圖通道和空間之間的關(guān)系的問題,通過引入CBAM混合注意力模塊,設(shè)計了一個針對小目標(biāo)檢測任務(wù)的改進DSSD模型。相比于原DSSD模型,設(shè)計的新目標(biāo)檢測模型在實驗精度提升1.3%情況下,基本沒有增加模型的參數(shù)量,檢測速度無明顯降低。實驗的訓(xùn)練和推理過程仍舊是在高性能計算機上進行,下一步將考慮將檢測模型進一步簡化,在保證精度的同時降低檢測速度。