武德彬,劉笑楠
(沈陽工業(yè)大學(xué)信息科學(xué)與工程學(xué)院,沈陽 110870)
在目標(biāo)檢測中,小目標(biāo)具有信息占比低、特征不明顯的特點(diǎn),因此如何提高小目標(biāo)檢測精度已成為目標(biāo)檢測領(lǐng)域的研究熱點(diǎn)。深度學(xué)習(xí)目標(biāo)檢測方法可分為兩大類,即單階段目標(biāo)檢測方法和兩階段目標(biāo)檢測方法。其中,兩階段目標(biāo)檢測方法檢測精度較高,但是速度較慢,包括Fast-RCNN[1],F(xiàn)aster-RCNN[2]等。單階段目標(biāo)檢測方法采用一種端到端的方式,包括SSD[3]、YOLOv3[4]以及YOLOv4[5]等,這類方法具有較高的檢測速度,但檢測精度較低。針對SSD算法對小目標(biāo)檢測精度不高的問題,研究者們做了一些改進(jìn)工作。Lim等人[6]提出一種SSD改進(jìn)方法,通過特征融合獲取上下文信息,使用注意力模塊使網(wǎng)絡(luò)信息集中在重要部分,來提高小目標(biāo)檢測精度。吳天舒等人[7]利用深度可分離卷積、逐點(diǎn)分組卷積與通道重排提出輕量化提取最小單元,在保證精度的條件下,提高了算法運(yùn)行速度。上述方法雖然提高了小目標(biāo)檢測精度,但是圖像淺層網(wǎng)絡(luò)特征信息尚未得到有效利用,仍有大量信息丟失。為有效利用淺層網(wǎng)絡(luò)中的特征信息,進(jìn)一步提高SSD方法的小目標(biāo)識(shí)別精度,在此提出一種借鑒FPN[8]的思想來提高小目標(biāo)檢測精度的改進(jìn)SSD算法。該方法使用轉(zhuǎn)置卷積[9]進(jìn)行上采樣,借助空洞卷積[10]降采樣來增大淺層網(wǎng)絡(luò)的感受野,將淺層網(wǎng)絡(luò)的特征圖與深層網(wǎng)絡(luò)的特征圖進(jìn)行特征融合,使淺層網(wǎng)絡(luò)的位置信息與深層網(wǎng)絡(luò)的細(xì)節(jié)語義信息融合得更好。最終,將特征圖通過注意力機(jī)制,提升對關(guān)鍵信息的學(xué)習(xí)能力,實(shí)現(xiàn)對小目標(biāo)的更準(zhǔn)確的檢測。
提出的改進(jìn)SSD算法是一種結(jié)合多尺度語義信息的淺層網(wǎng)絡(luò)與深層網(wǎng)絡(luò)融合的特征金字塔結(jié)構(gòu),使用了注意力機(jī)制來增強(qiáng)關(guān)鍵特征提取。這一策略能夠豐富淺層網(wǎng)絡(luò)與深層網(wǎng)絡(luò)提取到的特征。
提出的改進(jìn)SSD算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。該網(wǎng)絡(luò)在原有SSD網(wǎng)絡(luò)的特征層基礎(chǔ)上,增加了一層VGG16網(wǎng)絡(luò)中的75×75大小的池化特征層,稱為Pool2,以彌補(bǔ)38×38大小特征圖損失的一些淺層網(wǎng)絡(luò)語義信息,從而包含更多的小目標(biāo)的位置信息以及細(xì)節(jié)信息。將Pool2、Conv4_3層稱為淺層網(wǎng)絡(luò),將Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2層稱為深層網(wǎng)絡(luò)。為了提高淺層網(wǎng)絡(luò)對小目標(biāo)的檢測能力,將兩個(gè)淺層特征層使用空洞卷積進(jìn)行降采樣??斩淳矸e可以在不增大計(jì)算量的情況下增大卷積核的感受野,且保證該層特征信息不丟失。同時(shí)將Conv7、Conv8_2、Conv9_2進(jìn)行轉(zhuǎn)置卷積上采樣,令高層語義信息特征圖與低層語義信息特征圖分辨率相同,以此增大感受野。分別在Conv4_3、Conv7、Conv8_2的特征層通過特征融合模塊進(jìn)行特征融合,進(jìn)行多尺度融合。
圖1 改進(jìn)算法網(wǎng)絡(luò)結(jié)構(gòu)
從Pool2到Conv9_2便是FPN中的自下而上的特征提取過程。從Conv9_2進(jìn)行轉(zhuǎn)置卷積是自頂向下的特征融合部分,將二者進(jìn)行橫向連接,就構(gòu)成特征金字塔結(jié)構(gòu)。通過這種融合方式可以將淺層網(wǎng)絡(luò)中的位置信息與深層網(wǎng)絡(luò)中的語義信息進(jìn)行融合,使小目標(biāo)有更好的特征表達(dá)能力。
由于深層網(wǎng)絡(luò)的特征圖語義信息已經(jīng)很豐富,故將Conv9_2、Conv10_2、Conv11_2直接輸出結(jié)果,獲取細(xì)節(jié)信息。將得到的6個(gè)融合后的特征圖通過6個(gè)3×3卷積層進(jìn)行平滑,再將平滑后的特征圖分別輸入到CBAM[11]注意力模塊中,接著進(jìn)行回歸預(yù)測,生成初步結(jié)果,最后通過NMS非極大值抑制算法濾除不符合條件的預(yù)測框,得到最終檢測結(jié)果。
改進(jìn)算法所使用的注意力機(jī)制CBAM(Convolutional Block Attention Module)如圖2所示。它是一種結(jié)合通道注意力模塊和空間注意力模塊的注意力機(jī)制,將平滑后的特征圖先后通過上述兩個(gè)模塊。
圖2 CBAM注意力機(jī)制
通道注意力模塊如圖3所示。首先將平滑后的特征圖做全局平均池化和全局最大池化,得到兩個(gè)一維矢量;再將得到的結(jié)果送入一個(gè)共享網(wǎng)絡(luò),把得到的兩個(gè)特征圖逐個(gè)像素求和合并,經(jīng)過一個(gè)激活函數(shù)以產(chǎn)生一個(gè)權(quán)重結(jié)果;最后將這個(gè)權(quán)重結(jié)果和平滑后的特征圖相乘,得到縮放后的新特征圖。
圖3 通道注意力模塊
空間注意力模塊如圖4所示。輸入新特征圖,先通過平均池化和最大池化得到兩個(gè)特征圖,并將兩個(gè)特征圖拼接在一起,經(jīng)過激活函數(shù)得到一個(gè)新的權(quán)重系數(shù),再將新的權(quán)重系數(shù)與新特征圖相乘,得到最終縮放的特征圖。
圖4 空間注意力模塊
為了豐富上下文語義信息,使用的特征融合機(jī)制是有空洞卷積參與的淺層網(wǎng)絡(luò)融合機(jī)制,如圖5所示。這種融合機(jī)制包含正向卷積、轉(zhuǎn)置卷積和空洞卷積三部分。正向卷積首先將特征圖輸入到大小為3×3的卷積層中,減少通道數(shù),再經(jīng)過ReLU激活函數(shù);轉(zhuǎn)置卷積將特征圖先變成需要的分辨率大小,再通過ReLU激活函數(shù);空洞卷積則是先利用空洞卷積進(jìn)行降采樣,再通過BN層和ReLU激活函數(shù),最后將這三部分得到的特征圖進(jìn)行Concat通道拼接,然后通過3×3卷積和ReLU激活函數(shù)進(jìn)行平滑,以產(chǎn)生最后的特征圖。
圖5 特征融合模塊
改進(jìn)算法的損失函數(shù)沿用SSD算法的損失函數(shù),由分類損失函數(shù)和位置損失函數(shù)相加構(gòu)成,整體損失函數(shù)公式如下:
其中,N表示正樣本匹配候選框數(shù)量,Lconf表示分類損失函數(shù),Lloc表示位置損失函數(shù),α通常設(shè)置為1,當(dāng)N=0時(shí),L為0,表示沒有匹配的候選框。
位置損失函數(shù)由如下公式表示:
其中,xijk表示第i個(gè)預(yù)測框與第j個(gè)實(shí)際框關(guān)于類別k是否相匹配,匹配則值為1,不匹配則為0。ljm表示第i個(gè)預(yù)測框的位置,g^jm表示第j個(gè)預(yù)測框相對實(shí)際框的位置。k代表類別,cx、cy、w、h分別代表候選框偏移量的中心x/y坐標(biāo)、寬和高。
為測試改進(jìn)算法的性能,在下述條件下進(jìn)行實(shí)驗(yàn):Windows 10操作系統(tǒng);Intel Core i5-9300HF處理器(主頻2.40 GHz);NVIDIA GeForce GTX 1660 Ti顯卡。編譯環(huán)境為Torch 1.7.1、Torchvision 0.8.2、CUDA 10.1、cuDNN10.1、Python 3.8。
實(shí)驗(yàn)用來進(jìn)行模型評估的數(shù)據(jù)集選用PASCAL VOC 2007和PASCAL VOC 2012,再選用PASCAL VOC 2007 trainval和PASCAL VOC 2012 trainval數(shù)據(jù)集進(jìn)行訓(xùn)練,二者均包含20個(gè)類別,共16651張圖片。選用PASCAL VOC2007 test進(jìn)行測試,共20個(gè)類別,4952張圖片。數(shù)據(jù)的具體類別如表1所示。
表1 數(shù)據(jù)集類別
為了對改進(jìn)的SSD算法進(jìn)行模型評估,選用查準(zhǔn)率(Precision,P)、召回率(Recall,R)、單類別平均精確率(Average Precision,PA)、所有類別的平均精確率PmA作為評價(jià)指標(biāo),其定義式如下:
其中,TP為真正的正樣本數(shù),F(xiàn)P為假的正樣本數(shù),F(xiàn)N為假的負(fù)樣本數(shù),N為檢測的類別數(shù),P(R)為查準(zhǔn)率和召回率構(gòu)成曲線。
為驗(yàn)證改進(jìn)算法性能,在300×300分辨率下進(jìn)行對比實(shí)驗(yàn),為了使評估更加的全面,實(shí)驗(yàn)將沿用MS COCO數(shù)據(jù)集對物體大小的分類,將小于32×32的物體歸為小目標(biāo),大于96×96的歸為大目標(biāo),介于二者之間的歸為中等目標(biāo),并采取IOU=0.5檢測整體平均精度,采用IOU=0.5:0.05:0.95檢測小目標(biāo)的平均精度。為驗(yàn)證網(wǎng)絡(luò)性能,將改進(jìn)算法+VGG16網(wǎng)絡(luò)與SSD+VGG16網(wǎng)絡(luò)、SSD+ResNet50網(wǎng)絡(luò)、Pool2+Conv4_3+Conv7融合+VGG16網(wǎng)絡(luò)進(jìn)行對比,實(shí)驗(yàn)結(jié)果如表2所示。
表2 算法性能比較
實(shí)驗(yàn)結(jié)果表明,Pool2+Conv4_3+Conv7融合相比原始SSD算法和在ResNet50網(wǎng)絡(luò)基礎(chǔ)上的SSD算法對小目標(biāo)的檢測精度分別提高了2.9%和4.4%。但對于整體的精度卻下降了4.9%。經(jīng)過本方法,可以在將小目標(biāo)檢測精度較原SSD算法提高3%的同時(shí)將整體的檢測精度提高到79.2%,解決了Pool2+Conv4_3+Conv7融合只提高檢測小目標(biāo)精度而導(dǎo)致整體精度下降的問題。使用Conv7層網(wǎng)絡(luò)進(jìn)行融合,這一層相較于Pool2,Conv4_3已經(jīng)損失了很多小目標(biāo)位置信息以及其它細(xì)節(jié)信息,這是整體精度會(huì)出現(xiàn)下降的原因。
除了對算法的整體精度以及小目標(biāo)的精度進(jìn)行對比外,實(shí)驗(yàn)還對PASCAL VOC2007 test數(shù)據(jù)集當(dāng)中的20個(gè)類別的單個(gè)類別精度進(jìn)行了對比,結(jié)果數(shù)據(jù)如表3所示。
實(shí)驗(yàn)結(jié)果表明,本算法對11個(gè)類別的檢測精度都是超過原SSD算法以及Pool2+Conv4_3+Conv7融合算法的,而其它9個(gè)類別的精度與原SSD算法的檢測精度相差甚微,改進(jìn)效果明顯。
相應(yīng)的部分檢測結(jié)果如圖6所示。其中,圖6(a)與圖6(c)未能將圖中的相應(yīng)對象都檢測出來,說明對小目標(biāo)的識(shí)別都不及改進(jìn)算法效果好。
圖6 小目標(biāo)檢測效果對比
針對原SSD算法對小目標(biāo)檢測精度低的問題,本算法在原始SSD算法的基礎(chǔ)上將淺層網(wǎng)絡(luò)與深層網(wǎng)絡(luò)進(jìn)行特征融合構(gòu)成特征金字塔,并引入CBAM注意力模塊,較原SSD算法在對小目標(biāo)的檢測能力上得到了一定提升。在后續(xù)工作中,將進(jìn)一步完善淺層網(wǎng)絡(luò)特征提取,研究如何在多尺度特征融合的情況下,解決模型的輕量化問題。