王玉龍 裴 鋒 劉文如 閆春香 周衛(wèi)林 李 智
1.廣州汽車集團(tuán)股份有限公司汽車工程研究院,廣州,510641 2.湖南大學(xué)汽車車身先進(jìn)設(shè)計(jì)制造國家重點(diǎn)實(shí)驗(yàn)室,長沙,410082
傳統(tǒng)規(guī)則式自動(dòng)駕駛系統(tǒng)將自動(dòng)駕駛過程劃分為感知、決策、規(guī)劃以及控制執(zhí)行等子任務(wù)[1-2],其優(yōu)勢是算法結(jié)構(gòu)清晰且可靠性高,但由于汽車在行駛過程中需要面臨非常復(fù)雜的行駛環(huán)境,僅依靠人為編寫規(guī)則很難滿足高級(jí)別自動(dòng)駕駛對(duì)決策和規(guī)劃的開發(fā)需求。近年來,深度神經(jīng)網(wǎng)絡(luò)算法性能的大幅提升給自動(dòng)駕駛帶來了全新的開發(fā)思路,深度神經(jīng)網(wǎng)絡(luò)算法已逐漸應(yīng)用于自動(dòng)駕駛感知、決策以及規(guī)劃等任務(wù)中。
深度神經(jīng)網(wǎng)絡(luò)對(duì)自動(dòng)駕駛感知能力的提升已經(jīng)得到了業(yè)界普遍認(rèn)可[3-4],但在決策及規(guī)劃任務(wù)中的應(yīng)用仍處于研究階段,其中一個(gè)重要的分支是研究擬人化自動(dòng)駕駛決策。擬人化自動(dòng)駕駛決策是通過建立深度神經(jīng)網(wǎng)絡(luò)模型來學(xué)習(xí)人類的駕駛行為,直接由傳感器信息映射到轉(zhuǎn)向、加速以及制動(dòng)等車輛控制信號(hào),不需要人為編寫大量的行駛規(guī)則,只需要提供足夠多的訓(xùn)練數(shù)據(jù),系統(tǒng)就能自動(dòng)學(xué)習(xí)到不同場景下的駕駛能力。BOJARSKI等[5-6]基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)建立了從單幀圖像映射到車輛轉(zhuǎn)向盤轉(zhuǎn)角的端到端擬人化自動(dòng)駕駛決策模型,其測試結(jié)果表明,該模型在多種測試工況下均可獲得良好的車道保持效果;CHOWDHURI等[7]在跟車、換道、轉(zhuǎn)彎以及停車等不同場景下設(shè)計(jì)了不同的CNN模型,通過不同CNN模型的切換使得自動(dòng)駕駛系統(tǒng)對(duì)多場景下的轉(zhuǎn)向盤轉(zhuǎn)角和速度均能較好的預(yù)測;CODEVILLA等[8]將CNN層與不同的全連接網(wǎng)絡(luò)(fully connected networks,FCN)分支結(jié)合,完成了導(dǎo)航功能的開發(fā)。上述CNN模型并未考慮自動(dòng)駕駛過程中涉及的時(shí)序問題,而長短期記憶(long short-term memory,LSTM)網(wǎng)絡(luò)模型擅長解決時(shí)序問題。CHI等[9]采用CNN+LSTM的網(wǎng)絡(luò)模型,通過輸入圖片序列對(duì)轉(zhuǎn)向盤轉(zhuǎn)角進(jìn)行了預(yù)測,該模型相比文獻(xiàn)[5]設(shè)計(jì)的模型更加穩(wěn)定和有效;ERAQI等[10]設(shè)計(jì)了卷積式長短期記憶(convolutional long short-term memory,C-LSTM)網(wǎng)絡(luò)模型,其基本結(jié)構(gòu)與CNN+LSTM模型相似,但相比于一般的CNN模型,所設(shè)計(jì)模型的轉(zhuǎn)向盤轉(zhuǎn)角均方根誤差減小了35%;YANG等[11]構(gòu)建了基于CNN+LSTM的多模態(tài)多任務(wù)模型,數(shù)據(jù)集測試效果顯示該模型可以同時(shí)準(zhǔn)確地預(yù)測轉(zhuǎn)向盤轉(zhuǎn)角和速度。此外,許多研究為了提高模型的預(yù)測能力,在網(wǎng)絡(luò)訓(xùn)練過程中加入了輔助任務(wù)。XU等[12]通過加入道路分割的輔助任務(wù)來對(duì)駕駛員的駕駛意圖進(jìn)行預(yù)測;CHEN等[13]通過CNN模型識(shí)別出自動(dòng)駕駛過程中的關(guān)鍵環(huán)境參數(shù),并將此參數(shù)作為網(wǎng)絡(luò)輸入來進(jìn)行自動(dòng)駕駛決策算法的設(shè)計(jì)。
目前擬人化自動(dòng)駕駛決策研究主要側(cè)重于單向控制或簡單任務(wù)的開發(fā)(如進(jìn)行單獨(dú)的橫向控制或縱向控制),對(duì)復(fù)雜多任務(wù)下的算法研究比較缺乏。若采用單一網(wǎng)絡(luò)對(duì)自動(dòng)駕駛決策軌跡進(jìn)行預(yù)測,則無法滿足駕駛指令的輸入(如在同一個(gè)路口,導(dǎo)航指令會(huì)要求車輛進(jìn)行左轉(zhuǎn)、右轉(zhuǎn)或者直行),而且在某些場景下會(huì)導(dǎo)致訓(xùn)練標(biāo)簽之間發(fā)生相互矛盾(如車輛前方有障礙物時(shí),可以選擇跟車或者繞過障礙物)。為解決上述問題,文獻(xiàn)[8,14-15]采用分段網(wǎng)絡(luò)結(jié)構(gòu)將自動(dòng)駕駛網(wǎng)絡(luò)分成感知網(wǎng)絡(luò)、決策網(wǎng)絡(luò)以及控制網(wǎng)絡(luò),其中決策網(wǎng)絡(luò)可根據(jù)駕駛指令分為不同的子網(wǎng)絡(luò),但是此網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,存在大量的計(jì)算冗余,且無法進(jìn)行端到端的訓(xùn)練。為此,本文設(shè)計(jì)了一種開關(guān)式深度神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)由CNN層和LSTM層組成,在兩個(gè)子網(wǎng)絡(luò)間嵌入了具有開關(guān)性質(zhì)的特征選擇層,然后通過不同的駕駛指令選擇激活不同的特征分支,基于一個(gè)所設(shè)計(jì)的網(wǎng)絡(luò)即可完成車道保持、繞障行駛以及導(dǎo)航轉(zhuǎn)向等多項(xiàng)復(fù)雜任務(wù)。
開關(guān)式深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,網(wǎng)絡(luò)輸入為前向多幀圖像以及轉(zhuǎn)向盤轉(zhuǎn)角和速度的歷史軌跡,輸出為預(yù)測的轉(zhuǎn)向盤轉(zhuǎn)角和車輛行駛速度。網(wǎng)絡(luò)整體結(jié)構(gòu)包括CNN層、特征選擇網(wǎng)絡(luò)(feature selection networks,FSN)層、LSTM層和FCN層。其中CNN層的主要作用是提取輸入圖像的特征,F(xiàn)SN層根據(jù)不同的駕駛指令對(duì)CNN層輸出的特征進(jìn)行選取,LSTM層用以獲得不同圖像幀之間的時(shí)空關(guān)系,F(xiàn)CN層則根據(jù)LSTM層輸出的結(jié)果進(jìn)行決策,并輸出車輛行駛的控制參數(shù)。
圖1 開關(guān)式深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Switched deep neural networks structure
本文中輸入的圖像幀數(shù)為5,即包括當(dāng)前幀在內(nèi)的前5幀圖像,經(jīng)過裁剪和縮放的圖像輸入大小為240 pixel×75 pixel。CNN層一共包括5層,采用3D卷積核,不同CNN層的超參數(shù)向量分別為(3,5,5,3,16)、(2,5,5,16,32)、(2,5,5,32,32)、(1,3,3,32,48)、(1,3,3,48,6),其中每個(gè)超參數(shù)向量中的前3個(gè)超參數(shù)分別為圖像序列長、寬和高的卷積核大小,第4個(gè)超參數(shù)為輸入圖像的通道數(shù)目,第5個(gè)是輸出圖像的通道數(shù)目,最終CNN層輸出的特征維度為(5,8,3,64),即每幀圖像均由64個(gè)10 pixel×4 pixel的圖像塊表示,將圖像塊進(jìn)行展平可獲得維度為(5,2560)的特征向量。
FSN層將CNN層輸出的特征切分為不同的特征分支,不同的駕駛指令通過選擇不同的特征分支,使得深度神經(jīng)網(wǎng)絡(luò)對(duì)不同的駕駛指令做出不同的響應(yīng)。本文所選擇的駕駛指令包括兩類:導(dǎo)航指令和繞障指令。導(dǎo)航指令由手機(jī)地圖發(fā)出,包括左轉(zhuǎn)、右轉(zhuǎn)以及直行;繞障指令是當(dāng)車輛前方遇到靜止障礙物時(shí)由系統(tǒng)發(fā)出繞障請(qǐng)求,此時(shí)自動(dòng)駕駛車輛根據(jù)可行駛區(qū)域進(jìn)行繞障行駛。因此最終可獲得4個(gè)指令:左轉(zhuǎn)、右轉(zhuǎn)、直行以及繞障行駛。4個(gè)指令平分CNN層輸出的特征向量,即每個(gè)指令對(duì)應(yīng)的特征向量維度為 (5,640),同時(shí)將每幀圖像對(duì)應(yīng)的前5幀轉(zhuǎn)向盤轉(zhuǎn)角和速度作為網(wǎng)絡(luò)的輸入,并與每個(gè)指令對(duì)應(yīng)的特征向量進(jìn)行拼接后輸入到LSTM層。
LSTM層共包括兩層,節(jié)點(diǎn)數(shù)量均為256,在LSTM層后連接有兩個(gè)FCN分支,其中一個(gè)分支為轉(zhuǎn)向盤轉(zhuǎn)角預(yù)測,該分支包括3層FCN層,輸出層為當(dāng)前幀的轉(zhuǎn)向盤轉(zhuǎn)角預(yù)測值,激活函數(shù)為反正切函數(shù);另一個(gè)分支為速度預(yù)測,與轉(zhuǎn)向盤轉(zhuǎn)角預(yù)測分支具有相同的網(wǎng)絡(luò)結(jié)構(gòu),輸出層為當(dāng)前幀的速度預(yù)測值,激活函數(shù)為sigmoid函數(shù)。
神經(jīng)網(wǎng)絡(luò)是通過梯度下降法尋找從輸入到輸出的最佳函數(shù)表達(dá)式,因此網(wǎng)絡(luò)的損失函數(shù)對(duì)網(wǎng)絡(luò)的預(yù)測精度有非常重要的影響,本文基于開關(guān)式深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)了獨(dú)特的損失函數(shù),可表示為
Y=f(I,w,Ci)
(1)
式中,f(·)表示網(wǎng)絡(luò)輸入輸出的映射函數(shù);I為圖像輸入;w為網(wǎng)絡(luò)中涉及的優(yōu)化參數(shù);Ci為不同的駕駛指令輸入,i=1,2,3,4分別表示左轉(zhuǎn)、右轉(zhuǎn)、直行和繞障行駛指令;Y為每幀圖像對(duì)應(yīng)網(wǎng)絡(luò)的輸出預(yù)測值。
網(wǎng)絡(luò)優(yōu)化就是尋找最優(yōu)的參數(shù)w使得∑(y-Y)2值最小,其中y為每幀圖像對(duì)應(yīng)車輛行駛控制的實(shí)際值。同時(shí)對(duì)訓(xùn)練參數(shù)進(jìn)行正則化處理,使得模型不會(huì)過擬合到訓(xùn)練數(shù)據(jù)中的隨機(jī)噪聲,本文采用L2正則化方法,最終的網(wǎng)絡(luò)損失函數(shù)可表示為
(2)
式中,ws為不同駕駛指令共享的網(wǎng)絡(luò)參數(shù);wi(i=1,2,3,4)為不同駕駛指令下獨(dú)立的網(wǎng)絡(luò)參數(shù);θ、v分別為轉(zhuǎn)向盤轉(zhuǎn)角和速度的實(shí)際值;α、β分別為轉(zhuǎn)向盤轉(zhuǎn)角和速度偏差的權(quán)重系數(shù);λ為正則化權(quán)重系數(shù),取經(jīng)驗(yàn)值為1×10-5。
每一個(gè)駕駛指令都對(duì)應(yīng)一個(gè)損失函數(shù),不同的駕駛指令共享參數(shù)ws,但具有不同的wi。為避免量綱不同所帶來的誤差,將轉(zhuǎn)向盤轉(zhuǎn)角和速度分別進(jìn)行歸一化處理,其中轉(zhuǎn)向盤轉(zhuǎn)角除以其最大值歸一化到[-1,1],速度除以其最大值歸一化到[0,1],固定α值為1,優(yōu)化β值最終確定為0.1。
擬人化自動(dòng)駕駛決策算法是基于人類駕駛數(shù)據(jù)進(jìn)行模型訓(xùn)練的,因此數(shù)據(jù)對(duì)自動(dòng)駕駛能力具有很大的影響。通過車輛前端安裝的攝像頭采集車輛行駛環(huán)境數(shù)據(jù),攝像頭視角為60°,采集頻率為10 Hz,圖像尺寸為1920 pixel×1208 pixel,采集圖像樣本不少于50萬幀,同時(shí)利用車載傳感器采集駕駛行為數(shù)據(jù),包括車輛轉(zhuǎn)向盤轉(zhuǎn)角、車輛速度以及車輛橫擺角速度等,采集頻率為100 Hz,采集的場景包括不同時(shí)間、道路、天氣、光線以及車流等。
開關(guān)式深度神經(jīng)網(wǎng)絡(luò)可以接受不同的駕駛指令來完成相應(yīng)的功能,因此在不同駕駛指令下對(duì)應(yīng)的訓(xùn)練數(shù)據(jù)是不同的,根據(jù)設(shè)定的4個(gè)駕駛指令(左轉(zhuǎn)、右轉(zhuǎn)、直行和繞障行駛)對(duì)數(shù)據(jù)進(jìn)行切分標(biāo)注,分為路口左轉(zhuǎn)數(shù)據(jù)、路口右轉(zhuǎn)數(shù)據(jù)、路口直行數(shù)據(jù)、車道內(nèi)直行數(shù)據(jù)以及繞障數(shù)據(jù)。無論左轉(zhuǎn)、右轉(zhuǎn)還是繞障行駛都應(yīng)該在相應(yīng)功能開始前和結(jié)束后具有車道保持的功能,因此不同指令下的訓(xùn)練數(shù)據(jù)均包含車道內(nèi)直行數(shù)據(jù)。如左轉(zhuǎn)指令下的訓(xùn)練數(shù)據(jù)包括路口左轉(zhuǎn)數(shù)據(jù)以及車道內(nèi)直行數(shù)據(jù),車輛在路口左轉(zhuǎn)時(shí),系統(tǒng)提前切換到左轉(zhuǎn)指令,在到達(dá)路口的這段距離內(nèi)車輛仍然保持直行,在車輛到達(dá)路口后進(jìn)行左轉(zhuǎn),然后在左轉(zhuǎn)完成后繼續(xù)沿車道行駛,直至系統(tǒng)切換到直行指令;而繞障指令下的訓(xùn)練數(shù)據(jù)包括繞障數(shù)據(jù)和車道內(nèi)直行數(shù)據(jù),當(dāng)車輛距障礙物一定距離時(shí)車輛可以保持在車道內(nèi)行駛,當(dāng)系統(tǒng)發(fā)出繞障指令時(shí)車輛進(jìn)行繞障行駛,繞障完成后車輛沿著新的車道繼續(xù)行駛,直至系統(tǒng)切換到直行指令。不同指令下的數(shù)據(jù)構(gòu)成如表1所示。
表1 不同指令下的數(shù)據(jù)構(gòu)成Tab.1 Data structure under different instructions
在自動(dòng)駕駛行駛過程中,所遇到的場景非常復(fù)雜,為了提高模型的泛化能力和魯棒性,需要針對(duì)采集的數(shù)據(jù)進(jìn)行數(shù)據(jù)增強(qiáng)。但與目標(biāo)識(shí)別所不同的是,車輛轉(zhuǎn)向盤轉(zhuǎn)角和速度與圖像參數(shù)相關(guān)性比較大,不能隨意對(duì)圖像進(jìn)行旋轉(zhuǎn)、縮放、裁剪以及翻轉(zhuǎn)等操作。本文主要對(duì)圖像進(jìn)行光線調(diào)整、陰影處理、平行移動(dòng)以及加入高斯噪聲等處理,同時(shí)為了增加路口轉(zhuǎn)向的數(shù)據(jù),將左右轉(zhuǎn)向的圖像進(jìn)行翻轉(zhuǎn)而獲得相反方向的數(shù)據(jù),自動(dòng)駕駛數(shù)據(jù)增強(qiáng)后的效果如圖2所示。
(a) 原始圖像
(1)光線調(diào)整。將原始圖像(圖2a)從RGB空間轉(zhuǎn)換到HSV空間,隨機(jī)調(diào)節(jié)代表亮度變化的V值,調(diào)節(jié)范圍為-40%~40%,然后從HSV空間轉(zhuǎn)換到RGB空間,增強(qiáng)和減弱亮度的效果分別如圖2b和圖2c所示。圖像對(duì)應(yīng)的轉(zhuǎn)向盤轉(zhuǎn)角和速度的標(biāo)簽值不變化。
(2)陰影處理。隨機(jī)從原始圖像上下邊緣選取兩個(gè)點(diǎn)將圖像分為兩部分,隨機(jī)挑選一部分加入圖像陰影,陰影透明度為50%,增加陰影后的效果如圖2d所示。圖像對(duì)應(yīng)的轉(zhuǎn)向盤轉(zhuǎn)角和速度的標(biāo)簽值不變化。
(3)圖像平動(dòng)。將原始圖像隨機(jī)進(jìn)行上下左右平移,移出部分用黑色像素點(diǎn)填充,其中上下平移范圍為[-4 pixel,4 pixel],左右平移范圍為[-12 pixel,12 pixel],向上和向右為正,左上平移和右下平移的效果分別如圖2e和圖2f所示。上下平移時(shí)圖像對(duì)應(yīng)的轉(zhuǎn)向盤轉(zhuǎn)角的標(biāo)簽值不變化,每上移一個(gè)像素,速度標(biāo)簽值增大1%,左右平移時(shí)圖像對(duì)應(yīng)的速度的標(biāo)簽值不變化,每右移一個(gè)像素,轉(zhuǎn)向盤轉(zhuǎn)角標(biāo)簽值增大0.5%。
(4)高斯噪聲。給原始圖像加入高斯白噪聲,平均值為0,偏差為0.1 dB,加入高斯白噪聲的效果如圖2g所示。圖像對(duì)應(yīng)的轉(zhuǎn)向盤轉(zhuǎn)角和速度的標(biāo)簽值不變化。
(5)圖像翻轉(zhuǎn)。將原始圖像進(jìn)行左右翻轉(zhuǎn),翻轉(zhuǎn)后的效果如圖2h所示。圖像對(duì)應(yīng)的速度標(biāo)簽值不變化,轉(zhuǎn)向盤轉(zhuǎn)角標(biāo)簽值變?yōu)閷?duì)應(yīng)的負(fù)值。
將數(shù)據(jù)集分為左轉(zhuǎn)、右轉(zhuǎn)、直行以及繞障行駛4個(gè)子數(shù)據(jù)集,每個(gè)子數(shù)據(jù)集均包含訓(xùn)練集、驗(yàn)證集和測試集,比例分別為80%、10%和10%。訓(xùn)練總步數(shù)為20萬,在每一步的訓(xùn)練中分別對(duì)4個(gè)分支都進(jìn)行一次迭代,共享的網(wǎng)絡(luò)參數(shù)在4個(gè)分支的迭代過程中均會(huì)得到更新,而每個(gè)分支獨(dú)有的網(wǎng)絡(luò)參數(shù)只會(huì)在該分支的迭代過程中得到更新。
訓(xùn)練采用Adam優(yōu)化算法,該算法可以自適應(yīng)地調(diào)整訓(xùn)練過程中的參數(shù)。同時(shí)為加快模型的收斂速度,采用階梯狀的學(xué)習(xí)率,其表達(dá)式如下:
Dr=lrdrCstep/Dstep
(3)
式中,Dr為當(dāng)前學(xué)習(xí)率;lr為基礎(chǔ)學(xué)習(xí)率,本文設(shè)置為10-3;dr為學(xué)習(xí)率的衰減率,本文設(shè)置為0.9;Cstep為當(dāng)前訓(xùn)練步數(shù);Dstep為達(dá)到衰減率的步數(shù),本文設(shè)置為1萬。
同樣為了加快訓(xùn)練過程中模型的收斂速度,將速度、轉(zhuǎn)向盤轉(zhuǎn)角以及圖像數(shù)據(jù)進(jìn)行歸一化處理,即
(4)
采用均方根誤差(root mean squared error,RMSE)和決定系數(shù)R2對(duì)不同模型的預(yù)測性能進(jìn)行評(píng)估[16]。RMSE和R2的計(jì)算表達(dá)式分別如下:
(5)
(6)
RMSE是預(yù)測值與實(shí)際值之間的平均偏差,RMSE值越小表明模型的預(yù)測值和實(shí)際值的偏差越小,模型的預(yù)測能力越強(qiáng)。如果在相同數(shù)據(jù)集下則可以利用RMSE來衡量不同模型的性能,但本文訓(xùn)練所涉及的數(shù)據(jù)集以及模型的輸出均有所不同,因此采用R2對(duì)模型進(jìn)行評(píng)估。R2可以反映模型對(duì)樣本的擬合程度,R2值越大表明模型的預(yù)測精度越高,一般回歸模型的R2應(yīng)在0.7以上才會(huì)取得較高的可信度。
為了平滑模型的輸出,采用如下濾波算法對(duì)結(jié)果進(jìn)行濾波處理,其表達(dá)式如下[5]:
(7)
其中,Y(t-1)為上一時(shí)刻t-1時(shí)轉(zhuǎn)向盤轉(zhuǎn)角或速度的預(yù)測值;Y(t)為當(dāng)前時(shí)刻t時(shí)轉(zhuǎn)向盤轉(zhuǎn)角或速度的預(yù)測值;S(t)為當(dāng)前時(shí)刻t時(shí)轉(zhuǎn)向盤轉(zhuǎn)角或速度的濾波值;γ為濾波系數(shù),本文設(shè)定轉(zhuǎn)向盤轉(zhuǎn)角的濾波系數(shù)為0.1,速度的濾波系數(shù)為0.2。
圖3所示為不同導(dǎo)航指令下模型對(duì)速度和轉(zhuǎn)向盤轉(zhuǎn)角的離線預(yù)測,預(yù)測時(shí)間長度為100 s,左轉(zhuǎn)指令下車輛首先經(jīng)過一個(gè)急促的左轉(zhuǎn)彎,然后進(jìn)行一段車道保持,之后又經(jīng)過一次左轉(zhuǎn)彎。右轉(zhuǎn)指令下車輛連續(xù)經(jīng)過三次右轉(zhuǎn)彎,中間段為車道保持過程。從圖3中可以看出,在左轉(zhuǎn)和右轉(zhuǎn)指令下,轉(zhuǎn)向盤轉(zhuǎn)角的預(yù)測值與實(shí)際值非常吻合,RMSE值分別為7.2°和7.9°,R2值分別為0.98和0.91,無論是在左急轉(zhuǎn)彎還是在右緩轉(zhuǎn)彎處,模型均可作出正確的轉(zhuǎn)角預(yù)測,且在沒有路口的位置,模型的預(yù)測值也與實(shí)際值吻合,車輛具有保持在車道內(nèi)行駛的能力。速度的預(yù)測值與實(shí)際值之間略有偏差,在左轉(zhuǎn)和右轉(zhuǎn)指令下,RMSE值分別為2.5 km/h和1.1 km/h,R2值分別為0.87和0.88,這是因?yàn)樵谵D(zhuǎn)彎時(shí),即使是相同的路口,不同時(shí)刻采集到的速度偏差較大,但總體來說,模型對(duì)速度變化趨勢的預(yù)測結(jié)果還是較為準(zhǔn)確的,模型可以根據(jù)轉(zhuǎn)彎半徑的大小進(jìn)行速度調(diào)整。
(a) 路口左轉(zhuǎn)指令
圖4所示為直行指令和繞障指令下模型對(duì)速度和轉(zhuǎn)向盤轉(zhuǎn)角的離線預(yù)測,預(yù)測時(shí)間長度為100 s,直行指令下車輛根據(jù)前方車輛的運(yùn)動(dòng)狀況進(jìn)行了8次的起步和停止,繞障指令下車輛根據(jù)前方靜止車輛進(jìn)行了13次繞障。從圖4中可以看出,無論是直行還是繞障指令下,模型對(duì)轉(zhuǎn)向盤轉(zhuǎn)角和速度的預(yù)測結(jié)果均與實(shí)際值比較吻合。其中轉(zhuǎn)向盤轉(zhuǎn)角的RMSE值分別為2.5°和8.2°,R2值分別為0.71和0.97,雖然直行指令下轉(zhuǎn)向盤轉(zhuǎn)角的RMSE值比繞障指令下轉(zhuǎn)向盤轉(zhuǎn)角的RMSE值小,但從圖4中可以看出避障指令下的預(yù)測結(jié)果與實(shí)際值更加吻合,因此R2比RMSE更能體現(xiàn)模型的預(yù)測能力。在直行和繞障指令下,速度預(yù)測的RMSE值分別為2.2 km/h和1.6 km/h,R2值分別為0.84和0.92,在直行過程中模型可以根據(jù)前方車輛狀態(tài)進(jìn)行起步和停止,但由于直行采集過程中最高速度有所不同,因此預(yù)測的最高速度與實(shí)際值之間會(huì)有偏差。同樣在繞障過程中模型根據(jù)前方靜止車輛位置進(jìn)行減速,然后在距離車輛較近的位置進(jìn)行換道避障。
(a) 直行指令
本文對(duì)CNN層的輸出特征進(jìn)行切分以獲得不同的特征分支,然后依據(jù)不同的指令選擇相應(yīng)的特征分支來完成不同的駕駛?cè)蝿?wù)。前述方法(3.1節(jié))是平分CNN層的輸出結(jié)果,此時(shí)各個(gè)特征分支完全獨(dú)立,但實(shí)際上不同特征分支并不是完全獨(dú)立的,如左轉(zhuǎn)和直行以及右轉(zhuǎn)和直行之間都會(huì)共享一些特征,因此本文分析了不同特征分支的重疊度對(duì)模型精度的影響。重疊度是指相鄰兩個(gè)特征分支之間共享的特征參數(shù)個(gè)數(shù)與每個(gè)分支所擁有的特征參數(shù)個(gè)數(shù)的比值,本文進(jìn)行了重疊度分別為0、25%、50%、75%以及100%的測試,不同重疊度下轉(zhuǎn)向盤轉(zhuǎn)角和速度的R2如圖5所示。從圖5中可以看出,當(dāng)重疊度增大到25%時(shí),R2達(dá)到最大值,然后隨著重疊度的增大,R2的值緩慢減小,當(dāng)重疊度超過50%時(shí),R2值迅速減小,因此,本文最終選擇的重疊度為25%。為測試特征選擇層對(duì)模型推理時(shí)間的影響,本文選取了沒有特征選擇層的模型和特征選擇層中特征分支的重疊度分別為0、25%、50%、75%和100%的模型進(jìn)行測試,其推理時(shí)間依次為70 ms、71 ms、72 ms、72 ms、73 ms和73 ms,其中本文選擇的特征分支重疊度為25%的模型的推理時(shí)間由70 ms增加至72 ms,增加比例為2.9%,小于5%,因此本文提出的開關(guān)式深度神經(jīng)網(wǎng)絡(luò)并沒有顯著增加模型的推理時(shí)間。
圖5 不同特征分支的重疊度對(duì)模型精度的影響Fig.5 Influence of feature branches overlapping ratio on model accuary
采用電動(dòng)車作為線控平臺(tái)(圖6a),控制器采用具有12個(gè)CPU核心、4個(gè)GPU核心以及8 GB內(nèi)存的英偉達(dá)drivePx2,計(jì)算力達(dá)8TFLOPS,滿足深度神經(jīng)網(wǎng)絡(luò)對(duì)計(jì)算力的需求??刂栖浖跇I(yè)界內(nèi)普遍采用的機(jī)器人操作系統(tǒng)(robot operating system,ROS)開發(fā),其模塊化、通信機(jī)制以及兼容多編程語言等特性有助于復(fù)雜自動(dòng)駕駛系統(tǒng)的搭建。網(wǎng)絡(luò)模型的輸出為轉(zhuǎn)向盤轉(zhuǎn)角和速度,轉(zhuǎn)向盤轉(zhuǎn)角通過車載電動(dòng)助力轉(zhuǎn)向系統(tǒng)(electric power steering,EPS)進(jìn)行閉環(huán),速度利用PID算法調(diào)節(jié)驅(qū)動(dòng)扭矩和制動(dòng)力矩進(jìn)行閉環(huán)。
(1)導(dǎo)航指令切換條件。為測試模型對(duì)不同導(dǎo)航指令的響應(yīng),隨機(jī)選擇某十字路口作為測試場景,選擇距離路口較遠(yuǎn)位置作為測試起點(diǎn)。導(dǎo)航指令由手機(jī)地圖軟件發(fā)出,通過手機(jī)藍(lán)牙將導(dǎo)航信息發(fā)送給控制系統(tǒng),導(dǎo)航信息包括前方路口動(dòng)作和前方路口距離。開始時(shí)系統(tǒng)默認(rèn)直行指令,當(dāng)距離路口小于50 m時(shí)系統(tǒng)會(huì)發(fā)出轉(zhuǎn)向指令,當(dāng)車輛完成轉(zhuǎn)彎后系統(tǒng)發(fā)出直行指令直至接近下一個(gè)路口。
(2)繞障指令切換條件。繞障指令由駕駛員提前撥動(dòng)轉(zhuǎn)向桿發(fā)出,當(dāng)前方遇到障礙物時(shí),如果沒有繞障指令發(fā)出,則車輛根據(jù)前車距離進(jìn)行跟車行駛。當(dāng)系統(tǒng)發(fā)出繞障指令時(shí),車輛根據(jù)前車距離選擇適當(dāng)位置進(jìn)行換道,在換道完成后系統(tǒng)發(fā)出直行指令。當(dāng)系統(tǒng)發(fā)出繞障指令而當(dāng)時(shí)環(huán)境不允許換道時(shí)(如車輛左側(cè)沒有可通行區(qū)域),模型會(huì)阻止繞障指令并繼續(xù)進(jìn)行跟車行駛,但由于未在車輛側(cè)后方安裝傳感器,因此模型無法阻止側(cè)后方來車時(shí)的換道。
測試過程中采集以下3種情況下的轉(zhuǎn)向盤轉(zhuǎn)角數(shù)據(jù):①熟練駕駛員通過測試場景;②基于開關(guān)式深度神經(jīng)網(wǎng)絡(luò)的自動(dòng)駕駛決策算法通過測試場景;③基于封閉式深度神經(jīng)網(wǎng)絡(luò)的自動(dòng)駕駛決策算法通過測試場景。其中封閉式深度神經(jīng)網(wǎng)絡(luò)是與開關(guān)式深度神經(jīng)網(wǎng)絡(luò)具有相同的結(jié)構(gòu),但去除了中間的特征選擇層。測試區(qū)域選擇圖6a所示的島內(nèi)區(qū)域,圖中紅色線為島內(nèi)主干道路,不同線段交叉處為路口位置?;谏鲜鰲l件對(duì)模型進(jìn)行了3種不同的場景測試。
4.3.1測試場景1:車道保持功能測試
選定圖6a所示區(qū)域內(nèi)的環(huán)島路線作為測試路線,全程長度為5 km,大部分區(qū)域內(nèi)車道線清晰,路口位置無車道線,部分區(qū)域內(nèi)車道線的曲率較大,測試結(jié)果如圖6b所示,無論是采用封閉式深度神經(jīng)網(wǎng)絡(luò)還是開關(guān)式深度神經(jīng)網(wǎng)絡(luò),車輛均可全程無接管完成測試。從圖6b中可以看出,封閉式深度神經(jīng)網(wǎng)絡(luò)預(yù)測的轉(zhuǎn)向盤轉(zhuǎn)角波動(dòng)幅度大于開關(guān)式深度神經(jīng)網(wǎng)絡(luò)預(yù)測的轉(zhuǎn)向盤轉(zhuǎn)角波動(dòng)幅度,其相對(duì)于熟練駕駛員輸出的轉(zhuǎn)向盤轉(zhuǎn)角的RMSE值為3.4°,比開關(guān)式深度神經(jīng)網(wǎng)絡(luò)對(duì)應(yīng)的RMSE值(2.6°)增大了31%。
4.3.2測試場景2:十字路口導(dǎo)航功能測試
隨機(jī)選擇某十字路口作為測試場景,測試結(jié)果如圖6c所示,對(duì)于開關(guān)式深度神經(jīng)網(wǎng)絡(luò),車輛可根據(jù)輸入的不同指令在同一個(gè)路口完成左轉(zhuǎn)、右轉(zhuǎn)和直行,同時(shí)無論是左轉(zhuǎn)或右轉(zhuǎn)指令,在車輛到達(dá)路口前均可以完成車道保持的功能,最終路口無接管通過率在90%以上。部分場景需要接管是因?yàn)閿?shù)據(jù)采集時(shí)車流量較少,所以在轉(zhuǎn)彎過程中遇到對(duì)向來車時(shí)需要對(duì)車輛進(jìn)行接管。對(duì)于封閉式深度神經(jīng)網(wǎng)絡(luò),由于其無法接受導(dǎo)航指令的輸入,因此不能進(jìn)行路口轉(zhuǎn)彎只能進(jìn)行直行,同時(shí)該封閉式網(wǎng)絡(luò)會(huì)受到路口場景的影響,從而會(huì)導(dǎo)致測試過程中轉(zhuǎn)向盤抖動(dòng)較大。
4.3.3測試場景3:直行跟車和繞障功能測試
選定主干道作為測試場景,在車輛前方設(shè)置有障礙車,障礙車會(huì)進(jìn)行隨機(jī)停車等待,繞障指令由駕駛員提前撥動(dòng)轉(zhuǎn)向桿發(fā)出。測試結(jié)果如圖6d所示,在直行階段,封閉式深度神經(jīng)網(wǎng)絡(luò)與開關(guān)式深度神經(jīng)網(wǎng)絡(luò)均可完成自動(dòng)駕駛。但當(dāng)前方有靜止障礙物時(shí),開關(guān)式深度神經(jīng)網(wǎng)絡(luò)可順利繞過障礙物后再繼續(xù)保持直行,封閉式深度神經(jīng)網(wǎng)絡(luò)卻由于轉(zhuǎn)向時(shí)間較晚導(dǎo)致車輛轉(zhuǎn)向不足從而無法通過測試。
(a) 測試車輛與測試區(qū)域
(1)建立了一種基于CNN+LSTM的開關(guān)式深度神經(jīng)網(wǎng)絡(luò),同時(shí)通過在CNN層和LSTM層之間嵌入具有開關(guān)性質(zhì)的特征選擇層,使得模型可以接受不同的駕駛指令,從而完成相應(yīng)的駕駛?cè)蝿?wù)。
(2)針對(duì)每個(gè)駕駛指令設(shè)計(jì)了其網(wǎng)絡(luò)損失函數(shù),網(wǎng)絡(luò)訓(xùn)練過程中依次對(duì)不同駕駛指令下的網(wǎng)絡(luò)參數(shù)進(jìn)行更新,每個(gè)駕駛指令擁有共享參數(shù)和獨(dú)立參數(shù),使得網(wǎng)絡(luò)既可接受不同駕駛指令又不會(huì)顯著增加網(wǎng)絡(luò)的推理時(shí)間。
(3)采用均方根誤差(RMSE)和決定系數(shù)R2對(duì)模型的預(yù)測能力進(jìn)行量化評(píng)估,離線測試結(jié)果表明,模型在左轉(zhuǎn)、右轉(zhuǎn)、直行以及繞障行駛時(shí)均對(duì)轉(zhuǎn)向盤轉(zhuǎn)角和速度有著良好的預(yù)測能力,且通過評(píng)價(jià)指標(biāo)對(duì)特征分支的重疊度進(jìn)行了優(yōu)化。
(4)搭建了自動(dòng)駕駛實(shí)車測試平臺(tái),針對(duì)基于開關(guān)式深度神經(jīng)網(wǎng)絡(luò)的擬人化自動(dòng)駕駛決策算法設(shè)計(jì)了3種不同的測試場景,測試結(jié)果表明,車輛可以根據(jù)駕駛指令很好地完成自動(dòng)駕駛?cè)蝿?wù),可以有效地進(jìn)行跟車、避障以及路口轉(zhuǎn)彎等操作。