裴嘉欣,孫韶媛,王宇嵐,李大威,黃 榮
(1.東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620;2.東華大學(xué) 數(shù)字化紡織服裝技術(shù)教育部工程研究中心,上海 201620)
近年來,無人駕駛技術(shù)在理論方法與關(guān)鍵技術(shù)方面都取得了重大突破[1]。在無人駕駛技術(shù)中,環(huán)境感知是最為關(guān)鍵的一環(huán),無人車的環(huán)境感知研究目前多見于可見光領(lǐng)域,夜視領(lǐng)域研究較少。在夜間條件下,有效的環(huán)境感知技術(shù)可以保障無人車夜間行駛的安全性[2]。夜間獲取圖像需借助紅外攝像機(jī)[3],獲取的是場(chǎng)景的溫度分布,紅外圖像紋理信息少,圖像較模糊[4],因此夜間的無人車環(huán)境感知相比可見光條件下的無人車環(huán)境感知難度更大。夜間無人車環(huán)境感知中的核心問題之一是行人及車輛檢測(cè),由于夜間道路能見度低,利用車載紅外對(duì)夜間行人,車輛進(jìn)行目標(biāo)檢測(cè),能夠擴(kuò)展無人車在夜間的識(shí)別能力,有效幫助無人車對(duì)障礙物及時(shí)做出避讓決策。
基于視覺的目標(biāo)檢測(cè)算法[5]可以讓無人車在不使用昂貴的雷達(dá)傳感器情況下獲取實(shí)時(shí)的場(chǎng)景信息,幫助無人車快速做出相應(yīng)決策。整體而言,目前處于技術(shù)前沿的目標(biāo)檢測(cè)算法主要分為兩類:一類例如Faster R-CNN(快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò))[6],采用兩級(jí)式的檢測(cè)框架;另一類例如YOLO(you only lock once)網(wǎng)絡(luò)[7],采用單級(jí)式的檢測(cè)框架。YOLO網(wǎng)絡(luò)改進(jìn)了Faster R-CNN使用區(qū)域建議網(wǎng)絡(luò)(region proposal network,RPN)生成候選區(qū)域,再用分類算法對(duì)候選區(qū)域分類后得到目標(biāo)邊界的方法,改用整張圖像作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸邊界框的位置和邊界框所屬的類別。YOLO網(wǎng)絡(luò)遵循端到端訓(xùn)練和實(shí)時(shí)檢測(cè),檢測(cè)速度較Faster R-CNN大幅提升,解決了目前基于深度學(xué)習(xí)目標(biāo)檢測(cè)中的速度問題,真正實(shí)現(xiàn)實(shí)時(shí)性。
周邊車輛的行駛方向?qū)椭鸁o人車感知周邊環(huán)境變化具有重要意義。如果將目標(biāo)檢測(cè)、周邊車輛行駛方向信息以及車輛的距離和速度信息相結(jié)合,可以幫助無人車根據(jù)周邊車輛行駛信息判斷車輛的行駛意圖。如何獲取周邊車輛的方向信息并結(jié)合目標(biāo)的深度信息得到速度信息,從而判斷車輛行駛意圖,幫助無人車對(duì)目標(biāo)車輛及時(shí)做出反應(yīng)是難點(diǎn)。
本文提出一種改進(jìn)的YOLOv3網(wǎng)絡(luò)對(duì)無人車夜間獲取的紅外圖像進(jìn)行目標(biāo)檢測(cè),并將紅外圖像中車輛角度信息加入到Y(jié)OLOv3網(wǎng)絡(luò)[8]邊界框位置信息中,實(shí)現(xiàn)周邊車輛角度預(yù)測(cè),同時(shí)結(jié)合目標(biāo)的深度信息得到周邊車輛的速度預(yù)測(cè),從而對(duì)周邊車輛行駛意圖作出判斷,該網(wǎng)絡(luò)具有端到端的特點(diǎn),保證實(shí)時(shí)性的同時(shí)準(zhǔn)確性性能良好。
本文對(duì)YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),實(shí)現(xiàn)目標(biāo)檢測(cè)和周邊車輛角度預(yù)測(cè),并引入深度估計(jì)網(wǎng)絡(luò)[9],與目標(biāo)檢測(cè)的結(jié)果結(jié)合,得到周邊車輛的距離和速度信息。
YOLO網(wǎng)絡(luò)整個(gè)系列都采用一步式(one stage)的檢測(cè)方法[10],整體實(shí)現(xiàn)框架如圖1所示。YOLO網(wǎng)絡(luò)結(jié)構(gòu)簡單,速度非??欤倪M(jìn)了Faster R-CNN將錯(cuò)誤背景作為感興趣區(qū)域的情況。但網(wǎng)絡(luò)對(duì)小物體檢測(cè)準(zhǔn)確性有待提高,定位精度不高。從原理上看,小物體的像素較小,卷積操作后,特征經(jīng)過最后一層卷積后輸出層很難識(shí)別。YOLOv3網(wǎng)絡(luò)針對(duì)這個(gè)問題,結(jié)合YOLOv2網(wǎng)絡(luò)[11]進(jìn)行改進(jìn),加入了特征金字塔網(wǎng)絡(luò)[12](feature pyramid network, FPN),使網(wǎng)絡(luò)在小物體的識(shí)別上性能大幅提升。
圖1 YOLO框架示意圖Fig.1 YOLO network structure
YOLOv2網(wǎng)絡(luò)用Darknet-19網(wǎng)絡(luò)代替YOLO網(wǎng)絡(luò)中的VGG-16網(wǎng)絡(luò)[13]。VGG-16是常用的特征提取網(wǎng)絡(luò),作為分類網(wǎng)絡(luò),它準(zhǔn)確率高,但十分復(fù)雜,計(jì)算量非常龐大。Darknet-19網(wǎng)絡(luò)下采樣后將卷積的通道數(shù)翻倍,提取特征后再使用1×1和3×3的卷積和交替操作,最后使用平均-池化進(jìn)行預(yù)測(cè),有效減少計(jì)算次數(shù)。YOLO網(wǎng)絡(luò)將整幅圖像劃分成S×S個(gè)網(wǎng)格,每個(gè)網(wǎng)格預(yù)測(cè)一個(gè)類別,雖然減少了計(jì)算量提升了速度,但這并不合理,YOLOv2網(wǎng)絡(luò)使每個(gè)邊界框都預(yù)測(cè)一個(gè)類別,實(shí)現(xiàn)解耦。YOLOv2網(wǎng)絡(luò)采用Faster R-CNN中目標(biāo)Anchor boxes的思想,F(xiàn)aster R-CNN是在每個(gè)位置上手動(dòng)選取9個(gè)不同比例的Anchor boxes的方法,而YOLOv2網(wǎng)絡(luò)通過K-Means聚類方法得出Anchor模板,確定Anchor boxes的個(gè)數(shù)和比例,最后在網(wǎng)格的周圍生成幾個(gè)一定比例的邊框,網(wǎng)絡(luò)輸出邊界框的計(jì)算公式為
bx=σ(x)+cx
(1)
by=σ(y)+cy
(2)
bw=pwew
(3)
bh=pheh
(4)
式中:bx為邊界框中的偏移量;σ(x)、σ(y)為某個(gè)網(wǎng)格左上角的偏移量經(jīng)過σ函數(shù)轉(zhuǎn)化為[0,1]區(qū)間的值;cx、cy為網(wǎng)格左上角的坐標(biāo),均是單位為1的值;by為邊界框中的偏移量;bw為邊界框的寬度;pw、ph分別為Anchor boxes的寬和高;ew為網(wǎng)絡(luò)輸出值w的指數(shù)運(yùn)算;bh為邊界框的高度;eh為網(wǎng)絡(luò)輸出值h的指數(shù)運(yùn)算。最終使目標(biāo)檢測(cè)在保持速度的同時(shí)精度與Faster R-CNN持平。
針對(duì)小物體的識(shí)別問題,YOLOv3網(wǎng)絡(luò)采用FPN方法,將圖片經(jīng)過第K次卷積操作后得到的特征圖復(fù)制1份,第1份特征圖接著進(jìn)行M次卷積操作,得到第1個(gè)輸出層,用來檢測(cè)大物體。將第1份特征圖進(jìn)行M次卷積操作得到的特征圖上采樣操作后,與復(fù)制的第2份特征圖合并為另一組特征圖,再進(jìn)行N次卷積操作后,得到第2個(gè)輸出層,用來檢測(cè)中等大小物體。最后將第2份特征圖進(jìn)行M次卷積操作得到的特征圖上采樣操作后,與復(fù)制的第3份特征圖合并為第3組特征圖,再進(jìn)行L次卷積操作后,得到第3個(gè)輸出層用來檢測(cè)小物體。
本文提出一種改進(jìn)YOLOv3網(wǎng)絡(luò),采用端到端的檢測(cè)方法,在檢測(cè)網(wǎng)絡(luò)的基礎(chǔ)上增加多尺度預(yù)測(cè),采用3個(gè)尺度分別負(fù)責(zé)預(yù)測(cè)不同大小的物體,并將車輛角度信息加入到Y(jié)OLOv3網(wǎng)絡(luò)邊界框位置信息中,整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示(彩圖見電子版)。
圖2 改進(jìn)的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Improved YOLOv3network structure
整幅圖像劃分成S×S個(gè)網(wǎng)格,將紅外圖像中車輛角度信息加入到Y(jié)OLOv3網(wǎng)絡(luò)邊界框位置信息中,使用Anchor預(yù)測(cè)類別和坐標(biāo),每個(gè)網(wǎng)格使用K-Means聚類得出Anchor boxes的比例,得到9個(gè)聚類中心,將其按照大小均分給3種尺度。不同尺度的大小負(fù)責(zé)不同尺度物體的檢測(cè),通過將不同尺度的特征圖進(jìn)行融合,可以使得網(wǎng)絡(luò)學(xué)習(xí)更有意義的語義信息,并添加一些卷積層提取圖像的深層特征。用大尺度負(fù)責(zé)檢測(cè)小物體,小尺度負(fù)責(zé)檢測(cè)大物體,可以有效解決網(wǎng)絡(luò)中小目標(biāo)檢測(cè)不好的問題,同時(shí)提升速度。
每個(gè)網(wǎng)格生成B個(gè)邊界框,每個(gè)邊界框的預(yù)測(cè)值增加角度信息,變?yōu)槲恢眯畔?x,y,w,h)、角度α和置信度(confidence)。(x,y)表示邊界框相對(duì)于網(wǎng)格中心的的坐標(biāo),(w,h)是相對(duì)于整張圖像的高度和寬度。角度α代表周邊車輛的角度,是以車輛邊界框中心水平向右為零度,逆時(shí)針角度變大,旋轉(zhuǎn)一圈為360°。角度α定義如圖3所示。
圖3 周邊車輛角度定義圖Fig.3 Angle definition of surrounding vehicles
根據(jù)特征提取網(wǎng)絡(luò)Darknet-53得到類別信息,當(dāng)類別為車時(shí),給出預(yù)測(cè)車輛的角度信息和車輛邊界框,當(dāng)類別為行人時(shí),給出目標(biāo)行人邊界框。具體表示如(5)~(6)式所示:
C=car, angle=[0,1]
(5)
C=person, angle=-1
(6)
當(dāng)類別C判定為車(car)時(shí),(5)式中的角度值(angle)根據(jù)車輛角度預(yù)測(cè)的定義,將預(yù)測(cè)得到的0~1之間的值轉(zhuǎn)換為角度值α,計(jì)算公式如(7)式所示:
α=angle×360°
(7)
當(dāng)類別C判定為行人(person)時(shí),角度值(angle)預(yù)測(cè)值為-1。
本文利用基于卷積-反卷積神經(jīng)網(wǎng)絡(luò)[14]的深度估計(jì)算法對(duì)紅外圖像進(jìn)行深度估計(jì),其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示(彩圖見電子版)。
圖4 卷積-反卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Convolution-deconvolution neural network structure
該網(wǎng)絡(luò)結(jié)構(gòu)采用去掉全連接層的VGG-16卷積網(wǎng)絡(luò)作為特征提取網(wǎng)路,提取紅外圖像的深層特征,并采用反卷積網(wǎng)絡(luò)將得到的特征還原到原圖相同的大小,在卷積-反卷積網(wǎng)絡(luò)后加上一層分類層從而得到每個(gè)像素點(diǎn)所屬類別的概率,概率特征圖中概率最大值所屬的類別即為像素點(diǎn)所屬類別。該網(wǎng)絡(luò)具有端到端的優(yōu)點(diǎn),能夠?qū)崟r(shí)估計(jì)出紅外圖像的深度信息,并且根據(jù)(8)式將像素的分類結(jié)果轉(zhuǎn)化成深度數(shù)據(jù),從而得到深度估計(jì)結(jié)果。
dp=exp(Xi·k+lndmin)
(8)
式中:Xi表示紅外圖像X中第i個(gè)像素點(diǎn)的標(biāo)簽:k表示類別數(shù)量:dmin表示最小的深度:dp表示深度值。
本文將深度估計(jì)結(jié)果與目標(biāo)檢測(cè)的結(jié)果進(jìn)行結(jié)合,根據(jù)深度估計(jì)圖像中像素點(diǎn)的明暗變化判斷目標(biāo)的遠(yuǎn)近。無人車前方的物體距離越遠(yuǎn),深度估計(jì)圖像中物體對(duì)應(yīng)的像素點(diǎn)越暗。將目標(biāo)檢測(cè)得到的物體邊界框坐標(biāo)與深度估計(jì)圖像中相應(yīng)像素點(diǎn)坐標(biāo)對(duì)應(yīng),得到相應(yīng)目標(biāo)的距離。
本文算法使用Caffe框架[15],實(shí)驗(yàn)的軟硬件配置詳見表1。
表1 實(shí)驗(yàn)配置
本實(shí)驗(yàn)圖像由實(shí)驗(yàn)室載有紅外攝像頭和毫米波雷達(dá)的無人車在夜晚拍攝所得,包括紅外圖像和對(duì)應(yīng)的雷達(dá)數(shù)據(jù),其中訓(xùn)練集為8 000張紅外圖像及其對(duì)應(yīng)的由雷達(dá)數(shù)據(jù)轉(zhuǎn)換的真實(shí)深度圖像。紅外圖像測(cè)試集1 500張。
通過標(biāo)記工具LabelImg將訓(xùn)練集中的紅外圖像中包含的行人及車輛進(jìn)行真實(shí)目標(biāo)位置標(biāo)注,并使用Python腳本進(jìn)行車輛的角度標(biāo)定,得到樣本文件后將其輸入改進(jìn)的YOLOv3網(wǎng)絡(luò)進(jìn)行迭代訓(xùn)練,模型收斂后輸入測(cè)試圖像得到目標(biāo)檢測(cè)與周邊車輛角度預(yù)測(cè)的結(jié)果。將訓(xùn)練圖像與對(duì)應(yīng)真實(shí)的深度信息輸入深度估計(jì)模型,進(jìn)行迭代訓(xùn)練,輸入測(cè)試圖像得到深度估計(jì)圖像,之后將目標(biāo)檢測(cè)的結(jié)果與深度估計(jì)結(jié)果結(jié)合,得到周邊車輛的距離和速度信息。實(shí)驗(yàn)流程如圖5所示。在訓(xùn)練過程中,設(shè)置基本學(xué)習(xí)率為0.000 1,迭代次數(shù)為60 000,耗時(shí)約5 h。
圖5 實(shí)驗(yàn)流程圖Fig.5 Flow chart of experiment
將測(cè)試集輸入到訓(xùn)練好的模型中,得到目標(biāo)檢測(cè)與周邊車輛角度預(yù)測(cè)的結(jié)果,如圖6所示(彩圖見電子版)。可以看出本文的算法能夠準(zhǔn)確檢測(cè)出目標(biāo)和車輛的角度。
使用傳統(tǒng)的HOG+AdaBoost算法(方向梯度直方圖)[16]、Fast R-CNN算法、Faster R-CNN算法、YOLOv1、YOLOv2以及本文算法在測(cè)試集中進(jìn)行測(cè)試,并對(duì)不同算法結(jié)果進(jìn)行了對(duì)比,結(jié)果如表2所示。從表2的對(duì)比結(jié)果來看,由于傳統(tǒng)機(jī)器學(xué)習(xí)算法的特征表示能力不強(qiáng),其在檢測(cè)速度和正確率上都遠(yuǎn)低于深度學(xué)習(xí)算法。而兩級(jí)檢測(cè)算法如Fast R-CNN、Faster R-CNN算法采用候選區(qū)域提取算法生成大量潛在邊界框,后采用分類算法對(duì)候選區(qū)域分類后得到目標(biāo)邊界。該類算法的準(zhǔn)確率較高,但是速度較慢。YOLO系列算法通過直接在輸出層回歸邊界框的位置和邊界框所屬的類別,在保證準(zhǔn)確性的同時(shí),極大地提高了目標(biāo)檢測(cè)的速度。本文改進(jìn)的YOLOv3網(wǎng)絡(luò)能夠進(jìn)一步提升目標(biāo)檢測(cè)的準(zhǔn)確率,同時(shí)預(yù)測(cè)目標(biāo)車輛的方向信息。
表2 不同算法結(jié)果對(duì)比
將相同的測(cè)試集輸入到訓(xùn)練好的深度估計(jì)模型參數(shù)中,得到深度估計(jì)的結(jié)果,如圖7所示。
圖6 目標(biāo)檢測(cè)與周邊車輛角度預(yù)測(cè)結(jié)果Fig.6 Prediction results target detection and surrounding vehicle angle
圖7 深度估計(jì)結(jié)果Fig.7 Depth estimation results
將圖6目標(biāo)檢測(cè)結(jié)果和圖7深度估計(jì)結(jié)果融合,對(duì)于目標(biāo)檢測(cè)中的車輛位置,找到其在深度圖像中對(duì)應(yīng)的位置,平均深度計(jì)算公式如(9)式所示。
(9)
其中:di表示第i個(gè)車輛的深度值;xi、yi分別是邊界框左上角的坐標(biāo);wi、hi分別表示邊界框的寬和高;dp表示深度圖像中邊界框的深度值。
利用(9)式計(jì)算的目標(biāo)車輛的深度值,即可計(jì)算目標(biāo)車輛的實(shí)時(shí)速度,(10)式給出了計(jì)算方法:
(10)
本文通過回歸模型得到目標(biāo)車輛的方向和速度,使用平均誤差指標(biāo)作為主要衡量指標(biāo)。車輛方向誤差如(11)式所示:
(11)
(12)
針對(duì)測(cè)試集中的紅外圖像,本文計(jì)算出測(cè)試集的車輛角度和速度誤差,如表3所示。
表3 不同算法的車輛角度和速度誤差
從表3以及表2中的數(shù)據(jù)可以看出,由于本文所提出的改進(jìn)的YOLOv3網(wǎng)絡(luò)具有更強(qiáng)的特征表示能力,能夠更好地反映紅外圖像的特性,因此取得了更好的目標(biāo)檢測(cè)效果、車輛角度以及速度預(yù)測(cè)效果。
本文將改進(jìn)了的YOLOv3網(wǎng)絡(luò)應(yīng)用于無人車夜間環(huán)境感知,將夜間紅外圖像中周邊車輛角度信息加入到Y(jié)OLOv3網(wǎng)絡(luò)邊界框位置信息中,并將深度估計(jì)網(wǎng)絡(luò)與改進(jìn)的YOLOv3網(wǎng)絡(luò)相結(jié)合,對(duì)周邊車輛行駛意圖做出判斷,實(shí)現(xiàn)周邊車輛角度、距離和速度信息預(yù)測(cè)。該改進(jìn)YOLOv3網(wǎng)絡(luò)具有端到端的特點(diǎn),輸入一張圖像直接預(yù)測(cè)出目標(biāo)信息耗時(shí)0.04 s,幫助無人車感知周邊環(huán)境,大幅提升速度的同時(shí)加強(qiáng)了對(duì)小目標(biāo)物體的檢測(cè),能夠有效保證了預(yù)測(cè)的正確性和實(shí)時(shí)性。