羅健煒,胡哲銘,鄭開超,廖 政
(廣東工業(yè)大學(xué)自動化學(xué)院,廣州 510006)
進入21 世紀以來,全世界范圍內(nèi)的汽車保有量日漸增長,由此造成的能源匱乏、環(huán)境污染和交通擁堵等問題日漸嚴重[1],自動駕駛是解決這些問題的最佳方法,自動駕駛是未來汽車行業(yè)最有前景的發(fā)展方向。隨著計算機技術(shù)、人工智能技術(shù)的發(fā)展,通過將人工智能、邊緣計算等新興技術(shù)與傳統(tǒng)汽車行業(yè)進行深度的結(jié)合給自動駕駛的發(fā)展注入了全新的活力。通過自動駕駛技術(shù)可以有效地降低交通事故發(fā)生的概率,提高民眾出行的安全性[2]。2017 年Strategy Analytics 發(fā)布的自動駕駛市場研發(fā)報告預(yù)測,自動駕駛在2035 年至2045 年的十年期間將能夠間接地使58.5 萬條生命受到有益的影響?!稓W洲自動駕駛智能系統(tǒng)技術(shù)路線報告》指出:到2050 年,由于自動駕駛技術(shù)在汽車行業(yè)的應(yīng)用,污染物排放降低50%,交通傷亡率接近零[3]。
自動駕駛技術(shù)是未來汽車行業(yè)最熱門的技術(shù)方向,國內(nèi)外許多大型汽車企業(yè)和科研院所都在智能駕駛領(lǐng)域進行了巨額的投入和研究。然而,最近幾年,自動駕駛汽車經(jīng)常性地出現(xiàn)安全事故問題,搭載了NOP(領(lǐng)航輔助系統(tǒng))的蔚來汽車ES8 車型在2021 年造成了一起安全事故導(dǎo)致駕駛員的死亡,特斯拉的汽車在輔助駕駛系統(tǒng)狀態(tài)下也曾發(fā)生很多次的交通事故[4],這讓人們不得不認真思考現(xiàn)在的自動駕駛發(fā)展到了什么水平,它的安全性是否能夠得到充分的保障。為了保障自動駕駛汽車的安全性,對自動駕駛汽車進行全面、科學(xué)、有效的測試就顯得特別有必要。在自動駕駛汽車被商業(yè)化之前,必須要經(jīng)歷一層一層的測試才能被允許進行銷售使用。
現(xiàn)在主要的自動駕駛測試方法有:軟件在環(huán)測試、硬件在環(huán)測試、封閉道路測試和真實開放道路測試[5]。軟件在環(huán)測試存在著虛擬測試場景與真實道路場景存在差距和車輛模型精度欠缺的問題。封閉道路測試存在著測試成本高、測試場景有限的問題。真實開放道路測試存在測試成本高、測試周期長、安全性低、缺乏極端測試場景的問題。針對這些問題,提出一種基于數(shù)字孿生的自動駕駛硬件在環(huán)仿真測試架構(gòu),能夠高精度地將真實場景映射到虛擬場景中[6],將算法模型搭建到硬件平臺中能夠更加逼真地模擬出自動駕駛汽車的運行狀態(tài),在提高測試效率和降低測試成本方面具有巨大的優(yōu)勢[7]。從使自動駕駛測試變得安全、高效方面考慮,采用硬件在環(huán)仿真測試能夠更好地推進自動駕駛的開發(fā)。
本文首先介紹了基于數(shù)字孿生的自動駕駛硬件在環(huán)仿真測試架構(gòu)的設(shè)計,然后提出了一種基于深度學(xué)習(xí)的自動駕駛控制算法模型結(jié)構(gòu),并介紹了模型的訓(xùn)練過程和模型評估指標(biāo),最后對自動駕駛控制算法模型實驗進行結(jié)果分析。
基于數(shù)字孿生的自動駕駛硬件在環(huán)仿真測試架構(gòu)主要由三個模塊組成,分別是:仿真測試場景構(gòu)建模塊、算法控制模塊、仿真測試評價模塊,它的整體架構(gòu)如圖1所示。
圖1 基于數(shù)字孿生的自動駕駛硬件在環(huán)仿真測試架構(gòu)
其中仿真測試場景構(gòu)建模塊和通信信道是搭載在實時機上的,算法控制模塊部署在AGX 上。在仿真測試場景構(gòu)建模塊中,采集真實場景數(shù)據(jù),根據(jù)真實場景數(shù)據(jù)構(gòu)建數(shù)字孿生仿真測試場景并與真實場景的數(shù)據(jù)實時映射[8]。對于構(gòu)建好的數(shù)字孿生仿真測試場景,將場景中的傳感數(shù)據(jù)輸入到算法控制模塊中,經(jīng)過算法控制模塊的計算得到對應(yīng)的駕駛輸出量,將駕駛輸出量輸入到車輛模型中控制虛擬場景中的車輛運行,形成了一個控制閉環(huán)[9]。對于仿真測試的結(jié)果,利用仿真測試評價模塊對測試結(jié)果進行評價。
本架構(gòu)中的算法控制模塊搭載的是深度學(xué)習(xí)算法控制器,它的工作流程如圖2所示。先從仿真測試場景中采集當(dāng)前車輛正對的場景圖片數(shù)據(jù),將場景圖片進行幾何變換、裁剪、去噪以及圖像增強等數(shù)據(jù)預(yù)處理操作,然后設(shè)計并搭建好一個神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),將預(yù)處理后的場景數(shù)據(jù)導(dǎo)入到神經(jīng)網(wǎng)絡(luò)中進行訓(xùn)練,通過訓(xùn)練構(gòu)建一個神經(jīng)網(wǎng)絡(luò)駕駛模型,對駕駛場景信息進行識別,最后生成方向盤轉(zhuǎn)角、油門增量、剎車增量等駕駛指令對車輛進行控制。
圖2 算法控制模塊流程
仿真測試場景構(gòu)建模塊是利用數(shù)字孿生技術(shù)進行仿真測試場景的構(gòu)建,該模塊的工作流程分為以下幾步:①通過激光雷達和攝像頭從真實道路場景中獲取車輛數(shù)據(jù)、交通流數(shù)據(jù)、行人數(shù)據(jù)、路網(wǎng)數(shù)據(jù)、環(huán)境數(shù)據(jù)[10];②對獲取到的數(shù)據(jù)進行清洗,將不符合規(guī)則的數(shù)據(jù)刪除掉,將符合規(guī)則的數(shù)據(jù)保留,然后對數(shù)據(jù)進行格式化處理,并進行數(shù)據(jù)挖掘分析以及數(shù)據(jù)的分類,最后將結(jié)構(gòu)化的數(shù)據(jù)保存到自動駕駛場景數(shù)字孿生系統(tǒng)數(shù)據(jù)庫中;③根據(jù)自動駕駛場景數(shù)字孿生系統(tǒng)數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)對虛擬模型進行構(gòu)建和組裝[11],將模型構(gòu)建完成之后對虛擬模型進行驗證,若驗證通過,則加入到虛擬模型庫中以便后期運行和管理;若驗證失敗,則對虛擬模型進行修正直到驗證通過為止;④將模型庫中的環(huán)境、車輛、行人、交通流和路網(wǎng)三維模型導(dǎo)出并與真實道路場景進行數(shù)據(jù)的實時映射,利用三維構(gòu)圖技術(shù)使數(shù)字孿生仿真測試場景三維動態(tài)可視化[12]。
在本文中仿真測試場景構(gòu)建模塊是基于Airsim 和Unity3D 來進行搭建實現(xiàn)的,利用Unity3D來搭建自動駕駛場景,再利用Airsim 中集成的真實地圖數(shù)據(jù),將地圖數(shù)據(jù)與自動駕駛場景結(jié)合搭建數(shù)字孿生仿真測試場景。同時,Airsim中還提供了不同的車輛模型來導(dǎo)入調(diào)用,可以設(shè)置并調(diào)用相關(guān)的傳感器來獲取場景數(shù)據(jù)和車輛數(shù)據(jù)以及搭建并調(diào)用車輛模型。
1.2.1 場景數(shù)據(jù)感知
在利用真實汽車數(shù)據(jù)進行物理建模并搭建虛擬車輛模型時,應(yīng)該將虛擬汽車模型與不同的傳感器組合起來進行測試,確保虛擬傳感器性能接近真實傳感器,使得仿真測試更加貼近實際場景[13]。
在虛擬車輛上的傳感器對周圍環(huán)境進行檢測時,需要有一套規(guī)則來規(guī)定當(dāng)前傳感器當(dāng)前時刻所檢測到的是哪一個物體從而能得到一些具體的傳感數(shù)據(jù),在本文中采用的傳感器檢測規(guī)則是最近點檢測法[14],在傳感器檢測范圍內(nèi),選取離傳感器最近的物體作為傳感器的檢測目標(biāo)點,如圖3所示。
圖3 最近點檢測法原理圖
1.2.2 車輛模型
虛擬的車輛模型由車輛的動力學(xué)關(guān)系形成,根據(jù)虛擬車輛的速度、前后輪的距離、前輪和后輪的角度關(guān)系、虛擬車輛的長度建立虛擬車輛的數(shù)學(xué)模型從而模擬車輛的運行[15]。本文的車輛模型簡化后如圖4所示。
圖4 車輛模型簡圖
根據(jù)車輛動力學(xué)模型可得:
由以上動力學(xué)模型簡化車輛模型可得:
上式可用通式表示為
其中:W=(xb,yb,α)T,m=(mb,θ)T,W描述了當(dāng)前車輛的狀態(tài)信息,m表示對車輛的控制輸入。對于這個m有3個自由度,分別是方向盤轉(zhuǎn)向角、油門增量和剎車增量。
對自動駕駛進行仿真測試就是為了檢測這個自動駕駛汽車是否安全、是否按照我們所設(shè)定的運行。因此,提出一種仿真測試評價方法就非常有必要。在本架構(gòu)中就引入了一個仿真測試評價模塊,仿真測試評價模塊主要用于對仿真測試的結(jié)果進行一個評價,從而直觀地展示測試結(jié)果的好壞。通過對同一駕駛場景的算法控制模塊的駕駛指令輸出和人工操縱駕駛艙的駕駛指令輸出進行比較,從而對仿真測試的結(jié)果進行評價[16],仿真測試評價模塊的工作流程如圖5所示。在該仿真測試評價模塊中,首先將駕駛場景輸入到算法控制模塊中,得到模型輸出的駕駛指令,然后將駕駛場景導(dǎo)入到駕駛艙中,人工操縱駕駛艙面對駕駛場景進行駕駛,得到人工輸出的駕駛指令,對模型輸出的駕駛指令和人工輸出的駕駛指令計算偏差,利用聚類分析方法對偏差數(shù)據(jù)進行聚類分析[17],將聚類分析結(jié)果導(dǎo)入到設(shè)計的評分模型中,對測試結(jié)果進行分等級評價,等級分別為優(yōu)、良好、合格、不合格四個評價等級。
圖5 仿真測試評價流程
為了實現(xiàn)搭建基于數(shù)字孿生的自動駕駛硬件在環(huán)仿真測試架構(gòu),針對架構(gòu)中的算法控制模型,本文利用一種基于CNN-BiLSTM 的端到端深度學(xué)習(xí)算法模型來實現(xiàn)自動駕駛的算法控制,CNN-BiLSTM 是由卷積神經(jīng)網(wǎng)絡(luò)模型和雙向LSTM 模型結(jié)合而成,通過Airsim 的圖像傳感器采集當(dāng)前車輛駕駛員視角的圖像,將該圖像傳入CNN-BiLSTM 模型,通過CNN-BiLSTM 模型的計算得到控制車輛行駛的駕駛量:剎車增量、油門增量、方向盤轉(zhuǎn)角[18]。
卷積神經(jīng)網(wǎng)絡(luò)是一種通過將卷積核矩陣與輸入圖像矩陣進行點乘運算的神經(jīng)網(wǎng)絡(luò),具有深度結(jié)構(gòu),能夠?qū)D像信息進行有效分類和完成回歸任務(wù),能夠有效地提取出輸入中包含的特征[19]。一個完整的卷積神經(jīng)網(wǎng)絡(luò)由很多不同的層來構(gòu)成,主要有輸入層、輸出層、卷積層、池化層和全連接層,每種隱含層中都有著復(fù)雜的運算關(guān)系,通過這些復(fù)雜的運算能夠有效地獲取到輸入圖像的特征,對圖像的特征行為進行學(xué)習(xí),從而訓(xùn)練出一個精確度高的卷積神經(jīng)網(wǎng)絡(luò)模型完成回歸任務(wù)[20]。每個層中會包含一些神經(jīng)元,每個層中的神經(jīng)元都有一個權(quán)值,這個權(quán)值通過一定的梯度下降規(guī)則在訓(xùn)練過程中會不斷地更新調(diào)整[21]。
RNN 循環(huán)神經(jīng)網(wǎng)絡(luò)是一種能夠有效保存前幾層計算結(jié)果的神經(jīng)網(wǎng)絡(luò),它的元素之間不是相互獨立的,它的計算方式是將當(dāng)前的輸入與上一個時刻的狀態(tài)進行運算,從而得到當(dāng)前層的輸出,經(jīng)常用于解決具有序列特征的問題[22]。RNN循環(huán)神經(jīng)網(wǎng)絡(luò)的簡單結(jié)構(gòu)如圖6所示。
在RNN 循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖中,st表示的是t時刻的隱藏層狀態(tài),xt和ot表示的是t時刻的輸入和輸出,f代表的是神經(jīng)網(wǎng)絡(luò)的激活函數(shù),這個激活函數(shù)一般為ReLU 函數(shù),b表示偏置。因此,RNN循環(huán)神經(jīng)網(wǎng)絡(luò)的計算公式定義為
RNN 循環(huán)神經(jīng)網(wǎng)絡(luò)由于其具有記憶的特征,經(jīng)常被用于序列模型中,但是RNN 也存在梯度消失和梯度爆炸的問題,這個問題主要出現(xiàn)在解決長期依賴問題過程中[23]。LSTM 是RNN 的一種變體,能夠?qū)⑤斎胄畔⒅械拈L期信息和短期信息有效地保存下來,能夠有效地解決RNN存在的問題。LSTM 引入了輸入門、輸出門、遺忘門三種門結(jié)構(gòu)來控制特征信息的流動和丟棄[24],LSTM的單元結(jié)構(gòu)如圖7所示。
圖7 LSTM單元結(jié)構(gòu)
LSTM 的單元結(jié)構(gòu)中包含了遺忘門ft、輸入門it和輸出門ot,它的計算公式如下:
在上式中,W表示權(quán)重,b代表偏移量,σ表示Sigmoid 函數(shù),Ct是單元狀態(tài),ht表示隱藏層的狀態(tài)。
本文提出的CNN-BiLSTM 模型的具體結(jié)構(gòu)見表1。
表1 CNN-BiLSTM 模型結(jié)構(gòu)表
它主要由3 個卷積層、3 個池化層、3 個全連接層和1 個雙向LSTM 層組成,同時引入一個Flatten 層作為從卷積層到全連接層的過渡,把多維的輸入轉(zhuǎn)換為一維,即一維化。為了減少模型的過擬合現(xiàn)象,還引入了3 個Dropout 層來在訓(xùn)練的過程丟棄一定數(shù)量的神經(jīng)元。
2.5.1 模型訓(xùn)練過程
根據(jù)前面提出的CNN-BiLSTM 模型結(jié)構(gòu),對CNN-BiLSTM 模型的訓(xùn)練過程進行研究,CNN-BiLSTM模型訓(xùn)練流程如圖8所示。在CNNBiLSTM 模型訓(xùn)練過程中,先輸入圖像信息,對圖像數(shù)據(jù)進行預(yù)處理,在數(shù)據(jù)預(yù)處理的過程中將圖像中對自動駕駛影響最大的部分截取出來,丟棄圖像中的其他干擾部分,同時為了使數(shù)據(jù)更加多樣化,得到更多的信息特征,將部分圖像和標(biāo)簽進行反轉(zhuǎn)處理,以及隨機地添加或者刪除圖像中的亮度,以便模型可以獲取到亮度的全局變化。對于數(shù)據(jù)集中數(shù)據(jù)為零的數(shù)據(jù)點,為了使數(shù)據(jù)集更加平衡,需要根據(jù)一定的策略丟棄這些數(shù)據(jù)點。在完成數(shù)據(jù)的預(yù)處理之后,通過CNN-BiLSTM 模型的卷積、池化、全連接等操作提取出數(shù)據(jù)集的特征,CNN-BiLSTM 模型通過不斷地更新神經(jīng)元權(quán)值來不斷地對特征進行學(xué)習(xí),最終完成模型訓(xùn)練。
圖8 模型訓(xùn)練流程
2.5.2 模型評價指標(biāo)
本文選取平均絕對誤差(mean absolute error,MAE)、均方誤差(mean square error, MSE)、決定系數(shù)(R squared)、預(yù)測值與真實標(biāo)簽的余弦距離平均值的相反數(shù)(Cosine_Proximity)、均方對數(shù)誤差(mean_squared_logarithmic_error, MSLE)作為卷積神經(jīng)網(wǎng)絡(luò)模型精度的評估指標(biāo)[25]。
平均絕對誤差(MAE)表示的是絕對誤差的平均值,它的函數(shù)式是:
均方誤差(MSE)通過將真值與模型估值誤差的平方求平均值,用來檢驗?zāi)P偷念A(yù)測效果,它的函數(shù)式是:
決定系數(shù)(R squared)可以反映訓(xùn)練出來的模型對數(shù)據(jù)的擬合度,它的范圍一般在0~1 之間,它的值越接近1,表示這個模型的擬合程度越好,它的函數(shù)式是:
Cosine_Proximity 是通過余弦值來判斷真實值向量和預(yù)測值向量的相似程度,它的值越趨近于1,表示兩個向量的方向越一致,也就是說預(yù)測值越接近真實值,它的函數(shù)式是:
均方對數(shù)誤差(MSLE)是通過對數(shù)來表示真實值與預(yù)測值之間的偏差,它的函數(shù)式是:
本文實驗是基于深度學(xué)習(xí)開源庫Tensor-Flow、Python 和Keras 深度學(xué)習(xí)框架搭建卷積神經(jīng)網(wǎng)絡(luò)模型并對模型進行訓(xùn)練的,具體的實驗仿真環(huán)境見表2。
表2 實驗仿真環(huán)境
本文實驗采用的數(shù)據(jù)集來自于Airsim 仿真平臺提供的自動駕駛數(shù)據(jù),Airsim 是微軟公司開源的一個跨平臺的基于虛擬引擎的仿真模擬平臺,可以在Airsim 平臺上利用平臺的仿真環(huán)境采集自動駕駛訓(xùn)練數(shù)據(jù),Airsim 平臺官方本身也提供了面向自動駕駛訓(xùn)練的數(shù)據(jù)集。數(shù)據(jù)集主要由兩部分組成,一部分是駕駛員視角的圖像,另一部分是一個文本文件,文本文件中記錄著與圖像文件相對應(yīng)的駕駛數(shù)據(jù),由時間戳、速度、油門量、方向盤轉(zhuǎn)角、剎車量、檔位、圖像名稱,每個圖像都對應(yīng)了一行駕駛數(shù)據(jù),駕駛數(shù)據(jù)的采集是連續(xù)的。在數(shù)據(jù)集中還分為兩種數(shù)據(jù),這兩種數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)一致,代表了兩種不同的駕駛策略和駕駛風(fēng)格,一種是正常的駕駛風(fēng)格,即方向盤轉(zhuǎn)角的變動相對平緩;一種是劇烈轉(zhuǎn)向的駕駛風(fēng)格,即方向盤轉(zhuǎn)角的變動相對劇烈,通過兩種截然不同的駕駛風(fēng)格數(shù)據(jù)的結(jié)合使得數(shù)據(jù)集更加多樣化、普適化。
對于數(shù)據(jù)集的處理,由于在自動駕駛中并不是整個駕駛員視角都是對自動駕駛重要的部分,因此會對數(shù)據(jù)集中的圖像進行截取處理,丟棄對自動駕駛訓(xùn)練會造成干擾的部分,集中關(guān)注重要特征。本文實驗對數(shù)據(jù)集進行了劃分,訓(xùn)練集、驗證集和測試集的比例為7∶2∶1,同時設(shè)置訓(xùn)練的批量大小為32來進行訓(xùn)練。
本實驗通過平均絕對誤差(MAE)、均方誤差(MSE)、決定系數(shù)(R2)、預(yù)測值與真實標(biāo)簽的余弦距離平均值的相反數(shù)(cosine_proximity)、均方對數(shù)誤差(MSLE)來評估模型精度。實驗采用CNN、CNN_LSTM、CNN_GRU、CNN_BiLSTM 四個模型進行分析對比,四個模型在訓(xùn)練過程中的評估指標(biāo)的變化如圖9 所示。MAE、MSE和MSLE越接近0,Cosine_Proximity和R2越接近1,表示模型回歸精度越高,真實值與預(yù)測值越相似,模型的預(yù)測效果越好,從四個模型的評估指標(biāo)隨著Epoch變化的趨勢可以看出,MAE、MSE和MSLE不斷地收斂于0,Cosine_Proximity和R2不斷地收斂于1,在訓(xùn)練過程中略有波動,但最終仍不斷收斂。隨著Epoch的不斷增大,模型訓(xùn)練逐漸收斂于某一個值,當(dāng)收斂值在設(shè)定的Epoch范圍內(nèi)變化值小于閾值時,則訓(xùn)練停止。
當(dāng)Epoch=200時,四種深度學(xué)習(xí)模型的性能指標(biāo)如表3所示,從表3可以看到,CNN_BiLSTM模型的MAE、MSE和MSLE指標(biāo)值是四種模型中最接近0的,它的R2和Cosine_Proximity指標(biāo)值是四種模型中最接近1的,即CNN_BiLSTM模型在四種模型中回歸精度最好、擬合優(yōu)度最高。在Epoch=200 時,CNN_BiLSTM 模型的擬合優(yōu)度R2達到了0.9654,均方誤差MSE為0.0030,平均絕對誤差MAE為0.0334,均方對數(shù)誤差MSLE為0.0013,Cosine_Proximity達到了0.9800。
表3 四種深度學(xué)習(xí)模型性能指標(biāo)
隨著自動駕駛的不斷發(fā)展,對自動駕駛汽車進行充分的測試成為了最重要的難題。針對開放道路測試成本高、安全性低和軟件在環(huán)測試逼真度和精度不足的問題,本文提出了一個基于數(shù)字孿生的自動駕駛硬件在環(huán)仿真測試架構(gòu),大大降低了自動駕駛的測試成本,該架構(gòu)由仿真測試場景構(gòu)建模塊、算法控制模塊、仿真測試評價模塊三個模塊組成,并針對基于數(shù)字孿生的自動駕駛硬件在環(huán)仿真測試架構(gòu)的算法控制器,提出一種基于CNN_BiLSTM 模型的端到端深度學(xué)習(xí)自動駕駛控制方法,經(jīng)過實驗證明,CNN_BiLSTM 模型相比其他三種深度學(xué)習(xí)模型更能挖掘到數(shù)據(jù)特征,回歸擬合效果最佳,該模型在Airsim 平臺數(shù)據(jù)集上的擬合優(yōu)度達到了0.9654,能夠更好地實現(xiàn)自動駕駛控制。