武德彬, 劉笑楠, 劉振宇, 洪 軍
(沈陽(yáng)工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院, 遼寧 沈陽(yáng) 110870)
近年來(lái),隨著深度學(xué)習(xí)的快速發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)技術(shù)日益成熟并應(yīng)用在實(shí)際場(chǎng)景中。主要可以分為以 Single Shot MultiBox Detector(SSD)[1],YOLO[2-3]系列為代表的一階段目標(biāo)檢測(cè)和以Faster R-CNN[4]為代表的二階段目標(biāo)檢測(cè)算法。 其中,SSD 算法盡管可以生成多尺度特征,但是整個(gè)單向卷積的過(guò)程造成每種尺度缺乏相應(yīng)的語(yǔ)義特征信息,從而導(dǎo)致傳統(tǒng)SSD 算法對(duì)于普通的目標(biāo)檢測(cè)以及小目標(biāo)檢測(cè)效果都不理想,故許多研究者針對(duì)SSD 算法存在的問(wèn)題提出了改進(jìn)。
針對(duì)傳統(tǒng)SSD 算法未充分利用各特征層之間關(guān)系的問(wèn)題,Li 等[5]提出了利用多尺度特征融合的手段增強(qiáng)了SSD 算法淺層特征層之間的聯(lián)系,從而提高SSD 算法對(duì)目標(biāo)的檢測(cè)能力。 Fu 等[6]使用ResNet-101 網(wǎng)絡(luò)作為主干網(wǎng)絡(luò)并結(jié)合轉(zhuǎn)置卷積進(jìn)行特征融合,以提高檢測(cè)目標(biāo)的準(zhǔn)確率。 通過(guò)利用特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,FPN)[7]進(jìn)行多尺度特征融合,吳鵬飛等[8]提出了一種高準(zhǔn)確率的改進(jìn)SSD 算法。 為了不引入大量參數(shù)和過(guò)多計(jì)算量,葉召元等[9]提出了一種高效特征融合方式改進(jìn)傳統(tǒng)SSD 算法。 此外,也有研究者使用注意力機(jī)制加強(qiáng)關(guān)鍵信息的權(quán)重,從而增強(qiáng)目標(biāo)檢測(cè)能力。許光宇等[10]通過(guò)在深層網(wǎng)絡(luò)層引入空間通道注意力機(jī)制增強(qiáng)了深層特征層的語(yǔ)義信息,進(jìn)一步提高獲取目標(biāo)細(xì)節(jié)與空間位置信息的能力。 而李本高等[11]采取融合特征金字塔和殘差注意力機(jī)制的方式,提高特征圖的表征能力,充分利用上下文信息以提高對(duì)目標(biāo)特征信息的提取能力。 李琳等[12]、李杰等[13]以及劉笑楠等[14]使用改進(jìn)的特征融合方式,以提高算法檢測(cè)能力。
雖然上述方法在一定程度上解決了傳統(tǒng)SSD 算法目標(biāo)檢測(cè)效果不夠好的問(wèn)題,但是最深層特征層已經(jīng)具備充足的語(yǔ)義信息,而將最深層特征層的語(yǔ)義信息進(jìn)行上采樣與淺層特征層特征信息進(jìn)行融合會(huì)造成特征信息模糊的問(wèn)題,從而導(dǎo)致檢測(cè)效果提升不顯著的情況。 故根據(jù)上述問(wèn)題,本文提出了一種Dual Attention Single Shot MultiBox Detector(DA-SSD)算法,引入一種新的融合策略——并行殘差特征金字塔網(wǎng)絡(luò)(Parallel Residual Feature Pyramid Network,PRFPN),通過(guò)使用這種融合策略對(duì)淺層特征層進(jìn)行淺層語(yǔ)義信息增強(qiáng)。 此外,還提出了一種雙重注意力機(jī)制(Dual Attention Mechanism,DAM),將通道注意力機(jī)制與空間注意力機(jī)制混合使用,從而加強(qiáng)算法對(duì)目標(biāo)關(guān)鍵特征信息及空間位置信息的獲取,進(jìn)一步加強(qiáng)了改進(jìn)算法對(duì)目標(biāo)的檢測(cè)效果。
傳統(tǒng)SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,以VGG16作為主干特征提取網(wǎng)絡(luò),在將其Fc6 和Fc7 兩個(gè)特征層替換為卷積層之后,繼續(xù)添加4 個(gè)卷積層Conv8_2,Conv9_2,Conv10_2 和Conv11_2,加 上VGG16 中的Conv4_3 共7 個(gè)不同尺度的特征圖。然后將除Fc6 層外的6 個(gè)特征層進(jìn)行多尺度特征檢測(cè),在生成一定數(shù)量的先驗(yàn)框之后通過(guò)使用非極大值抑制篩選符合要求的預(yù)測(cè)框,最終得到目標(biāo)預(yù)測(cè)框和類(lèi)別信息。
圖1 SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 SSD algorithm network structure
原始SSD 算法淺層特征層包含大量空間位置信息,但是缺乏特征語(yǔ)義信息,而深層特征層經(jīng)過(guò)大量卷積后包含豐富的語(yǔ)義信息,但由于SSD 算法檢測(cè)過(guò)程是單向的,故淺層特征層對(duì)目標(biāo)檢測(cè)效果不夠好。 而本文提出的DA-SSD 模型可以有效解決上述問(wèn)題,其結(jié)構(gòu)如圖2 所示。
圖2 DA-SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 DA-SSD algorithm network structure
在原始SSD 算法的基礎(chǔ)上,首先將特征圖輸入大小設(shè)為300 pixel×300 pixel,并分為38×38,19×19,10×10,5×5,3×3,1×1 共6 個(gè)尺度的特征層。 其次,為了避免深層特征信息在上采樣過(guò)程中造成信息損失,將Conv4_3,Fc7,Conv8_2 三個(gè)特征層輸入到PR-FPN 多尺度特征提取網(wǎng)絡(luò)中,通過(guò)建立中間層與淺層特征層不同尺度的特征信息關(guān)系,在保留深層與中間層語(yǔ)義信息的同時(shí),增強(qiáng)了淺層特征層對(duì)目標(biāo)的檢測(cè)能力。 然后,為了進(jìn)一步增強(qiáng)淺層特征層對(duì)語(yǔ)義信息的獲取,以及深層特征層的語(yǔ)義信息和空間位置信息,在6 個(gè)特征層后使用DAM 注意力機(jī)制加強(qiáng)每個(gè)特征層對(duì)關(guān)鍵信息的學(xué)習(xí)。 最后,輸出多尺度特征圖到檢測(cè)器中,經(jīng)過(guò)非極大值抑制獲得最終的預(yù)測(cè)框以及類(lèi)別信息。
對(duì)比原SSD 算法,添加了PR-FPN 多尺度特征融合網(wǎng)絡(luò),結(jié)構(gòu)如圖3 所示。 首先,將Conv4_3,Fc7,Conv8_2 三個(gè)特征層分別進(jìn)行3×3 卷積進(jìn)行多尺度特征提取。 其次,將卷積后的Conv8_2 特征圖進(jìn)行2 次雙線性插值上采樣和3×3 卷積,并與卷積后的Conv4_3 和Fc7 特征圖進(jìn)行Concat 特征通道拼接,構(gòu)成多尺度特征融合。 然后,將融合后的特征圖構(gòu)成一個(gè)自下向上的Concat 拼接路徑,旨在加強(qiáng)中間層的上下文信息。 通過(guò)將在Conv8_2 層融合的新特征圖直接再與Conv4_3 層構(gòu)成Add 直連結(jié)構(gòu),進(jìn)一步加強(qiáng)淺層特征層的語(yǔ)義信息,并生成3 個(gè)新特征圖。 接著,為了增強(qiáng)多尺度特征融合的語(yǔ)義信息,將最初經(jīng)過(guò)3×3 卷積的Conv4_3,Fc7,Conv8_2 特征圖與3 個(gè)新特征圖構(gòu)成Add 殘差直連結(jié)構(gòu)。 最后,將3 個(gè)通過(guò)Add 后的新特征圖進(jìn)行1×1 卷積平滑特征,生成最終的3 個(gè)新特征圖。
圖3 PR-FPN 結(jié)構(gòu)Fig.3 PR-FPN structure
為了進(jìn)一步加強(qiáng)淺層特征層的特征語(yǔ)義信息、中間層的全局上下文語(yǔ)義信息以及深層特征層對(duì)細(xì)節(jié)信息的獲取,使用一種雙重注意力機(jī)制DAM 增強(qiáng)對(duì)上述信息的學(xué)習(xí),具體結(jié)構(gòu)如圖4 所示。
圖4 DAM 雙重注意力機(jī)制結(jié)構(gòu)Fig.4 DAM Structure with dual attention mechanism
該結(jié)構(gòu)分為3 條注意力分支,其中2 條為通道注意力,一條為空間注意力的分支。 在圖4 上方的通道注意力分支中,首先,將原特征圖x進(jìn)行全局平均池化(AvgPool)提取全局語(yǔ)義信息并把通道中的特征大小壓縮為[1,1],得到Sa。 其次,通過(guò)使用2 個(gè)全連接層建立通道間的關(guān)系,生成一個(gè)權(quán)重值[1,1,c],得到Sf。 最后,將生成的權(quán)重值歸一化并加權(quán)到原始特征圖的每一個(gè)通道的特征上,即原始特征圖乘以權(quán)重值得到Sc,從而生成對(duì)關(guān)鍵語(yǔ)義信息加權(quán)的新特征圖。 表達(dá)式如下:
在中間的通道注意力分支中,首先,將原特征圖x分別進(jìn)行全局最大池化(MaxPool)和AvgPool,目的是進(jìn)行維度的壓縮并獲取全局語(yǔ)義信息。 然后,將特征輸入到多層感知機(jī)MLP 中,分別得到通道特征信息Mmax和Mavg。 接著,將2 種池化后的特征參數(shù)相加并經(jīng)過(guò)Sigmoid 激活函數(shù)歸一化,得到一個(gè)特征信息權(quán)重M。 最后,將得到的權(quán)重與原特征圖進(jìn)行加權(quán)相乘,提高關(guān)鍵語(yǔ)義信息的權(quán)重Mc。 整個(gè)過(guò)程可表達(dá)為:
而下方的空間注意力則是先將原特征圖x分別經(jīng)過(guò)MaxPool 和AvgPool,并進(jìn)行Concat 特征通道拼接,旨在從通道維度對(duì)特征圖進(jìn)行空間上的處理,獲取空間位置信息,得到特征圖M。 然后,通過(guò)卷積融合特征信息并使用Sigmoid 激活函數(shù)對(duì)空間域的權(quán)重歸一化。 最后,將空間域權(quán)重與原特征圖相乘得到新特征圖Ms:
然后,將得到的2 個(gè)新特征圖Mc和Ms加權(quán)相加,再與上方的通道注意力分支得到的新特征圖Sc加權(quán)相加并使用LeakyReLU 激活函數(shù)加快訓(xùn)練收斂速度,該函數(shù)相比ReLU 函數(shù)可以保存更多的特征信息。 最終得到經(jīng)過(guò)DAM 雙重注意力機(jī)制的新特征圖。
本文實(shí)驗(yàn)所使用的實(shí)驗(yàn)環(huán)境為:顯卡為NVIDIA GeForce RTX3060,顯存為12 GB,編譯環(huán)境為python3.8,所使用的框架為pytorch1.8.0。
算法使用的實(shí)驗(yàn)數(shù)據(jù)集為官方發(fā)布的PASCAL VOC2007 和PASCAL VOC2012 數(shù)據(jù)集,共涵蓋飛機(jī)、自行車(chē)、鳥(niǎo)、船、瓶子、公交車(chē)、小轎車(chē)、貓、椅子、牛、餐桌、狗、馬、摩托車(chē)、人、植物、羊、沙發(fā)、火車(chē)和電視這20 個(gè)類(lèi)別。 訓(xùn)練所采用2 個(gè)數(shù)據(jù)集的trainval 部分,共16 551 張圖片,并在PASCAL VOC 2007test 數(shù)據(jù)集4 952 張圖片上進(jìn)行測(cè)試。
實(shí)驗(yàn)采用平均精度均值(mean Average Precision,mAP)評(píng)價(jià)檢測(cè)精度和單類(lèi)別平均檢測(cè)精度(Aerage Precision,AP)作為評(píng)價(jià)指標(biāo):
式中,P為不同閾值下的檢測(cè)精度;r為閾值大小;N為類(lèi)別總數(shù)量。
實(shí)驗(yàn)采用SGD 優(yōu)化器進(jìn)行訓(xùn)練,batch size 設(shè)為16,訓(xùn)練116 個(gè)周期共迭代120 000 次。 將初始學(xué)習(xí)率設(shè)為0.001,權(quán)重衰減參數(shù)設(shè)為0.000 5。 學(xué)習(xí)率在第80 000 次下降為0.000 1,在100 000 次下降為0.000 01。 DA-SSD 算法與SSD 算法訓(xùn)練損失曲線如圖5 所示,可以發(fā)現(xiàn)DA-SSD 損失值不但低于原始SSD 算法,并且收斂速度快于原始SSD 算法。
圖5 損失函數(shù)曲線Fig.5 Loss function curve
本文算法DA-SSD 與一些主流算法的性能比較如表1 所示,輸入為300 pixel×300 pixel。 可以發(fā)現(xiàn)DA-SSD 算法檢測(cè)精度達(dá)到了79. 0%,超過(guò)表中其余所示算法。 相較于兩階段目標(biāo)檢測(cè)算法Faster R-CNN[4]在VGG16 和ResNet-101 兩種不同主干網(wǎng)絡(luò)下的檢測(cè)精度遠(yuǎn)遠(yuǎn)領(lǐng)先。 同時(shí)也遠(yuǎn)超過(guò)單階段目標(biāo)檢測(cè)算法YOLOv1[2]和YOLOv2[3]的檢測(cè)精度。對(duì)比原始SSD[1]算法,DA-SSD 算法檢測(cè)精度提高1.8%。 此外,DA-SSD 算法檢測(cè)也超過(guò)了大部分SSD 改進(jìn)算法。 其中,雖然DSSD 算法[6]采用Res-Net-101 深層網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),但是網(wǎng)絡(luò)越深特征信息也會(huì)有一定損失。 而FSSD[5],RSSD[13]和文獻(xiàn)[9]以及文獻(xiàn)[15]盡管采用了不同的特征融合策略,但是根據(jù)實(shí)驗(yàn)結(jié)果進(jìn)一步證明了本文算法特征融合策略的有效性。 文獻(xiàn)[10]雖然采用了一種空間通道注意力機(jī)制,但是仍未考慮各特征層之間的上下文信息聯(lián)系,而DA-SSD 算法在引入DAM 雙重注意力機(jī)制的同時(shí),使用PR-FPN 增強(qiáng)特征層之間的聯(lián)系,故本文算法檢測(cè)效果優(yōu)于該文獻(xiàn)提出的算法。 文獻(xiàn)[11]雖然采用了殘差注意力和融合模塊,但是本文算法檢測(cè)能力更強(qiáng)。
表1 在PASCAL VOC2007 測(cè)試集本文方法與其他方法對(duì)比Tab.1 Comparison of this method with other methods on PASCAL VOC2007 test set
為驗(yàn)證PR-FPN 多尺度特征融合網(wǎng)絡(luò)的有效性,本文將該方法與FPN,PANet 以及文獻(xiàn)[16-17]中的MFFM 多尺度融合策略進(jìn)行實(shí)驗(yàn)對(duì)比,如表2所示。 可以看出相較于表中算法,PR-FPN 多尺度特征融合網(wǎng)絡(luò)的檢測(cè)性能最好。
表2 不同特征融合網(wǎng)絡(luò)算法檢測(cè)性能對(duì)比Tab.2 Comparison of detection performance of different feature fusion network algorithms 單位:%
本文還進(jìn)行了消融實(shí)驗(yàn),證明PR-FPN 多尺度特征提取網(wǎng)絡(luò)和DAM 雙重注意力機(jī)制的有效性,如表3 所示。 首先,在使用PR-FPN 多尺度特征提取網(wǎng)絡(luò)增強(qiáng)淺層語(yǔ)義信息特征提取能力后,檢測(cè)精度較原始SSD 算法提高了1. 8%。 然后,為了增強(qiáng)6 個(gè)特征層對(duì)通道語(yǔ)義信息和空間位置信息獲取的能力,在此基礎(chǔ)上添加DAM 雙重注意力機(jī)制,檢測(cè)精度提高到79.0%,進(jìn)而證明了算法的有效性。
表3 消融實(shí)驗(yàn)Tab.3 Ablation experiment單位:%
此外,實(shí)驗(yàn)還將原始SSD 算法的計(jì)算量與參數(shù)量進(jìn)行對(duì)比,如表4 所示。 雖然參數(shù)量與計(jì)算量都有所提高,但是根據(jù)性能對(duì)比實(shí)驗(yàn),本文算法有顯著的提高。 綜上考慮,本文算法具有良好的檢測(cè)性能。
表4 算法參數(shù)對(duì)比Tab.4 Comparison of algorithm parameters
為了進(jìn)一步證明DA-SSD 算法的有效性,實(shí)驗(yàn)還將Faster R-CNN,SSD,DSSD 以及文獻(xiàn)[9-11]與文獻(xiàn)[18]進(jìn)行數(shù)據(jù)集單類(lèi)別精度比較,如表5 所示。 可以發(fā)現(xiàn),DA-SSD 相較于其他比較算法有船、公交車(chē)、椅子、牛以及沙發(fā)5 個(gè)類(lèi)別檢測(cè)精度最優(yōu)。而相較于原始SSD 算法,DA-SSD 算法共17 個(gè)類(lèi)別相較于原算法有所提高,檢測(cè)性能明顯優(yōu)于原始SSD 算法。
表5 單類(lèi)別精度比較Tab.5 Single class accuracy comparison 單位:%
續(xù)表
為了驗(yàn)證DA-SSD 算法的檢測(cè)性能,將原始SSD 算法與DA-SSD 算法檢測(cè)進(jìn)行定性結(jié)果分析,選取了4 張目標(biāo)為不同種類(lèi)的圖片進(jìn)行可視化檢測(cè),如圖6 所示。 可以發(fā)現(xiàn),DA-SSD 算法較原始SSD 算法的檢測(cè)效果有顯著提升,原算法未檢測(cè)出來(lái)的盆栽、牛和公交車(chē),以及誤檢為牛的羊,通過(guò)使用DA-SSD 算法不僅都可以檢測(cè)出,而且檢測(cè)的類(lèi)別信息正確,檢測(cè)概率也有一定的提升。
圖6 定性結(jié)果分析Fig.6 Qualitative analysis of results
針對(duì)原始SSD 未充分利用特征層之間的關(guān)系且獲取特征信息能力不夠好的問(wèn)題,提出了DASSD 改進(jìn)算法。 通過(guò)將淺層與中間層特征層輸入到PR-FPN 多尺度特征提取網(wǎng)絡(luò),增強(qiáng)淺層特征層的語(yǔ)義信息,以及中間層的上下文信息。 為了獲取更多通道語(yǔ)義信息和空間位置信息,使用DAM 雙重注意力機(jī)制加強(qiáng)上述信息的提取。 在PASCAL VOC 2007test 數(shù)據(jù)集上的實(shí)驗(yàn)表明,DA-SSD 算法相較于原始SSD 算法檢測(cè)精度顯著提高。 下一步擬進(jìn)一步提高算法的檢測(cè)能力,并更大程度避免漏檢、誤檢的問(wèn)題。