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