姜 竣,翟東海,2
(1.西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,成都611756;2.西藏大學(xué)工學(xué)院,拉薩850000)
目標(biāo)檢測是結(jié)合目標(biāo)定位和目標(biāo)識別的一項(xiàng)基礎(chǔ)性計(jì)算機(jī)視覺任務(wù),其目的是在圖像的復(fù)雜背景中找到若干目標(biāo),給出一個(gè)精確的目標(biāo)邊框,并判斷該邊框中目標(biāo)所屬的類別[1]。隨著深度學(xué)習(xí)方法的發(fā)展,基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的目標(biāo)檢測方法成為計(jì)算機(jī)視覺領(lǐng)域的一個(gè)熱門研究方向。在采用CNN 提取特征時(shí),淺層的特征圖含有豐富的細(xì)節(jié)信息,對位置信息比較敏感;深層的特征圖具有豐富的語義信息,常用于分類。為了提高目標(biāo)檢測的性能,往往需要將淺層與深層特征圖融合以利于目標(biāo)的分類和定位。
根據(jù)是否進(jìn)行特征融合,將目標(biāo)檢測算法分為無特征融合和有特征融合。在無特征融合的目標(biāo)檢測算法中,一類是直接在單特征圖上采用回歸方法得到目標(biāo)框與目標(biāo)類別,如單階段檢測方法YOLO[2]、YOLOv2[3]以及多階段檢測方法R-CNN[4]、Fast-RCNN[5]、Faster-RCNN[6];另一類是在多個(gè)特征圖上進(jìn)行預(yù)測,如SSD[7]。在有特征融合的目標(biāo)檢測算法中,一類是在單個(gè)融合后的特征圖上進(jìn)行預(yù)測,如HyperNet[8]和ION[9]對多個(gè)尺寸大小不同特征的圖使用通道拼接的方式融合特征信息;另一類是在多個(gè)融合后的特征圖上預(yù)測,如DSSD[10]、FSSD[11]通過逐像素相乘的方式融合特征信息,F(xiàn)PN[12]、Mask R-CNN[13]、YOLOv3[14]通過自頂向下逐像素相加的方式融合特征信息。
以上通過特征融合重建特征圖的方式,往往需要在尺寸較小的特征圖上使用多次上采樣操作,不僅大幅降低了算法的檢測速度,而且引入了不利于目標(biāo)檢測的噪聲信息。為克服上述特征融合方式的不足,本文提出一種基于空洞卷積與特征增強(qiáng)的單階段目標(biāo)檢測算法(AFE-SSD),通過通道拼接的特征融合方式,分別對主干網(wǎng)絡(luò)中相鄰的2 個(gè)特征圖進(jìn)行融合,并結(jié)合上下文的語義信息,減少連續(xù)多次上采樣過程中噪聲信息的引入。
目前針對多尺度目標(biāo)檢測的方法可以分為以下3 種:第1 種方法是采用多尺度圖像金字塔[15],如SNIP[16]針對大物體在大尺度的圖片、小物體在小尺度的圖片上不易識別的問題,在圖像金字塔的基礎(chǔ)上提出了尺度正則化的方法,然而由于圖像金字塔具有占用內(nèi)存大、時(shí)間復(fù)雜度高的缺陷,因此不適合實(shí)際應(yīng)用;第2 種方法是在單特征層上采用空洞卷積的機(jī)制得到含有多尺度信息的預(yù)測特征圖,如TridentNet[17]通過在單特征圖上使用不同空洞率的空洞卷積構(gòu)建了一個(gè)并行的多分支架構(gòu),每個(gè)分支具有不同的感受野,最后將不同分支的特征圖用于預(yù)測不同尺度的目標(biāo);第3 種方法是采用特征金字塔[18],如SSD 直接利用不同尺度特征圖用于檢測不同尺度的目標(biāo),形成了特征金字塔的模型。FPN、DSSD 也在特征金字塔上進(jìn)行預(yù)測以處理多尺度目標(biāo)檢測問題。
上述3 種方法是解決多尺度目標(biāo)檢測問題的有效手段,本文在單特征圖上采用多分支空洞卷積的機(jī)制進(jìn)行改進(jìn)。TridentNet 通過在單特征圖上使用不同空洞率的空洞卷積構(gòu)建了一個(gè)并行的多分支架構(gòu),最后將不同分支的特征圖用于預(yù)測不同尺度的目標(biāo)。這樣不僅訓(xùn)練過程復(fù)雜,而且增加了權(quán)重參數(shù)的數(shù)量。為此,本文提出了多尺度目標(biāo)特征提取模塊,通過將不同空洞率空洞卷積層級聯(lián),使單特征圖上具有多尺度的信息。此外,參考DenseNet[19]的思想,建立了特征層與空洞卷積層之間的密集連接,減少了模型參數(shù),降低了時(shí)間復(fù)雜度。將融合后具有豐富語義信息和細(xì)節(jié)信息的特征圖通入多尺度特征提取模塊,不僅保留了其細(xì)節(jié)信息,而且豐富了特征圖的多尺度信息。將上述方法得到的特征圖與SSD 算法的深層特征圖組成新的特征金字塔,用于目標(biāo)的分類與定位操作。
本文AFE-SSD 算法的貢獻(xiàn)可以總結(jié)為以下3 點(diǎn):
1)針對已有的特征融合方式,往往需要在尺寸最小的特征圖上使用多次上采樣操作,會引入不利于目標(biāo)檢測的噪聲信息問題,本文通過通道拼接的特征融合方式,分別對主干網(wǎng)絡(luò)中相鄰的2 個(gè)特征圖進(jìn)行融合,提升了淺層特征圖的語義信息表示能力。
2)對并行的多分支空洞卷積機(jī)制進(jìn)行了改進(jìn),構(gòu)建了多尺度特征提取模塊。此模塊通過將不同空洞率空洞卷積層級聯(lián),使單特征圖上具有多尺度的信息。同時(shí)參考DenseNet 的思想,建立了特征層與空洞卷積層之間的密集連接,減少了模型參數(shù),降低了時(shí)間復(fù)雜度。
3)通過在PASCLA VOC2007 測試集上的模型簡化實(shí)驗(yàn),驗(yàn)證了所提特征融合方式與多尺度特征提取模塊的有效性。
基于深度學(xué)習(xí)的目標(biāo)檢測算法通常將用于分類的卷積神經(jīng)網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),目前分類效果較好的網(wǎng)絡(luò)有VGG16[20]、ResNet[21]和InceptionNet[22]。為了滿足實(shí)時(shí)檢測的需要,AFE-SSD 算法以SSD 算法為基礎(chǔ),選用輕量級的VGG16 網(wǎng)絡(luò)作為主干網(wǎng)絡(luò)。該算法的整體框架如圖1所示。
圖1 AFE-SSD 算法整體框架Fig.1 Overall framework of AFE-SSD algorithm
首先分別將VGG16 中相鄰的2 個(gè)特征圖進(jìn)行融合(如圖1 中圓形框所示)得到具有豐富語義信息與細(xì)節(jié)信息的淺層特征圖。然后為了進(jìn)一步提升SSD算法對多尺度目標(biāo)的檢測能力,分別將融合后的特征圖通入多尺度特征提取模塊(Multi-scale Feature Extraction Module,MFEM),從而增強(qiáng)了特征圖中的多尺度信息。由于特征層Conv9_2、Conv10_2、Conv11_2 的尺寸較小且已具有豐富的語義信息,因此不對其進(jìn)行特征增強(qiáng)操作。最后將每個(gè)多尺度特征提取模塊的輸出以及Conv9_2、Conv10_2、Conv11_2 特征層用于檢測。假設(shè)將Conv4_3、Conv7_fc、Conv8_2、Conv9_2、Conv10_2、Conv11_2分別用X1、X2、X3、X4、X5、X6表示,該算法的檢測過程可以用下列表達(dá)式描述:
其中:?f表示特征融合方式;?p表示多尺度信息提取模塊;?c,l表示預(yù)測目標(biāo)位置及類別的操作。
目前已有的特征融合方式,如DSSD[10]、FPN[12]采用自頂向下逐層融合的方式,需要在尺寸較小的特征圖上經(jīng)過多次上采樣操作。這樣不僅引入了大量不利于目標(biāo)檢測的噪聲信息,而且大幅降低了算法的檢測速度。因此,本文算法只對主干網(wǎng)絡(luò)中相鄰的2 個(gè)特征圖進(jìn)行融合。
特征融合方式的示意圖如圖2所示。為了方便表述與理解,以特征層n與特征層n+1 分別表示相鄰的輸入特征圖。首先用1×1 Conv 對特征層n+1的通道數(shù)進(jìn)行壓縮,壓縮后的通道數(shù)為特征層n+1的1/2,之后再將特征層通過BatchNorm 與Relu 層。同時(shí),為了保持與特征層n+1 相同的學(xué)習(xí)能力,在特征層n后添加了3×3 Conv 以及BatchNorm 與Relu層,卷積后的特征層通道數(shù)同樣為特征層n的1/2。其次由于特征融合模塊將2 個(gè)不同尺寸大小的特征圖作為輸入,而反卷積的時(shí)間復(fù)雜度較高,因此采用雙線性插值的方式將特征層n+1 擴(kuò)展到與特征層n相同的尺寸大小。最后使用通道拼接操作將2 個(gè)特征層進(jìn)行融合。
圖2 特征融合方式示意圖Fig.2 Schematic diagram of feature fusion mode
根據(jù)上述特征融合思路,分別將Conv4_3 與Conv7_fc 及Conv7_fc、Conv8_2 及Conv8_2、Conv9_2進(jìn)行融合,融合后特征圖的維度大小分別為38×38×768、19×19×768、10×10×384。
由于TridentNet[17]在單特征圖上采用多分支空洞卷積機(jī)制,權(quán)重參數(shù)的數(shù)量多,網(wǎng)絡(luò)訓(xùn)練過程復(fù)雜。為此,本文構(gòu)建了輕量級的多尺度特征提取模塊,如圖3所示。輕量級表現(xiàn)在2 個(gè)方面:1)模塊訓(xùn)練難度?。?)模塊具有較少的權(quán)重參數(shù)。
圖3 多尺度特征提取模塊示意圖Fig.3 Schematic diagram of multi-scale feature extraction module
下文介紹此模塊的構(gòu)造過程:不同于并行的空洞卷積機(jī)制,多尺度特征提取模塊在單特征圖后使用不同空洞率的3×3 空洞卷積的級聯(lián)獲取特征圖的多尺度信息,并且從避免空洞卷積的gridding 效應(yīng)的角度考慮,采用空洞率組合為{1,2,3}的空洞卷積的級聯(lián)。然后,在每層的空洞卷積層前用1×1 卷積作為瓶頸層減少輸入通道的數(shù)量(如圖3 中圓形框所示),從而提高網(wǎng)絡(luò)的計(jì)算效率。最終多尺度特征提取模塊獲得的特征圖具有多個(gè)感受野大小的信息,解決了在并行空洞卷積機(jī)制中因不同分支感受野不一致帶來的網(wǎng)絡(luò)訓(xùn)練過程復(fù)雜問題。
為了減少級聯(lián)方式的權(quán)重參數(shù),提升計(jì)算效率,參考DenseNet 的思想,建立了特征層與空洞卷積層之間的密集連接,如圖3 中曲線連接所示。其中:C表示通道拼接操作;Growth rate 設(shè)置為12。每一層空洞卷積層都將前面所有層的輸出采用通道拼接的方式融合作為額外輸入,之后再將自身輸出的通道數(shù)壓縮為12 層,用公式表示為:
其中:[x0,x1,…,xl-1]表示從第0 層到第l-1 層的通道拼接操作;Hl是非線性轉(zhuǎn)換函數(shù),包含了BatchNorm、Relu、Conv 這一系列操作。在模塊的最后添加1 個(gè)1×1 卷積層用來整合特征信息,使得用來做預(yù)測的特征層保持與模塊的輸入特征圖相同的通道數(shù)。
表1所示為使用多分支空洞卷積機(jī)制與使用級聯(lián)與DenseNet 相結(jié)合機(jī)制時(shí),模塊參數(shù)量的比較(假設(shè)輸入特征圖的通道數(shù)為512),可見本文所提多尺度特征提取模塊顯著減少了參數(shù)量。多尺度特征提取模塊的整體結(jié)構(gòu)設(shè)計(jì)如表2所示。其中:d表示空洞卷積;C表示特征圖的通道數(shù)。
表1 多尺度特征提取模塊參數(shù)量比較Table1 Comparison of multi-scale feature extraction module parameter quantity
表2 多尺度特征提取模塊的結(jié)構(gòu)設(shè)計(jì)Table2 Structural design of multi-scale feature extraction module
通過上述空洞卷積與密集連接的構(gòu)造方式,多尺度特征提取模塊最終得到的特征圖不僅保留了原有的細(xì)節(jié)信息,而且具有豐富的多尺度信息。在實(shí)驗(yàn)部分中的模塊簡化實(shí)驗(yàn)也證實(shí)了所提模塊的有效性。
在原始的SSD 算法中,不同層次的特征圖的感受野大小不同,其對應(yīng)的檢測圖像上不同尺度大小的區(qū)域。本文所提多尺度特征提取模塊增加了SSD算法中淺層特征圖的感受野,為了將先驗(yàn)框與每一層特征圖的感受野準(zhǔn)確對應(yīng),假設(shè)用于預(yù)測的特征圖數(shù)量為m,則第k個(gè)特征圖中先驗(yàn)框的尺寸計(jì)算為:
其中,sk表示先驗(yàn)框大小相對于圖片的比例;smax取0.9;對于經(jīng)過特征增強(qiáng)的特征圖smin取0.3;沒有經(jīng)過特征增強(qiáng)的特征圖(Conv9_2、Conv10_2、Conv11_2)smin取0.2。同時(shí),在同一特征圖上使用縱橫比不同的先驗(yàn)框,以增強(qiáng)先驗(yàn)框?qū)ξ矬w形狀的魯棒性。先驗(yàn)框的縱橫比采用,則先驗(yàn)框的寬wk和高h(yuǎn)k分別為:
其中:sk表示先驗(yàn)框的實(shí)際尺度。此外,對于縱橫比αr為1 的情況,設(shè)置一個(gè)的先驗(yàn)框,這樣每個(gè)特征圖都設(shè)置了2 個(gè)縱橫比為1 但大小不同的正方形先驗(yàn)框。在模型簡化實(shí)驗(yàn)中驗(yàn)證了先驗(yàn)框設(shè)置策略提升了AFE-SSD 算法0.2%的檢測精度。
在AFE-SSD 算法中,總的目標(biāo)損失函數(shù)為置信度誤差與位置誤差的加權(quán)和,即:
其中,N為已匹配邊界框的數(shù)量;α為權(quán)重系數(shù)(本文算法α設(shè)置為1);g表示真實(shí)框;l表示預(yù)測框;Lconf為置信度誤差;Lloc為位置誤差。
置信度誤差采用標(biāo)準(zhǔn)交叉熵的形式,即:
位置誤差損失函數(shù)采用Smooth L1 損失函數(shù)形式,即:
其中:g?表示真實(shí)框相對于先驗(yàn)框編碼后的值。
本文在PASCAL VOC2007 和VOC2012 數(shù)據(jù)集上驗(yàn)證ASE-SSD 算法的檢測性能。PASCAL VOC的數(shù)據(jù)量信息如表3所示。其中:PASCAL VOC2007共含有9 963 張標(biāo)注過的圖片,24 640 個(gè)標(biāo)注的物體數(shù);PASCAL VOC2012 共含有23 080 張標(biāo)注過的圖片,54 900 個(gè)標(biāo)注的物體數(shù)。
表3 PASCAL VOC 數(shù)據(jù)集圖片及物體數(shù)Table3 Number of pictures and objects in the PASCAL VOC data set
本文實(shí)驗(yàn)?zāi)P褪腔赑ytorch-1.2.0 框架,編程語言為Python3.6,實(shí)驗(yàn)操作系統(tǒng)為Ubuntu 18.04.2 LTS,CPU 型號為Intel?CoreTMI7-7700K,主頻為4.2 GHz,核心數(shù)為8,系統(tǒng)內(nèi)存為16 GB,GPU 型號為GTX 1080,CUDA 版本為10.0。首先,將原始的SSD 算法作為基礎(chǔ)框架。然后,將在ImageNet[23]數(shù)據(jù)集上訓(xùn)練好的VGG16 網(wǎng)絡(luò)作為AFE-SSD 算法的預(yù)訓(xùn)練模型,并且在VOC2007 和VOC2012 的訓(xùn)練集和驗(yàn)證集上訓(xùn)練AFE-SSD 算法。最后,在VOC2007 測試集上測試AFE-SSD 算法。
AFE-SSD 算法訓(xùn)練采用隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD),算法參數(shù)Batch size 設(shè)置為32,迭代次數(shù)設(shè)置為250,前5 次迭代的初始學(xué)習(xí)率為4×10-3,5~150 次迭代的學(xué)習(xí)率設(shè)置為10-3,150~200 次迭代的學(xué)習(xí)率設(shè)置為10-4,200~250 次迭代的學(xué)習(xí)率設(shè)置為10-5,權(quán)重衰減設(shè)置為0.000 5,動量因子設(shè)置為0.9。在先驗(yàn)框與真實(shí)框的匹配過程中,將IoU 值大于0.5 的看作是正樣本;反之是負(fù)樣本。由于正負(fù)樣本的不平衡,采用難分樣本抽樣[24]的方式對負(fù)樣本進(jìn)行采樣,使正樣本與負(fù)樣本的比例為1∶3。
表4所示為AFE-SSD 算法與目前6 種檢測性能優(yōu)異的目標(biāo)檢測算法在PASCAL VOC2007 數(shù)據(jù)集上的檢測結(jié)果。其中:mAP 為檢測精度的評價(jià)指標(biāo);FPS 為檢測速度的評價(jià)指標(biāo)。AFE-SSD 以VGG16為基礎(chǔ)網(wǎng)絡(luò),圖片輸入尺寸為300像素×300像素時(shí)mAP 達(dá)到了79.8%以及58.8 Frames/s 的檢測速度。與多階段算法相比,比Faster R-CNN 的mAP 值高出了6.6 個(gè)百分點(diǎn),比采用RseNet-101 為基礎(chǔ)網(wǎng)絡(luò)的RFCN[25]損失了0.7 個(gè)百分點(diǎn)的檢測精度,但FPS 值遠(yuǎn)遠(yuǎn)高于R-FCN 算法。與單階段檢測算法相比,比采用Darknet-19 為基礎(chǔ)網(wǎng)絡(luò)的YOLOv2,mAP 值高出了6.1 個(gè)百分點(diǎn);比DSOD[26]算法的mAP 值高出了2.1 個(gè)百分點(diǎn);與采用相同基礎(chǔ)網(wǎng)絡(luò)及圖片輸入尺寸的SSD 算法相比,mAP 值高出了2.4 個(gè)百分點(diǎn),且滿足了實(shí)時(shí)檢測能力的要求。此外,同樣對SSD 算法進(jìn)行改進(jìn)的DSSD 算法相比SSD,mAP 值提高了1.2 個(gè)百分點(diǎn),但由于DSSD 采用了運(yùn)算時(shí)間復(fù)雜度較高的反卷積,檢測速度卻只有9.5 frame/s。因此,無論是檢測精度還是檢測速度,AFE-SSD 的檢測效果都比對SSD 進(jìn)行改進(jìn)的DSSD 算法更好。
表4 PASCAL VOC2007 測試集測試結(jié)果Table4 Test results of PASCAL VOC2007 test set
為更直觀地體現(xiàn)AFE-SSD 算法的檢測效果,給出了AFE-SSD算法及目前性能優(yōu)異的目標(biāo)檢測算法的散點(diǎn)圖,如圖4所示。其中:SSD 與AFE-SSD 算法是在GTX 1080 上進(jìn)行測試的;其他算法是在GTX Titan X 上進(jìn)行測試的。從圖4 可以看出:AFESSD 算法的檢測性能優(yōu)于其他的目標(biāo)檢測算法。
圖4 不同檢測算法的速度和精度的散點(diǎn)圖Fig.4 Scatter plot of speed and accuracy of different detection algorithms
表5 展示了SSD 算法、DSSD 算法與AFE-SSD算法在VOC2007 測試集上各個(gè)類別的檢測結(jié)果(加粗字體表示最優(yōu)值),其對應(yīng)的柱狀圖如圖5 所示??梢钥闯觯涸?0 個(gè)類別中,AFE-SSD 算法有19 個(gè)類別的檢測精度高于傳統(tǒng)的SSD 算法,對于鳥、瓶子、貓等小目標(biāo)的提升幅度達(dá)到了1.2%以上。此外,有12 個(gè)類別的檢測精度高于DSSD 算法。因此,AFE-SSD 算法的性能要優(yōu)于SSD算法及DSSD算法。
表5 PASCAL VOC2007 測試集各個(gè)類別測試結(jié)果Table 5 Test results of each category in the PASCAL VOC2007 test set %
圖5 PASCAL VOC2007 測試集各個(gè)類別測試結(jié)果柱狀圖Fig.5 Histogram of test results of each categories in the PASCAL VOC2007 test set
為了驗(yàn)證本文所提特征融合模塊及多尺度特征提取模塊在AFE-SSD 算法中的作用,設(shè)計(jì)了模型簡化實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表6所示,其中,√為添加特征融合模塊。
表6 PASCAL VOC2007 測試集模型簡化實(shí)驗(yàn)結(jié)果Table 6 PASCAL VOC2007 test set model simplifies experimental results
由表6 可以看出:傳統(tǒng)的SSD 算法獲得了77.4%的檢測精度,在僅添加特征融合模塊時(shí),提升了1.6 個(gè)百分點(diǎn),在僅添加多尺度特征提取模塊時(shí),提升了1.0 個(gè)百分點(diǎn);但將2 個(gè)模塊同時(shí)添加時(shí),達(dá)到了79.6%的檢測精度。檢測精度的提升證實(shí)了AFESSD 算法中特征融合模塊及多尺度特征提取模塊的有效性。此外,先驗(yàn)框設(shè)置策略的改進(jìn)提升了AFESSD 算法0.2 個(gè)百分點(diǎn)的同時(shí),檢測速度沒有損失,保證了算法的實(shí)時(shí)檢測能力,原因在于只改變了先驗(yàn)框在圖像中的尺寸大小,而沒有增加先驗(yàn)框的數(shù)目,時(shí)間復(fù)雜度沒有改變。
圖6所示為SSD 算法與AFE-SSD 算法在PASCAL VOC2007 測試集上置信度大于0.5 的部分圖像的檢測結(jié)果,可以看出AFE-SSD 檢測出的物體類別數(shù)要多于SSD 算法,尤其是對于小目標(biāo)的檢測提升效果明顯,同時(shí)對于檢測出相同物體的置信度,AFE-SSD算法遠(yuǎn)高于SSD 算法。原因在于:AFE-SSD 算法采用了特征融合與空洞卷積,對淺層特征層進(jìn)行了特征增強(qiáng),因此對多尺度目標(biāo)的檢測能力更強(qiáng)。
圖6 SSD 和AFE-SSD 在PASCAL VOC2007 測試集上的檢測結(jié)果Fig.6 Test results of SSD and AFE-SSD on the PASCAL VOC2007 test set
本文提出一種基于空洞卷積與特征增強(qiáng)的單階段目標(biāo)檢測算法,通過特征融合的方式利用上下文信息,同時(shí)對并行空洞卷積的機(jī)制進(jìn)行改進(jìn),增強(qiáng)特征圖的特征表示能力。實(shí)驗(yàn)結(jié)果表明,該算法在滿足實(shí)時(shí)檢測能力的同時(shí),檢測精度相較于與SSD、DSSD 算法有著明顯的優(yōu)勢,尤其是提升了對小目標(biāo)的檢測能力。但是該算法的檢測精度與采用更深網(wǎng)絡(luò)的多階段檢測算法相比仍有提升的空間,因此,下一步將在滿足實(shí)時(shí)檢測能力的同時(shí),對特征融合部分進(jìn)行更深入的研究,以提高算法的檢測精度。