于 洋,王 晴
(沈陽理工大學(xué) 自動(dòng)化與電氣工程學(xué)院,沈陽 110159)
近年來,伴隨著科學(xué)技術(shù)的快速發(fā)展,無人車不僅在日常生活中可以輔助人們安全駕駛,在廢墟搜救、野外勘測(cè)、外星探索等軍事、科研的相關(guān)領(lǐng)域也得到了廣泛應(yīng)用[1]。無人車融合了計(jì)算機(jī)技術(shù)和機(jī)械工程等多個(gè)領(lǐng)域的先進(jìn)成果,應(yīng)用傳感器對(duì)周圍環(huán)境的檢測(cè)更是無人車多種應(yīng)用價(jià)值得以實(shí)現(xiàn)的基礎(chǔ)。
過去針對(duì)無人車障礙物檢測(cè)的研究中,應(yīng)用激光測(cè)距、超聲波、聲吶、紅外雷達(dá)、計(jì)算機(jī)視覺等多種傳感器去探測(cè)無人車周圍環(huán)境中的障礙物位置信息[2-3]。王俊研究了激光雷達(dá)傳感器和視覺傳感器相結(jié)合的障礙物檢測(cè)方法,克服了對(duì)障礙物形狀和高度要求較高的問題[4],但此算法需手動(dòng)操作才能對(duì)環(huán)境做出感知,不具備對(duì)室外障礙物的認(rèn)知功能。意大利帕爾馬大學(xué)團(tuán)隊(duì)研究的ARGO無人車,首次使用計(jì)算機(jī)視覺技術(shù)替代激光雷達(dá)實(shí)現(xiàn)自動(dòng)駕駛功能,證明了計(jì)算機(jī)視覺成像在無人車障礙物檢測(cè)領(lǐng)域的可行性[5],但此實(shí)驗(yàn)對(duì)光照環(huán)境的要求較高,在光照反射和光照快速變化的地區(qū),檢測(cè)效果不佳。王冠夫構(gòu)建了物體類別的強(qiáng)分類器識(shí)別模型[6],但此方法對(duì)圖片中提取到的語義特征信息較為單薄,系統(tǒng)的識(shí)別效率有待提高。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的延伸和突破,融合圖像和語義理解的深度學(xué)習(xí)目標(biāo)檢測(cè)算法也在眾多領(lǐng)域得到了廣泛應(yīng)用。本文提出一種基于DSSD(Deconvolutional Single Shot Detector)算法的室外障礙物檢測(cè)方法。通過無人車上搭載的單目視覺傳感器對(duì)周圍環(huán)境中的障礙物進(jìn)行記錄,利用深度學(xué)習(xí)方法,檢測(cè)視頻信息中的障礙物體,為無人車的可靠自主行駛提供保障。
SSD(Single Shot Multi-Box Detector)[7]算法屬于基于回歸類的目標(biāo)檢測(cè)算法,區(qū)別于區(qū)域候選類的目標(biāo)檢測(cè)算法。SSD算法采用回歸思想,利用不同卷積的特征圖進(jìn)行綜合,直接預(yù)測(cè)邊界框的類別和位置;該目標(biāo)檢測(cè)算法準(zhǔn)確率較高,檢測(cè)速度較快,可滿足實(shí)時(shí)的障礙物檢測(cè)需求,但在障礙物目標(biāo)較小時(shí),檢測(cè)效果較差。
SSD算法以VGG-16為基礎(chǔ),在數(shù)據(jù)集上做預(yù)訓(xùn)練后把網(wǎng)絡(luò)的fc6和fc7兩個(gè)全連接層替換為兩個(gè)卷積層,并在網(wǎng)絡(luò)后端增加4個(gè)尺寸逐漸減小的卷積特征層,在不同的特征圖內(nèi)進(jìn)行卷積,以達(dá)到多尺度檢測(cè)的目的。
SSD算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 SSD算法網(wǎng)絡(luò)結(jié)構(gòu)圖
SSD算法同時(shí)采用低層特征圖和高層特征圖進(jìn)行檢測(cè),在不同大小的特征圖中都有一系列固定大小的默認(rèn)框。在網(wǎng)絡(luò)訓(xùn)練階段,將這些默認(rèn)框和真實(shí)框進(jìn)行匹配,一個(gè)真實(shí)框可以匹配多個(gè)默認(rèn)框。SSD算法引入預(yù)測(cè)框來預(yù)測(cè)目標(biāo)物體的位置信息,通過損失層,計(jì)算真實(shí)值與預(yù)測(cè)值之間的誤差,進(jìn)而指導(dǎo)網(wǎng)絡(luò)的學(xué)習(xí)方向,其原理如圖2 所示。默認(rèn)框不需對(duì)應(yīng)每層卷積中實(shí)際的感受野,只需學(xué)習(xí)輸入圖像中特定區(qū)域和對(duì)象的特定尺寸。
圖2 檢測(cè)原理圖
若m為特征圖數(shù)目,Smin為最底層特征圖默認(rèn)框大小,Smax為最頂層特征圖默認(rèn)框大小,每個(gè)默認(rèn)框的大小和縱橫比的計(jì)算公式如式(1)所示。
(1)
(2)
式中α為調(diào)整置信損失和位置損失比例的權(quán)重,默認(rèn)設(shè)置為1。當(dāng)N=0時(shí),L=0。
Lloc的計(jì)算方式見式(3)。
Lloc(x,l,g)=
(3)
Lconf的計(jì)算方式見式(4)。
(4)
SSD算法利用多層特征圖來預(yù)測(cè)目標(biāo),但并未充分利用各個(gè)網(wǎng)絡(luò)層之間信息的結(jié)合。對(duì)于小目標(biāo)的檢測(cè),主要利用淺層的網(wǎng)絡(luò)層去匹配,然而淺層網(wǎng)絡(luò)的特征圖表征能力較弱,對(duì)于小目標(biāo)容易出現(xiàn)誤檢和漏檢現(xiàn)象。
為解決SSD算法在小目標(biāo)物體檢測(cè)上魯棒性較差的問題,提出以ResNet[8]網(wǎng)絡(luò)為基礎(chǔ),網(wǎng)絡(luò)結(jié)構(gòu)為∞型的DSSD[9]算法。
ResNet(深度殘差網(wǎng)絡(luò))是為解決網(wǎng)絡(luò)層加深訓(xùn)練集準(zhǔn)確率下降甚至難以訓(xùn)練的問題而提出的一種全新的網(wǎng)絡(luò)。ResNet由殘差塊構(gòu)建,通過將這些殘差塊堆積在一起,允許網(wǎng)絡(luò)層數(shù)盡可能的加深。殘差塊的信號(hào)傳播方式如式(5)所示。當(dāng)使用恒等映射作為跳躍連接及信號(hào)加合后的激活函數(shù)時(shí),前向、反向傳播的信號(hào)能直接從一個(gè)殘差塊傳遞到其它任意一個(gè)殘差塊。
yl=h(xl)+F(xl,Wl)
xl+1=f(yl)
(5)
式中:xl是第l個(gè)單元的輸入;xl+1是第l個(gè)單元的輸出,同時(shí)是第l+1個(gè)單元的輸入;W={Wl,k|1≤k≤K}為與第l個(gè)殘差單元相關(guān)的權(quán)重和偏差的集合,其中K是殘差單元內(nèi)部的層數(shù);F(xl,Wl)為網(wǎng)絡(luò)的殘差函數(shù);f(yl)為網(wǎng)絡(luò)的ReLU函數(shù);函數(shù)h(xl)為恒等映射。
殘差塊中使用ReLU函數(shù)作為激活函數(shù)。與其它線性或非線性函數(shù)相比,ReLU函數(shù)僅需要設(shè)置閾值,表達(dá)能力更強(qiáng),且處理方式簡(jiǎn)單。然而在訓(xùn)練網(wǎng)絡(luò)時(shí)使用ReLU 激活函數(shù),則非常容易導(dǎo)致訓(xùn)練中斷,需要選用較小的網(wǎng)絡(luò)學(xué)習(xí)率,但學(xué)習(xí)率過小則易使網(wǎng)絡(luò)陷入局部最優(yōu)。
本文使用一種縮放指數(shù)型線性單元(SeLU)[10]作為殘差塊的激活函數(shù)。SeLU引進(jìn)了自歸一化屬性,可自動(dòng)收斂到零均值和單位方差,主要使用一個(gè)函數(shù)g映射前后兩層神經(jīng)網(wǎng)絡(luò)的均值和方差以達(dá)到歸一化的效果。SeLU函數(shù)定義如公式(6)所示。
(6)
SeLU函數(shù)具有以下特點(diǎn):
(1)可以訓(xùn)練多層的深度神經(jīng)網(wǎng)絡(luò);
(2)采用強(qiáng)正則化;
(3)令神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)更具魯棒性。
由于殘差塊對(duì)恒映射的學(xué)習(xí)效率較高,在大型神經(jīng)網(wǎng)絡(luò)中增加殘差塊,網(wǎng)絡(luò)的性能表現(xiàn)并不會(huì)受到影響。相反,加入了殘差塊的神經(jīng)網(wǎng)絡(luò)在隱層單元中可以學(xué)習(xí)到更多的特征信息,與不含殘差塊的深度普通網(wǎng)絡(luò)相比更能提升學(xué)習(xí)效率。
根據(jù)VGG-16網(wǎng)絡(luò)中卷積層的特點(diǎn),以SeLU作為激活函數(shù)的ResNet,神經(jīng)網(wǎng)絡(luò)層的解決率和深度值如表1和表2所示。
DSSD算法和核心思想成為使用ResNet代替VGG-16作為網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ),并在其后增添一系列卷積層與反卷積層,通過跳躍鏈接使淺層特征圖擁有更好的表征能力,提高算法對(duì)小目標(biāo)物體的魯棒性。DSSD算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
表1 VGG基礎(chǔ)網(wǎng)絡(luò)
表2 ResNet殘差網(wǎng)絡(luò)
淺層網(wǎng)絡(luò)的特征圖作為鏈接信息,通過一系列大小不一的反卷積模型和前端編碼部分的特征圖進(jìn)行融合,形成反卷積模塊,最后通過預(yù)測(cè)模塊進(jìn)行預(yù)測(cè)??紤]到檢測(cè)速度的原因,本文刪除了DSSD算法的預(yù)測(cè)模塊,使用原SSD算法的方法,對(duì)目標(biāo)的類別和位置直接預(yù)測(cè)。
圖3 DSSD算法網(wǎng)絡(luò)結(jié)構(gòu)圖
DSSD算法以一組固定數(shù)值比例作為維度寬高比生成預(yù)測(cè)框,即使在網(wǎng)絡(luò)的訓(xùn)練過程中會(huì)根據(jù)輸入數(shù)據(jù)樣本進(jìn)行不斷調(diào)整,得到的預(yù)測(cè)框維度也往往不具有足夠的代表性。本文根據(jù)YOLOv2[11]計(jì)算固定框的長(zhǎng)寬維度值,使用K均值聚類實(shí)驗(yàn)[12],并按照公式(7)的寬高比計(jì)算方式,獲取更適合網(wǎng)絡(luò)訓(xùn)練的預(yù)測(cè)框維度值。
(7)
選取聚類中心的個(gè)數(shù)K1=5,以PASCAL VOC中車、人、自行車三類數(shù)據(jù)集的目標(biāo)框作為初始數(shù)據(jù)輸入,實(shí)驗(yàn)得到的預(yù)測(cè)框比例如表3所示。
表3 預(yù)測(cè)框比例值
綜合各類別的預(yù)測(cè)框聚類結(jié)果,使用(7/2,2,3/2,1,1/2,1/4)作為DSSD算法的預(yù)測(cè)框?qū)捀弑取?/p>
實(shí)驗(yàn)硬件配置如下:Intel Xeon E5-1603 v4處理器、2×GeForce GTX1080顯卡,32GBRAM的服務(wù)器。軟件環(huán)境為Ubuntu16.04系統(tǒng)。
訓(xùn)練樣本選自三個(gè)部分,分別為PASCAL VOC數(shù)據(jù)集中帶有汽車、人、自行車的樣本圖片;校園室外實(shí)景拍攝;及為解決視頻檢測(cè)準(zhǔn)確率和樣本不足的問題而產(chǎn)生的合成樣本數(shù)據(jù)。自標(biāo)定標(biāo)簽后,按照正負(fù)樣本3∶1的比例輸入到DSSD網(wǎng)絡(luò)框架中進(jìn)行訓(xùn)練。
為提高算法的準(zhǔn)確率,實(shí)驗(yàn)采用更改學(xué)習(xí)率的方式對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。由于初始的隨機(jī)權(quán)重和最優(yōu)值差距較大,實(shí)驗(yàn)初期由較大學(xué)習(xí)率開始訓(xùn)練,并在訓(xùn)練過程中不斷下調(diào)學(xué)習(xí)率大小,使神經(jīng)網(wǎng)絡(luò)的權(quán)重更新更為精細(xì)。
觀測(cè)網(wǎng)絡(luò)的損失函數(shù)并計(jì)算其變化率,以學(xué)習(xí)率為x軸,以損失函數(shù)變化率為y軸繪制變化曲線,移動(dòng)平均線做平緩化處理后的曲線如圖4所示。
圖4 損失函數(shù)變化率
由圖4可知,學(xué)習(xí)率為0.01這個(gè)位置時(shí)損失函數(shù)下降最快。以0.01作為初始學(xué)習(xí)率對(duì)樣本進(jìn)行訓(xùn)練,網(wǎng)絡(luò)損失函數(shù)如圖5所示。
圖5 損失函數(shù)
由圖5可知,隨著迭代次數(shù)的增加,損失函數(shù)值不斷趨近于0。實(shí)驗(yàn)表明,本文設(shè)計(jì)的網(wǎng)絡(luò)模型訓(xùn)練結(jié)果良好。
在多類別目標(biāo)檢測(cè)算法中,性能的重要參數(shù)為精確度和召回率。本文根據(jù)召回率和精確度繪制的曲線面積的平均值計(jì)算出均值平均度(meanAveragePrecision,mAP)做為目標(biāo)檢測(cè)算法的評(píng)價(jià)指標(biāo)。其公式如式(8)所示。
(8)
輸入尺寸為512×512的圖片樣本進(jìn)行測(cè)試,選取0.5作為置信度閾值,比較DSSD算法與其它目標(biāo)檢測(cè)算法的mAP值,結(jié)果如表4所示。
根據(jù)表4中數(shù)據(jù)可知,以FPS的大小評(píng)估算法的檢測(cè)速度,可知Faster-RCNN不能滿足無人車障礙物檢測(cè)系統(tǒng)所需的實(shí)時(shí)性;以mAP值評(píng)估算法的檢測(cè)精度,可知表4目標(biāo)檢測(cè)算法中DSSD算法檢測(cè)精度最高,且在任一類別的目標(biāo)檢測(cè)上,DSSD算法均優(yōu)于其它算法。當(dāng)FPS滿足20時(shí)即可保持畫面的流暢[13],故DSSD算法可以保證無人車障礙物檢測(cè)系統(tǒng)的檢測(cè)準(zhǔn)確率和實(shí)時(shí)性需要。
表4 各目標(biāo)檢測(cè)算法對(duì)比
為進(jìn)一步驗(yàn)證本文的無人車障礙物檢測(cè)系統(tǒng)的有效性,使用輸出分辨率為1280×720的960mm波攝像頭在室外環(huán)境中拍攝一段視頻,對(duì)視頻中的障礙物體進(jìn)行檢測(cè),效果如圖6所示。
圖6 視頻檢測(cè)結(jié)果
檢測(cè)結(jié)果表明,除去局部出現(xiàn)的嚴(yán)重遮擋以及曝光過度產(chǎn)生的圖像清晰度較差的問題之外,基本都能檢測(cè)到場(chǎng)景中障礙物體。多次實(shí)驗(yàn)結(jié)果表明,本文的無人車障礙物檢測(cè)系統(tǒng)對(duì)室外障礙物的檢測(cè)準(zhǔn)確率高達(dá)90%以上。
針對(duì)無人車自主行進(jìn)過程中對(duì)周圍障礙物檢測(cè)率較差的問題,提出了一種基于DSSD算法的室外障礙物檢測(cè)方法,并通過網(wǎng)絡(luò)框架結(jié)構(gòu)、預(yù)選框生成等方法提高系統(tǒng)對(duì)障礙物的檢測(cè)準(zhǔn)確率。實(shí)驗(yàn)表明,與其它障礙物檢測(cè)方法相比,DSSD算法具有更好的檢測(cè)準(zhǔn)確率和魯棒性。