本文基于ML-Agents v0.4,在Unity 2018搭建的虛擬城市環(huán)境中訓(xùn)練了一輛自動駕駛車輛。Unity自帶傳感器,而且考慮到場景中所有物體的狀態(tài),例如:分類、尺寸、速度等都是可以提取的,所以在Unity場景中訓(xùn)練模型可以節(jié)省大量的人工標(biāo)記圖片的工作,經(jīng)濟(jì)性較好。
2018年3月20 日,美國亞利桑那州一位女士推著一輛自行車突然闖入機(jī)動車道,被一輛處于自動駕駛模式的Uber無人汽車撞倒并且喪生。根據(jù)科技媒體The Information的報道,行人從陰影中出現(xiàn),而且自行車擋在行人身前,導(dǎo)致車輛判斷失誤。
這表明:Uber的自動駕駛車輛還沒能完成充分的訓(xùn)練,只能識別較為明顯的障礙物,而且對于邊界場景考慮存在不足。
問題思考
如果想讓一輛Level 5級別的自動駕駛車輛正式上路,到底需要經(jīng)過多少里程的測試訓(xùn)練呢?2016年蘭德智庫曾給出答案:110億英里。
作為自動駕駛?cè)Φ念I(lǐng)頭羊,Waymo在2017年底對自動駕駛測試?yán)锍掏黄?00萬英里進(jìn)行了慶祝,然而這個里程離110億英里還差很遠(yuǎn)。相對的,谷歌虛擬車輛每天可以跑800萬英里。
虛擬仿真可以很可觀的加速測試過程,尤其是比較危險邊界場景只能在虛擬場景中測試。而且受限于政策與法規(guī),目前可供自動駕駛路測的城市可謂是少之又少,針對于大部分地區(qū)無法進(jìn)行自動駕駛路測的問題,可以通過仿真測試來得到解決。
工具選擇
為什么選擇使用了Unity 2018,而不是 ADAS 仿真的商業(yè)工具,來制作道路環(huán)境建模和傳感器建模?主要原因:來自世界各地的用戶都可以參與到虛擬環(huán)境的評估測試中。
這個概念被稱為“游戲化和大眾參與的虛擬測試”。一般來說,為了評估自動駕駛車輛的實施情況,例如:駕駛員輸入,其它車輛行為,道路幾何形狀等,需要考慮許多情況。通過使用由人類和虛擬用戶組成的游戲環(huán)境,相比于傳統(tǒng)靜態(tài)測試場景,自動駕駛代碼可以進(jìn)行更廣泛地測試。
除了支持多用戶平臺外,Unity還擁有界面友好的GUI編輯器、3D物理引擎、動畫引擎、 3D模型導(dǎo)入以及C或JavaScript腳本。這些功能可以幫助設(shè)計和模擬包含道路模型和車輛、行人、摩托車和自行車等其它動態(tài)對象的模型城市。Unity擁有龐大的資源庫和社區(qū)支持,我們可以訪問Unity Asset Store資源商店獲取大量資源,加快開發(fā)速度,這是其它引擎和軟件所不具備的。
Unity機(jī)器學(xué)習(xí)代理工具M(jìn)L-Agents,可以使用游戲和模擬的環(huán)境作為訓(xùn)練智能代理的環(huán)境。 可以進(jìn)行強(qiáng)化學(xué)習(xí)、模仿學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)或其它機(jī)器學(xué)習(xí)方法, 通過簡單易用的Python API對代理進(jìn)行訓(xùn)練。
TensorFlow是一個開源的機(jī)器學(xué)習(xí)框架,可以運(yùn)行在臺式機(jī)、服務(wù)器、手機(jī)移動端設(shè)備上。因為使用的筆記本沒有NIVIDA的顯卡,所以安裝的運(yùn)行環(huán)境是基于CPU運(yùn)算的,訓(xùn)練時間大概是使用GPU加速的4~5倍。
環(huán)境搭建
1
創(chuàng)建城市模型
我們可以從Assets Store資源商店中下載已經(jīng)搭建好的城市模型或者道路模型組件,自行設(shè)計道路系統(tǒng)。
Assets Store 資源商店中有很多已經(jīng)搭建好的城市模型,所以沒有必要花費(fèi)大量的時間從零開始設(shè)計城市模型。如果對道路和城市模型的自定義程度要求較高的話,也可以下載城市建筑物和道路的組建,自己組裝城市和道路。
2
使用NavMesh設(shè)計城市中的車流
NavMesh是Unity中控制游戲角色進(jìn)行空間探索和尋路的一個類。我們使用NavMesh設(shè)計了行駛在虛擬環(huán)境中的AI車流。
車輛整體的運(yùn)行路線固定,但是因為NavMesh會避開道路上的障礙物重新選擇路線,所以環(huán)境AI車輛的具體行駛路線會有差別。將NavMeshSurface附到道路平面,并選擇可以行駛和不可以行駛的路面,下圖中藍(lán)色的部分是車輛可以行駛的路面。
將NavMeshAgent附到環(huán)境AI車輛上,并通過在道路上埋下一系列的目標(biāo)點(diǎn),來規(guī)劃車輛行駛的大致路徑。在NavMesh下運(yùn)行的物體會在當(dāng)前位置和目標(biāo)位置之間選擇最短路徑,并且避開障礙物,如同樣是NavMeshAgent的物體,所以相同二點(diǎn)之間的路線選擇會隨路況不同而改變。最短路徑選擇示意如下圖。
3
使用Particle System設(shè)計環(huán)境變量
Particle System粒子系統(tǒng)可以用來創(chuàng)建難以模擬的現(xiàn)象。例如:火、爆炸、雨、雪等。我們使用Particle System模擬了雨和風(fēng)二種天氣,增加了訓(xùn)練環(huán)境的復(fù)雜性。效果如下圖。
機(jī)器學(xué)習(xí)訓(xùn)練
1
訓(xùn)練模型
基于ML-Agents可以將自動駕駛車輛攝像頭獲取道路的圖片信息,發(fā)送給Python的訓(xùn)練模型,利用圖像識別提取圖片中的參數(shù)信息。例如:前方障礙物的分類,距離以及運(yùn)動方向的判斷,發(fā)送給PPO訓(xùn)練模型,并將模型輸出的命令發(fā)送回車輛,控制車輛在虛擬環(huán)境中行駛。
汽車沒有預(yù)編程知道如何駕駛或?qū)W習(xí)如何駕駛的步驟。事實上,除了與模擬中的軌道邊界和其它汽車碰撞對象的距離外,它并不知道整個世界是怎么樣的。它只能不斷地試錯,根據(jù)代理對隨機(jī)命令輸出的獎懲總結(jié)經(jīng)驗,最終得到一個可以滿足設(shè)計需要的模型。
2
Tensorboard觀測和超參數(shù)調(diào)整
為了提取訓(xùn)練的狀態(tài)參數(shù),實時監(jiān)控訓(xùn)練的狀態(tài),方便訓(xùn)練超參數(shù)的調(diào)節(jié),我們使用了TensorBoard。TensorBoard是TensorFlow提供的一組可視化工具,可以幫助開發(fā)者方便的理解、調(diào)試、優(yōu)化TensorFlow程序。
3
訓(xùn)練設(shè)備和過程
處理器:Intel(R) Core i7-6500U @2.5GHz 2.59GHz
內(nèi)存:8.00GB(7.87 GB usable)
GPU:Inter(R) HD Graphics 520 (無GPU加速)
系統(tǒng):64-bit, in10
訓(xùn)練時間:25小時
4
成果展示
可以使用TFSharpPlugin將訓(xùn)練好的模型導(dǎo)入Unity,并在在Unity中觀察訓(xùn)練的結(jié)果。訓(xùn)練完成的模型可以控制車輛在虛擬環(huán)境中比較平順的行駛,并且可以保持在車道線內(nèi),能夠應(yīng)對十字路口和前方車輛障礙的情況。
總結(jié)
我們基于ML-Agents v0.4,在Unity 2018搭建的虛擬城市環(huán)境中訓(xùn)練了一輛自動駕駛車輛。Unity自帶傳感器,而且考慮到場景中所有物體的狀態(tài),例如:分類、尺寸、速度等都是可以提取的,所以在Unity場景中訓(xùn)練模型可以節(jié)省大量的人工標(biāo)記圖片的工作,經(jīng)濟(jì)性較好。
我們在以后可以使用ML-Agents的模仿學(xué)習(xí),加速訓(xùn)練過程。當(dāng)然還要進(jìn)一步完善城市環(huán)境和訓(xùn)練模型,提高環(huán)境的真實度和模型訓(xùn)練的質(zhì)量。更重要的是,引入車輛的動力學(xué)模型,進(jìn)行聯(lián)合仿真訓(xùn)練,訓(xùn)練一個真正可以應(yīng)用于實際自動駕駛車輛的控制模型。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4809瀏覽量
102826 -
AI
+關(guān)注
關(guān)注
87文章
34281瀏覽量
275467 -
自動駕駛
+關(guān)注
關(guān)注
788文章
14209瀏覽量
169602 -
Unity
+關(guān)注
關(guān)注
1文章
128瀏覽量
22308
原文標(biāo)題:使用Unity機(jī)器學(xué)習(xí)代理工具M(jìn)L-Agents進(jìn)行自動駕駛訓(xùn)練
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論