吳晨曦,應(yīng)保勝,許小偉*,劉光華,程書瑾
(1.武漢科技大學(xué)汽車與交通工程學(xué)院,武漢 430065; 2.智新科技股份有限公司,武漢 430058)
基于深度學(xué)習的目標檢測算法現(xiàn)已廣泛應(yīng)用于自動駕駛領(lǐng)域。其中,汽車在行駛過程中車速快,為了預(yù)留充足的反應(yīng)時間和制動距離,要求使用的目標檢測算法對于遠處的小目標也有良好的檢測效果,同時具有較快的檢測速度。但如果行人、騎行者以及遠處的汽車這類小目標的尺度小,在圖像上占據(jù)的像素很小,所對應(yīng)的區(qū)域所包含的信息較少,在檢測過程中易出現(xiàn)誤檢漏檢,因此對于道路上小目標的檢測成為自動駕駛領(lǐng)域中的難點。
目前對于小目標的界定方式主要有兩種[1]。第一種為絕對尺度,即所占像素小于32×32的目標可視作小目標;第二種為相對尺度,即目標的長寬為原始圖像的1/10,可視作小目標??紤]到汽車在行駛過程中遇到的障礙物種類多,且障礙物大小跨度大,因此現(xiàn)綜合兩種方式界定小目標。
基于深度學(xué)習的目標檢測算法可分為雙階段(two-stage)和單階段(one-stage)。區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(region convolutional neural networks,R-CNN)[2]、快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(faster region convolutional neural networks,F(xiàn)aster R-CNN)[3]、Mask R-CNN[4]等均屬于雙階段檢測模型。雙階段檢測模型耗時多,檢測速度慢。YOLO[5-8]系列和單步多框目標檢測(single shot multibox detector, SSD)[9]均屬于單階段檢測模型,在檢測速度上優(yōu)于雙階段檢測模型。YOLO系列從YOLOv3開始加入了特征金字塔結(jié)構(gòu),增強了對小目標的檢測效果。但是SSD目標檢測模型中特征層尺度較小,且各特征層之間沒有聯(lián)系,對于小目標檢測效果較差。為了提升SSD模型在小目標上的檢測效果,學(xué)者們進行了大量研究。Fu等[10]在SSD模型的特征提取網(wǎng)絡(luò)后添加反卷積模塊,增加特征層的感受野,再將相同尺度的卷積層融合,提高了小目標檢測效果,但是由于特征提取網(wǎng)絡(luò)過深,導(dǎo)致檢測速度過慢,難以應(yīng)用到車輛上;Zhang等[11]提出的DDSSD模型,在SSD模型的特征提取網(wǎng)絡(luò)中添加反卷積模塊和空洞卷積,增加特征層的感受野,再將相同尺度的卷積層融合,提高了小目標檢測效果,但是由于沿用SSD模型的特征融合方式,對于小目標的檢測效果并不好;Li等[12]提出FSSD 模型,將SSD模型中的FC7、Conv7_2兩個特征層進行雙線性插值,使其與Conv4_3尺度相同,再將這個三特征層合并,使用得到的新特征層構(gòu)造特征融合金字塔,實驗結(jié)果表明FSSD模型的小目標檢測效果優(yōu)于SSD模型,但是FSSD的特征融合金字塔中各特征層獨立,相互沒有聯(lián)系,融合并不徹底;Wang等[13]提出的MFSSD模型在FSDD模型的基礎(chǔ)上將Conv7_2替換為Conv5_3進行特征融合,同時使用剪枝壓縮模型,但仍然具有FSSD的問題;Jeong等[14]針對SSD模型各特征層相互獨立、易出現(xiàn)同一個物體在不同大小的先驗框檢測出和小目標檢測效果差兩個問題,提出了一種新特征融合結(jié)構(gòu),具體操作是同時采用池化和反卷積兩種融合方式進行特征融合,充分利用不同尺度特征層的信息,提高了小目標檢測效果;Zhang等[15]提出RefineDet模型,該模型結(jié)合雙階段和單階段模型,一方面引入類似雙階段模型中的區(qū)域候選網(wǎng)絡(luò)(region proposal network,RPN)用來生成先驗框和除去負樣本,另一方面在SSD模型上添加特征金字塔加強對小目標的檢測效果;Pourya等[16]將圖像金字塔與SSD模型的特征層進行融合,獲取更強的語義特征,但產(chǎn)生不同大小的圖像會大幅增加計算量,對訓(xùn)練和運行的設(shè)備性能要求較高。結(jié)合上面的分析,SSD模型在小目標檢測上的優(yōu)化主要集中在特征融合方式的改進。
以上的改進方法均采用特征融合的方式來提高小目標的檢測效果,在一定程度上彌補了SSD模型在小目標檢測上的不足。但是以上的特征融合方式都將重點放在了不同尺度的特征層之間的融合上。然而由于不同物體的外觀復(fù)雜程度不同,相同尺度的物體需要的語義信息不一定相同,深層的特征適合表征外觀復(fù)雜的物體,淺層的特征適合表征外觀簡單的物體。因此合適的特征融合方式需要兼顧尺度與層級兩個方面。
在SSD模型基礎(chǔ)上,現(xiàn)提出一種感受野增強和特征融合的小目標檢測模型。在主干網(wǎng)絡(luò)中添加使用膨脹卷積的感受野增強模塊,增大卷積層的感受野,以獲得更多小尺度目標的信息。同時引入多層級特征融合結(jié)構(gòu)金字塔替換SSD模型的特征融合結(jié)構(gòu),將不同尺度、不同層級的特征層進行特征融合,形成新的特征金字塔用于預(yù)測,從而有效提高小目標的檢測效果。最后通過消融實驗和性能對比實驗,在保證檢測速度的情況下,驗證改進的目標檢測模型降低對道路上小目標的漏檢率。
所提出的感受野增強與特征融合模型的結(jié)構(gòu)如圖1所示。其中,感受野增強型的SSD模型指在SSD的主干網(wǎng)絡(luò)中嵌入感受野增強模塊(RFB_s),得到的新主干網(wǎng)絡(luò)模型,目的是獲取更多的小目標信息。而后將主干網(wǎng)絡(luò)輸出的特征層送入多層級特征金字塔(圖中藍色虛線框部分)進行多次特征融合,綠色虛線框內(nèi)是4次U形特征提取,目的是提取出不同層級的語義信息,橙色虛線框內(nèi)是4個不同層級的特征金字塔,最后將4個特征金字塔合并為一個具有6個尺度的多層級特征金字塔,每個尺度包含4個層級的語義信息,這樣可以充分結(jié)合不同尺度,不同層級的特征層,提高小目標的檢測效果。由于在SSD模型上添加了多層級特征融合結(jié)構(gòu)和感受野增強模塊,網(wǎng)絡(luò)深度有所增加,時間復(fù)雜度會增大;同時4個不同層級的特征金字塔會輸出24個不同尺度的特征層,空間復(fù)雜度會增加。
圖1 感受野增強與特征融合模型結(jié)構(gòu)圖Fig.1 Structure of receptive field enhancement and feature fusion model
傳統(tǒng)SSD 網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,有6個用于預(yù)測的有效特征層,分別為Conv6、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2,其中尺度最大的特征層為Conv4_3層,尺度為38×38。SSD網(wǎng)絡(luò)從靠后的Con4_3層開始抽取特征并獲得預(yù)測結(jié)果,由于這些特征層尺度較小,因此SSD模型對于小目標的檢測效果并不好。
圖2 SSD網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Network structure of SSD
感受野是指卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖上的像素點在輸入圖片上映射的區(qū)域大小,通俗解釋是特征圖上的一點對應(yīng)輸入圖上的區(qū)域。較大的感受野可以提高主干網(wǎng)絡(luò)的特征提取能力。神經(jīng)學(xué)研究發(fā)現(xiàn),在人類視覺皮層中,群體感受野的尺度是其視網(wǎng)膜偏心度的函數(shù),其尺度與視網(wǎng)膜圖的偏離度正相關(guān),且不同視網(wǎng)膜圖上群體感受野的尺度不一樣[17]。Liu等[18]提出了感受野模塊(receptive field block,RFB),對這一發(fā)現(xiàn)進行模擬,用以加強輕量級卷積神經(jīng)網(wǎng)絡(luò)模型學(xué)習到的深層特征。
RFB模塊結(jié)合了膨脹卷積[19]和InceptionNet[20]的并行卷積來擴大特征層的感受野。如圖3所示,原始的RFB模塊有3條分支,每條分支都有不同大小的卷積核,卷積核的大小分別為1×1、3×3、5×5,且分支的末端都有一個膨脹卷積層,膨脹率rate分別為1、3、5。為了進一步增強特征層的感受野,在原始RFB的基礎(chǔ)上再添加一條具有更大視野的分支,并將其命名為RFB_s模塊,其結(jié)構(gòu)如圖4所示。同時考慮到應(yīng)用在自動駕駛的目標檢測算法應(yīng)當由較高的檢測速度,所以使用串聯(lián)的小卷積替換大卷積來減少模型的參數(shù)量,以提高檢測速度。具體操作為:在第3條分支中,使用兩個并聯(lián)的3×3卷積替換原本的5×5卷積;在第4條分支中,使用1×7卷積和7×1卷積替換原本的7×7。4條分支的結(jié)果進行會連接并經(jīng)過一個1×1的卷積,然后與一條殘差邊作為輸入送入激活函數(shù)。殘差邊的作用是使輸入的圖像信號可以從底層直接傳播到高層,緩解過深的網(wǎng)絡(luò)導(dǎo)致的梯度發(fā)散。
圖3 感受野模塊結(jié)構(gòu)圖Fig.3 The architecture of receptive field block
圖4 感受野增強模塊結(jié)構(gòu)圖Fig.4 The architecture of receptive field block
如圖5所示,將改進的RFB_s模塊嵌入SSD模型,具體步驟如下。
圖5 感受野增強的SSD網(wǎng)絡(luò)模型Fig.5 SSD network model with RFB_s
(1)將FC7層進行一次上采樣,使其尺度與Conv4_3保持一致。
(2)在Conv4_3層后嵌入一個RFB_s模塊,再將FC7層與其連接,連接后的特征層再經(jīng)過一個RFB_s模塊得到Conv_Concat層。
(3)在FC7層后嵌入一個RFB_s模塊得到Conv_RFBs層。
(4)將Conv_Concat層和Conv_RFBs層輸入特征融合金字塔。
在卷積神經(jīng)網(wǎng)絡(luò)中,隨著卷積加深特征層增多,靠后的特征層擁有的深層語義信息更多,更適合表征外觀復(fù)雜的物體,靠前的特征層擁有的淺層語義信息更多,更適合表征外觀簡單的物體[18]。但是具有相似大小的對象的外觀可能完全不同,例如在小目標檢測中,交通信號燈和遠處的行人可能具有相當?shù)某叽?,而人的外觀要復(fù)雜得多。所以檢測信號燈需要淺層特征,檢測遠處的行人需要深層特征。因此實際檢測中不僅要考慮尺度層面還要考慮層級層面。
特征金字塔[21](feature pyramid networks,F(xiàn)PN)是一種優(yōu)秀的特征融合結(jié)構(gòu),其結(jié)構(gòu)如圖6所示。FPN將特征提取網(wǎng)絡(luò)中每個階段最后一層的輸出構(gòu)建金字塔,對金字塔高層的特征層逐層進行上采樣,并將尺度相同的特征層橫向連接起來,可以看出特征金字塔主要從尺度層面考慮。但特征金字塔結(jié)構(gòu)也存在不足,首先特征金字塔的主干網(wǎng)絡(luò)是為分類任務(wù)設(shè)計,對于目標檢測任務(wù)不一定非常適用,其次特征金字塔的每個特征層主要或僅從主干網(wǎng)絡(luò)的單層中提取,這意味它主要或僅包含單層信息。
圖6 特征金字塔結(jié)構(gòu)圖Fig.6 The architecture of feature pyramid network
因此引入多層級特征融合金字塔(multi-level feature pyramid network,MLFPN)。多層級特征融合金字塔由Zhao等[22]提出,該特征融合金字塔與FPN最大的不同在于結(jié)構(gòu)上兼顧尺度與層級兩個方面,特征層在輸入金字塔前會進行初步融合,并使用多個U形結(jié)構(gòu)進行連續(xù)的特征提取,形成不同層級、不同尺度的多個特征金字塔,最后融合成一個多層級多尺度的特征金字塔用于檢測。這樣能夠在FPN的基礎(chǔ)上,有效地將淺層特征和深層特征結(jié)合起來進行目標檢測。
1.3.1 特征融合模塊
為了提高不同尺度特征圖的融合效果,特征融合模塊(feature fusion module,F(xiàn)FM)融合不同尺度的特征圖,F(xiàn)FMv1將送入特征金字塔的兩個不同尺度的特征圖進行初步的融合,得到基礎(chǔ)特征層(base feature),因此會有一個上采樣的操作,將深度特征縮放到與淺層特征相同的尺度。首先將Conv4_3層和Fc7層的通道數(shù)都調(diào)整為1 024,然后對Fc7層進行一次上采樣,使其與Conv4_3層尺度一致,再使用Concatenate函數(shù)將兩者融合,融合輸出再通過一個RFB_s模塊進行感受野增強得到Conv_Concat層;接著使Fc7層通過一個RFB_s模塊進行感受野增強得到Conv_RFB層。將Conv_Concat層和Conv_RFBs層作為FFMv1模塊的輸入,得到基礎(chǔ)特征層。
FFMv2將FFMv1輸出的基本特征圖和上一個TUM模塊輸出的最大特征圖作為輸入,產(chǎn)生下一個TUM的融合特征圖。FFMv1和FFMv2的結(jié)構(gòu)如圖7所示。為了不過多增加計算量,因此輸入FFM模塊融合的特征層的尺度較小,但這樣會導(dǎo)致小目標檢測效果下降,因此沿用感受野增強的思想,在FFM模塊和TUM模塊之間嵌入RFB_s模塊,擴大輸入FFMv2模塊的特征層的感受野,增強對小目標的檢測效果。
圖7 特征融合模塊結(jié)構(gòu)圖Fig.3 The architecture of feature fusion module
1.3.2 增大感受野的U形模塊
減薄的U型模塊(thinned U-shape module,TUM))的結(jié)構(gòu)與FPN特征金字塔結(jié)構(gòu)類似,對輸入的特征層進行特征提取,即先對特征層用大小為3×3的卷積核下采樣,進行連續(xù)的特征壓縮,再用同樣大的卷積核連續(xù)上采樣,然后將尺度相同的特征層進行融合,得到6個不同尺度的有效特征層。與FPN特征金字塔結(jié)構(gòu)不同的是,TUM模塊在上采樣步驟之后添加一個1×1的卷積層和按元素求和的操作,可以增強學(xué)習能力并保持特征的平滑性。
但是在連續(xù)下采樣過程中由于圖形分辨率的降低會導(dǎo)致信息丟失,因此參照上述RFB模塊的思路,使用膨脹卷積代替常規(guī)卷積,增大特征層的感受野,讓下采樣輸出的卷積層包含更大范圍的信息,且使用膨脹卷積不會增加計算量,將替換后的TUM模塊稱為TUM_D模塊。TUM_D模塊結(jié)構(gòu)如圖8所示,其中紅色虛線框中為替換常規(guī)卷積的膨脹卷積。下采樣的常規(guī)卷積的卷積核大小為3×3,步長為2,替換為膨脹卷積后卷積核大小不變,步長為1,膨脹率為3。
圖8 感受野增大的U形模塊結(jié)構(gòu)圖Fig.8 Structure diagram of U-shaped module with enlarged receptive field
1.3.3 基于尺度的特征聚合模塊
基于尺度的特征聚合模塊(scale based feature aggregation module,SFAM)負責將TUM模塊輸出的多尺度特征層構(gòu)造多層級特征金字塔,構(gòu)造過程分為兩個階段。第一個階段是將相同尺度的特征層連接在一起,這樣得到的每個尺度的特征都包含多層級信息。第二個階段引入注意力模塊SE[23],通過兩個全連接層(Fc1,Fc2)實現(xiàn)注意力機制,進行各通道的注意力機制調(diào)整,判斷每個通道數(shù)應(yīng)有的權(quán)重,將特征集中在最有益的通道。SFAM模塊結(jié)構(gòu)如圖9所示。
圖9 基于尺度的聚合特征模塊Fig.9 The architecture of scale-wise feature aggregation module
實驗所使用的數(shù)據(jù)集為KITTI[24]數(shù)據(jù)集,KITTI數(shù)據(jù)集為常用的自動駕駛數(shù)據(jù)集,包含在不同天氣、環(huán)境和時間下采集的大量真實交通場景,分為8個類別,共計7 481張圖片,考慮到KITTI數(shù)據(jù)集部分類別數(shù)量少,且有的類別并不屬于所研究的對象,為了便于訓(xùn)練,將Car、Truck、Van合并為Car,將Person_siting、Pedestrian合并為Pedestrian,Cyclist單獨作為一類,并忽略掉Tram、Dontcare和Misc。實驗主要硬件配置為Inter(R)Core(TM)i5-8300HCPU@2.3GH處理器、GeForce GTX 1050Ti顯卡和16 G內(nèi)存,操作系統(tǒng)為Windows 11。深度學(xué)習框架為Tensorflow 1.13.2+Keras 2.1.5。優(yōu)化方式選擇批量梯度下降,每訓(xùn)練整個數(shù)據(jù)集一次對學(xué)習率進行一次調(diào)整,調(diào)整方式為指數(shù)衰減,根據(jù)TensorFlow官方文檔將衰減指數(shù)設(shè)置為為0.94,為了平衡訓(xùn)練時間與訓(xùn)練效果,參照文獻[9]將初始學(xué)習率設(shè)置為0.000 1,訓(xùn)練時期設(shè)置為300個epoch。
實驗分為兩個部分。第一部分是驗證感受野增強模塊(RFB_s)和多級特征金字塔(MLFPN)對目標檢測的影響,設(shè)計了消融實驗。第二部分是將本文模型與Faster R-CNN[3]、SSD[9]及其改進算法DSSD[10]、DDSDD[11]、FSSD[11]、RSSD[13]等主流目標檢測網(wǎng)絡(luò)進行訓(xùn)練和檢測效果對比。
使用平均精度(average precision,AP)和平均精度均值(mean average precision,mAP)對模型性能進行評估,AP是以精確度(precision,P)和召回率(recall,R)為坐標軸繪制的P-R曲線下的面積,mAP則是所有類別AP的平均值。精確度和召回率的計算公式如下。
(1)
(2)
(3)
式中:TP(true positives)為被正確分類的正樣本數(shù)量;FP(false positives)為被錯誤分類的正樣本數(shù)量;FN(false negatives)為被錯誤分類的負樣本數(shù)量。
首先進行的是消融實驗,目的是定量分析感受野增強模塊和多級特征金字塔在SSD網(wǎng)絡(luò)模型對小目標檢測效果的影響。取3類檢測目標的AP、交并比(intersection over union,IoU)為0.5時的平均精度均值(mAP)和幀率(frames per second,F(xiàn)PS)作為評價指標,消融實驗結(jié)果如表1所示。
由表1可知,將RFB_s模塊嵌入SSD網(wǎng)絡(luò)模型中,3個檢測類別的AP分別提高了1.58%、1.42%、2.54%,平均精度均值(mAP)由67.58%提高到70.12%,幀率降低了2.0 幀/s;在SSD網(wǎng)絡(luò)模型中加入MLFPN,mAP提高了4.6%,但模型更復(fù)雜,故幀率從33.2 幀/s下降到29.3 幀/s;在SSD網(wǎng)絡(luò)模型中同時加入RFB_s模塊和MLFPNN,即本文算法,mAP提高到73.59%,幀率下降了4.4 幀/s。由實驗結(jié)果可知,相較于原始SSD算法,本文算法在Car、Pedestrian、Cyclis這3個檢測類別上的檢測精度均有明顯提高,同時也兼顧了檢測速度。
表1 消融實驗結(jié)果Table 1 Results of ablation experiments
SSD模型與本文模型檢測效果對比如圖10所示,圖10(a)、圖10(c)、圖10(e)、圖10(g)為SSD模型檢測效果,圖10(b)、圖10(d)、圖10(f)、圖10(h)為本文模型檢測效果。圖10(a)和圖10(b)為同一數(shù)據(jù)集的一張圖片,本文模型相對SSD模型能夠檢測出遠處的行人和更多的騎行者;圖10(c)和圖10(d)為同一數(shù)據(jù)集的一張圖片,本文模型相對SSD模型成功檢測出遠處的行人;圖10(e)和圖10(f)為同一數(shù)據(jù)集的一張圖片,SSD模型漏檢了左邊兩位遠處的行人,而本文模型成功檢測;圖10(g)和圖10(h)為同一數(shù)據(jù)集的一張圖片,本文模型相較于SSD模型檢測了遠處的多輛汽車,而且對于被汽車遮擋的行人也成功檢測到。通過以上分析可知,本文提出的改進SSD模型相較于原始SSD模型,檢測出小目標的效果更好。
圖10 SSD模型與本文模型檢測效果對比圖Fig.10 Comparison of the detection of SSD model and the model proposed
第二個實驗是將Faster R-CNN、SSD、DDSSD、DSSD、FSSD、RSSD和本文算法進行對比,取三類檢測目標的AP值、IoU=0.5時的平均精度均值(mAP)和幀率(FPS)作為評價指標,性能對比實驗結(jié)果如表2所示。
如表2所示,與二階段算法Faster R-CNN相比,本文算法在3個檢測類別的AP上分別提升了2.92%、3.4%、5.4%,F(xiàn)PS提升了17.8 幀/s,說明本文算法在檢測精度與檢測速度上均優(yōu)于二階段算法;與SSD算法相比,本文算法在3個檢測類別的AP上分別提升了4.9%、3.66%、9.46%,證明感受野增強和多層級特征融合可以提升模型對小目標的檢測效果,但是由于結(jié)構(gòu)更復(fù)雜導(dǎo)致檢測速度略有下降;與SSD的改進算法DDSSD、RSSD、FSSD、DSSD相比,本文算法在3個檢測類別的AP上均有提升,綜合起來mAP分別提升了1.83%,3.03%,1.94%,2.64%,同時檢測速度也分別提高了5.0、4.7、0.5、18.5 幀/s,平均提高7.2 幀/s。通過以上分析可知,本文算法通過增強特征層的感受野和采用多層級特征融合結(jié)構(gòu),相較于其他SSD改進算法,對小目標的檢測效果的提升更好,并有更快的檢測速度,能夠運用于自動駕駛中的實時檢測。
表2 性能對比實驗結(jié)果Table 2 Results of performance comparison experiment
針對SSD算法應(yīng)用在自動駕駛領(lǐng)域時,在小目標檢測中易出現(xiàn)漏檢錯檢等問題,提出了改進SSD的小目標檢測算法。根據(jù)理論分析和實驗驗證,得出以下結(jié)論。
(1)對感受野模塊進行優(yōu)化,通過加入一條更大膨脹率的分支,擴大特征層的感受野,提高了特征層提取道路小目標特征的效果,對比SSD模型,檢測精度提高了2.54%。
(2)引入多層級特征金字塔,并在其中加入感受野增強模塊,從尺度和層級兩個方面利用淺層語言信息和深層語義信息,進一步提高道路小目標檢測效果,對比SSD模型,檢測精度提高了4.60%。
(3)在自動駕駛公開數(shù)據(jù)集KITTI上進行消融實驗和性能對比試驗,實驗結(jié)果表明所提出的兩個改進點對道路上小目標的檢測效果有明顯提升;與原始SSD算法相比,本文算法的檢測精度提高了6.01%;與SSD的其他改進算法相比,本文算法的mAP平均提升2.36%,F(xiàn)PS平均提高7.2 幀/s,達到27.9 幀/s,說明本文算法的檢測精度與檢測速度均更優(yōu)。
但是本文模型在檢測被遮擋的小目標中依然存在未能有效檢測的問題,以及模型的參數(shù)量還有進一步優(yōu)化的空間,后期將從主干網(wǎng)絡(luò)特征提取和模型剪枝兩方面進行分析,適當解決部分相關(guān)問題。