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