祁世風(fēng) 蔣 勇 高 琳 廖小華
(西南科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 四川綿陽 621010)
目標(biāo)檢測在輸入圖像中找出感興趣目標(biāo),并確定其位置和類別。目前,目標(biāo)檢測廣泛應(yīng)用于自動(dòng)駕駛、智能視頻監(jiān)控、醫(yī)療輔助診斷等領(lǐng)域中,已經(jīng)成為計(jì)算機(jī)視覺領(lǐng)域的一個(gè)研究熱點(diǎn)[1-3]。
目標(biāo)尺度變化問題是目標(biāo)檢測亟待解決的關(guān)鍵問題之一[4-5]。為檢測不同尺度的目標(biāo),目前存在兩種基本方法:(1)使用圖像金字塔[6]。首先對原圖像進(jìn)行不同尺度的縮放以構(gòu)成圖像金字塔,然后將這些圖像輸入網(wǎng)絡(luò)進(jìn)行檢測。這種方法雖然能取得不錯(cuò)的檢測效果,但需要多次縮放圖像,繁瑣耗時(shí),不利于實(shí)際應(yīng)用。(2)利用卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建圖像特征金字塔。Hong等[7]首先在圖像上提取不同尺度的特征構(gòu)成特征金字塔,然后將提取到的特征進(jìn)行組合以完成對目標(biāo)的預(yù)測。這種方法雖然能夠充分提取到目標(biāo)的位置信息,但由于搭建特征金字塔的過程中頻繁使用下采樣運(yùn)算,使得細(xì)節(jié)信息丟失比較嚴(yán)重,影響檢測結(jié)果。Liu等[8]在不同層次的特征圖上預(yù)測不同尺度的目標(biāo),然后綜合不同尺度上的檢測結(jié)果得到最終檢測結(jié)果。Lin等[9]從目標(biāo)的上下文信息角度考慮,加強(qiáng)淺層特征和深層特征之間的信息融合,通過將高級(jí)語義特征與低級(jí)語義特征相結(jié)合,在不同尺度特征上生成了更多的語義特征,從而更好地完成目標(biāo)檢測任務(wù)。He等[10]提出了空間金字塔池化(spatial pyramid pooling),利用膨脹卷積有效地解決了卷積神經(jīng)網(wǎng)絡(luò)對圖像重復(fù)提取特征的問題。Liu等[11]受Szegedy等[12]的啟發(fā),提出了多分支卷積層,將SSD算法的基礎(chǔ)網(wǎng)絡(luò)改進(jìn)為三分支結(jié)構(gòu),而每個(gè)分支又由普通卷積和相同膨脹率的膨脹卷積串聯(lián)構(gòu)成,以此實(shí)現(xiàn)多尺度目標(biāo)檢測。
在SSD算法中,雖然淺層特征有助于檢測小目標(biāo),但與深層特征相比,淺層特征存在語義信息少、感受野小等問題,導(dǎo)致小目標(biāo)的檢測效果并不理想,并且在網(wǎng)絡(luò)訓(xùn)練過程中經(jīng)過多層池化操作容易出現(xiàn)小目標(biāo)特征消失的現(xiàn)象。此外,SSD算法只是在不同的特征圖上進(jìn)行預(yù)測,沒有充分考慮到上下文信息。針對上述問題,文中提出了一種改進(jìn)的SSD算法,該算法首先使用膨脹卷積對卷積層進(jìn)行二次特征提取,然后引入密集連接以獲得目標(biāo)上下文信息,通過與多種主流算法在UA-DETRAC[13]數(shù)據(jù)集上的對比實(shí)驗(yàn),驗(yàn)證了改進(jìn)算法的有效性。
為了提取有效的目標(biāo)特征以及捕捉充足的目標(biāo)上下文信息,本文對SSD算法主要進(jìn)行了以下3點(diǎn)改進(jìn):(1)去掉conv7_2之后的所有卷積層,并選取conv4_3,conv7,conv6_2和conv7_2等層作為輸入層;(2)在4層輸入層上分別添加3層不同膨脹率的膨脹卷積,各膨脹卷積層之間采用級(jí)聯(lián)的方式從而進(jìn)一步增大卷積層的感受野;(3)在輸入層與膨脹卷積層之間使用密集連接,使得中間特征的神經(jīng)元可以編碼不同尺度的上下文信息,充分捕捉目標(biāo)的多級(jí)特征。在輸入層和膨脹卷積層中通過密集連接的方式(dense connection dilated convolution,DCD)構(gòu)成了DCD模塊,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。數(shù)據(jù)集輸入網(wǎng)絡(luò)后,首先對數(shù)據(jù)集進(jìn)行預(yù)處理,然后將處理后的圖像輸送到DCD模塊實(shí)現(xiàn)多尺度特征提取,最后送入檢測器進(jìn)行目標(biāo)定位和目標(biāo)分類。
圖1 本文目標(biāo)檢測算法網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Framework model of object detection algorithm
針對SSD算法中存在淺層特征感受野小、特征提取不夠充分的問題,本文在4層卷積層上分別級(jí)聯(lián)3層不同膨脹率的膨脹卷積實(shí)現(xiàn)二次特征提取,提高目標(biāo)的檢測精度。
膨脹卷積可以在保持圖像分辨率的前提下增大感受野,感受野越大,表明包含了更多的全局信息和豐富的語義信息。當(dāng)膨脹率為d,卷積核大小為k×k時(shí),膨脹卷積感受野r可以由下式計(jì)算:
使用膨脹卷積可以獲得較大的感受野,而級(jí)聯(lián)多個(gè)膨脹卷積層可以產(chǎn)生更大的感受野。假設(shè)兩個(gè)膨脹卷積的感受野尺寸分別為r1,r2,則通過級(jí)聯(lián)后,其感受野的大小可以由以下公式計(jì)算:
在本文中使用3×3大小的卷積核,膨脹率分別為3,6,12,采用級(jí)聯(lián)方式之后膨脹卷積層感受野擴(kuò)大至43×43。通過級(jí)聯(lián)膨脹卷積,有效利用不同的感受野提取不同尺度的特征。
在一般情況下,卷積神經(jīng)網(wǎng)絡(luò)為了更高效地捕捉深層特征,采取加深網(wǎng)絡(luò)或者加寬網(wǎng)絡(luò)來使得模型能夠很好地學(xué)習(xí)輸入圖像特征。但隨著網(wǎng)絡(luò)的加深和加寬,網(wǎng)絡(luò)學(xué)習(xí)到的特征也會(huì)變得越來越抽象,忽略圖像中的細(xì)節(jié)信息。DenseNet[14]從特征信息的角度考慮,通過密集連接實(shí)現(xiàn)了網(wǎng)絡(luò)中層與層之間最大程度的信息傳輸,有效利用了特征并取得了較好的實(shí)驗(yàn)結(jié)果。
為了最大化獲取目標(biāo)的上下文信息,采用密集連接向后傳遞信息,具體連接方式如圖1下半部分所示:(1)每一層膨脹卷積層(最后一層除外)的輸出傳送到其后面的所有膨脹卷積層;(2)DCD的輸入層(conv4_3,fc7,conv6_2,conv7_2)也按同樣方式往后傳遞信息;(3)增加連接層(concat),將本層特征與前層特征進(jìn)行融合。
密集連接能夠有效獲取目標(biāo)上下文信息,在減輕計(jì)算量的同時(shí)避免了信息丟失,這種方法對于遮擋、光照不均等情況具有顯著的檢測效果。
在搭建網(wǎng)絡(luò)模型時(shí),在每一層膨脹卷積層以及連接層之前添加了1×1卷積進(jìn)行降維。同時(shí)使用Relu層和Batch_norm層進(jìn)行歸一化,在減少網(wǎng)絡(luò)訓(xùn)練時(shí)長的同時(shí)有助于提高網(wǎng)絡(luò)的檢測精度。
此外,為了減少網(wǎng)絡(luò)訓(xùn)練過程中由于參數(shù)過量導(dǎo)致過擬合問題的發(fā)生,不同輸入層連接的DCD模塊使用相同的結(jié)構(gòu),實(shí)現(xiàn)權(quán)重共享。通過權(quán)重共享,減少了網(wǎng)絡(luò)參數(shù)量,同時(shí)使得不同尺度的目標(biāo)經(jīng)歷了具有相同表達(dá)能力的網(wǎng)絡(luò),充分利用了每一個(gè)特征。
最后,使用多任務(wù)損失函數(shù)對網(wǎng)絡(luò)進(jìn)行優(yōu)化學(xué)習(xí)。損失函數(shù)由類別置信度損失Lconf和定位損失Lloc組成,其定義如下:
其中,x是輸入的圖像數(shù)據(jù),c是置信度預(yù)測值,l是定位預(yù)測值,g是真實(shí)值,N是匹配的預(yù)測框的個(gè)數(shù),經(jīng)過交叉驗(yàn)證后,權(quán)重系數(shù)α設(shè)置為1。定位損失采用smoothL1函數(shù)對正樣本進(jìn)行誤差計(jì)算,置信度誤差采用softmax loss函數(shù)進(jìn)行計(jì)算。
在UA-DETRAC數(shù)據(jù)集(簡稱UA數(shù)據(jù)集)上進(jìn)行了實(shí)驗(yàn)。UA-DETRAC數(shù)據(jù)集是在中國北京和天津兩座城市共24個(gè)不同的位置錄制而成,一共包含了82 085張不同角度、不同天氣及不同遮擋情況的圖像,數(shù)據(jù)集包含四類目標(biāo),分別是汽車(car)、公交車(bus)、貨車(van)和其他車型(others)。在實(shí)驗(yàn)中,從該數(shù)據(jù)集中選取65 668張作為訓(xùn)練數(shù)據(jù),16 417張作為測試數(shù)據(jù),并參照Pascal VOC 2007的數(shù)據(jù)格式制作成了對應(yīng)的數(shù)據(jù)集。
軟硬件平臺(tái)為:操作系統(tǒng)Ubuntu 16.04,Intel Xeon E5-1630V3@3.7 GHz四核處理器,16 GB內(nèi)存,Nvidia GTX 1080Ti 11 GB顯卡,在Caffe框架下使用Python編程語言實(shí)現(xiàn)。
通過大量實(shí)驗(yàn)發(fā)現(xiàn):當(dāng)膨脹率大于12時(shí),特征會(huì)大幅度弱化并造成檢測精度急劇下降的現(xiàn)象,因此本文使用膨脹率分別為3,6,12的3×3卷積核。
訓(xùn)練過程中,采用隨機(jī)梯度下降法迭代更新權(quán)重參數(shù),同時(shí)使用L2正則化減少過擬合,初始學(xué)習(xí)率為0.001,權(quán)重衰減系數(shù)為0.000 5,迭代次數(shù)設(shè)置為120 000次。
在實(shí)驗(yàn)中,以平均精度(average precision,AP)以及平均精度均值(mean average precision,mAP)作為評價(jià)指標(biāo),其計(jì)算公式如下:
其中,PrecisionC是指類別為C的目標(biāo)檢測精度,TP表示正確檢測出來的目標(biāo)總數(shù),F(xiàn)P表示被錯(cuò)誤檢測出來的目標(biāo)總數(shù),NC是指包含C類目標(biāo)的圖像總數(shù),APC是用來分析C類目標(biāo)檢測效果的C類目標(biāo)的平均檢測精度,S表示類別數(shù)量,mAP為所有類別目標(biāo)的平均精度之和的平均值,其值越高表示模型的檢測效果越好。
為了驗(yàn)證DCD模塊的有效性,本文分別做了含有DCD模塊(+DCD)和沒有DCD(-DCD)模塊的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1所示。
表1 DCD模塊有效性驗(yàn)證Table 1 DCD module validation
從表1的實(shí)驗(yàn)結(jié)果可知,添加DCD模塊之后的算法,各類目標(biāo)AP值以及mAP值均高于不含DCD模塊的算法,表明DCD模塊中的級(jí)聯(lián)膨脹卷積可以利用逐漸遞增的感受野提取目標(biāo)多尺度特征,提高了特征的表達(dá)能力,使得網(wǎng)絡(luò)提取的特征更為全面。
為了驗(yàn)證本文算法的有效性和保證實(shí)驗(yàn)的公平性,將UA數(shù)據(jù)集調(diào)整成320×320和512×512大小的圖像進(jìn)行實(shí)驗(yàn),并分別與當(dāng)前目標(biāo)檢測領(lǐng)域內(nèi)的主流算法進(jìn)行了對比。對比算法包括Faster RCNN[15],RefineDet[16],SSD及YOLOv3[17],實(shí)驗(yàn)結(jié)果如表2、表3所示。
表2 不同算法在320×320圖像上的檢測精度Table 2 Detection accuracy of different algorithms on 320×320 images
從表2、表3的對比數(shù)據(jù)可得,本文算法的mAP值均高于其他算法。在320×320大小的數(shù)據(jù)集上mAP值達(dá)到了88.6%,超越了其他四類算法。提高圖像分辨率能夠明顯提升檢測精度,高分辨率圖像中的目標(biāo)在一定程度上被放大,所以更容易被網(wǎng)絡(luò)學(xué)習(xí)到。對比表1和表2的數(shù)據(jù)可以看出,F(xiàn)aster R-CNN算法的mAP值出現(xiàn)了變化,從28.7%提高到72.5%;RefineDet算法和SSD算法的mAP值也提高了7%~12%。反觀本文算法檢測精度保持平穩(wěn),表明本文算法在多尺度檢測問題上具有更強(qiáng)的魯棒性且對于輸入圖像尺度的變化不敏感。圖2展示了各類算法在320×320模型上的測試結(jié)果。
表3 不同算法在512×512圖像上的檢測精度Table 3 Detection accuracy of different algorithms on 512×512 images
圖2 中,SSD算法和YOLOv3算法在檢測過程中沒有準(zhǔn)確地檢測到目標(biāo),RefineDet算法存在重復(fù)檢測和誤檢的現(xiàn)象。本文算法利用級(jí)聯(lián)膨脹卷積層的方式獲取了目標(biāo)的多尺度特征,從而能更準(zhǔn)確地檢測到目標(biāo)。
圖2 多尺度測試結(jié)果對比圖Fig.2 Comparison of the detection results of the multi-scale object
此外,本文還做了在遮擋、光照等情況下的對比實(shí)驗(yàn)。由于道路周邊的綠色植被和建筑物容易對目標(biāo)造成遮擋現(xiàn)象,這種現(xiàn)象會(huì)使目標(biāo)信息部分丟失,從而影響檢測的準(zhǔn)確性。
圖3 所示為在遮擋情況下的檢測結(jié)果,F(xiàn)aster R-CNN算法、RefineDet算法和YOLOv3算法均出現(xiàn)了誤檢現(xiàn)象,本文算法使用密集連接的方法為目標(biāo)增加了上下文信息,在遮擋情況下依然能檢測到目標(biāo)。圖3展示的是各類算法在512×512模型上的測試結(jié)果。
圖3 遮擋情況下的測試結(jié)果對比圖Fig.3 Comparison of test results under occlusion
在復(fù)雜環(huán)境下,光照不均勻使場景圖像出現(xiàn)光照過強(qiáng)和光照過暗的現(xiàn)象而無法辨認(rèn)圖像細(xì)節(jié)信息,導(dǎo)致目標(biāo)檢測難度劇增。圖4中,F(xiàn)aster R-CNN算法出現(xiàn)了漏檢和誤檢的現(xiàn)象,公交站牌被檢測為others;SSD算法同樣出現(xiàn)了漏檢問題。本文算法通過密集連接膨脹卷積為目標(biāo)添加了上下文信息,在光照不均勻的影響下仍然可以檢測到目標(biāo)。
圖4 光照不均勻條件下的測試結(jié)果對比圖Fig.4 Comparison of test results under uneven illumination conditions
本文利用膨脹卷積和密集連接對SSD目標(biāo)檢測算法進(jìn)行改進(jìn),實(shí)現(xiàn)了一種用于目標(biāo)檢測的深度學(xué)習(xí)算法。在UA數(shù)據(jù)集上與當(dāng)前主流算法的對比測試表明,本文的改進(jìn)算法能更好地適應(yīng)目標(biāo)的尺度變化,對遮擋及光照不均勻等復(fù)雜情況也具有一定的適應(yīng)性。但是,文中搭建的卷積神經(jīng)網(wǎng)絡(luò)對于輕量級(jí)要求還有一定的差距,如何在保證檢測精度的前提下優(yōu)化網(wǎng)絡(luò)模型、減少網(wǎng)絡(luò)參數(shù)是今后研究的方向。