使用深度學習在Unity環境中訓練Donkey Car —— 駕駛Donkey Car

前言:

? ? ? ? 通過前面兩篇博客的介紹,大家現在已經能部署好Unity環境制造數據并且訓練自己的模型。

????????兩篇博客的地址:

? ??????使用深度學習在Unity環境中訓練Donkey Car —— 環境搭建和數據制造 - 簡書

? ??????使用深度學習在Unity環境中訓練Donkey Car —— 訓練模型 - 簡書

? ? ? ? 今天這篇博客則是最后一步,驗證自己訓練的模型在Unity中駕駛Donkey Car的效果怎么樣!(文中有最終效果演示視頻鏈接)

開啟服務:

? ? ? ? 在使用模型之前需要知道Unity是如何與python通信的!

????????由于我們是在python中編寫的代碼,因此我們必須首先找到一種方法來使Python與Unity環境進行通信。通信是通過Websocket協議完成的。與HTTP不同,Websocket協議允許服務器和客戶端之間的雙向雙向通信。在這里,我們的python“服務器”可以直接將消息推送到Unity(例如轉向和節速度),我們的Unity“客戶端”也可以將信息(拍攝圖片)推送回python服務器。在python“服務器”與Unity傳遞信息時會涉及解碼和編碼的工作,如將圖片編碼成數據流的形式傳入“服務器”,“服務器”收到收到數據流會進行一個解碼,再將解碼得到的信息傳入網絡,網絡輸出的數值也會再次轉換為數據流傳給“服務器”,最終服務器再傳給Unity。(具體代碼在tcp_server.py文件中)

我們之前訓練好的模型在outputs文件夾下,現在就要使用訓練好的模型開啟服務:

1、首先在“sdsandbox-master”文件夾內打開Power Shall(如圖)

打開power shall

2、輸入“python src/predict_server.py --model=outputs/mymodel.h5”指令開啟服務? (mymodel.h5是我當時保存的模型,每個人自己保存的模型名字可能不一樣)

運行python“服務器”

駕駛Donkey Car:

? ? ? ? 打開服務器之后再進入Unity環境中,點擊開始按鈕,再單擊右上方的“Use NN Steering”按鈕(第三個空白按鈕,至于為什么是空白的,我已經在第一篇博客做了解釋)。

運行環境,連接服務器

此時Unity會連接上python“服務器”(如圖)

建立連接

????????這樣Donkey Car就通過我們自己訓練的模型在道路上行駛。

? ? ? ? 我在bilibili上傳了一段視頻(這段視頻演示了 “有模型駕駛Donkey Car” 和 “無模型駕駛Donkey Car” 之間的區別,通過對比可以明顯看出有多有趣!!!)。視頻鏈接:“有模型駕駛Donkey Car” 和 “無模型駕駛Donkey Car” 之間的區別

總結:

? ? ? ? 首先需要說明的是訓練Donkey Car的數據不要過大,過大容易使模型過擬合,會出現開著開著就跑出去了,制造數據的操作重復5次即可。建議大家搭建好GPU環境,因為GPU訓練速度快太多了。大家如果想提升速度可以通過對訓練數據名修改,將里面的速度值提高到2或3,同時在啟動服務器之前需要將predict_server.py 中的默認速度調成與訓練速度值一致(如訓練數據為2,默認速度也改為2).

? ? ? ? 在Unity中訓練Donkey Car到此就結束了,整個過程不難,十分有趣,大家可以在業余時間娛樂娛樂,有閑錢的小伙伴也可以買個真的Donkey Car在現實環境中玩玩!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容