前言:
? ? ? ? 這一個(gè)系列將分享我是如何使用深度學(xué)習(xí)在Unity環(huán)境中訓(xùn)練Donkey Car 。Donkey Car 是一個(gè)開源的小型自動(dòng)駕駛汽車方援,下圖是donkey樣車先匪,在它上面有一個(gè)攝像頭岸裙、樹莓派艺糜、單片機(jī)、電機(jī)、舵機(jī)和電源。由于制作這樣一輛車成本不低,而且會(huì)消耗一些時(shí)間,對(duì)于第一次組裝Donkey Car的人可能會(huì)不友好,所以我將分享如何利用開源社區(qū)里的Unity環(huán)境來訓(xùn)練Donkey Car 。
? ? ? ? 我在學(xué)習(xí)Donkey Car時(shí)看了一篇講述如何使用強(qiáng)化學(xué)習(xí)在Unity環(huán)境中訓(xùn)練Donkey Car的博客:Train Donkey Car in Unity Simulator with Reinforcement Learning | Felix Yu
? ? ? ? 在Felix Yu博客的代碼里使用了一個(gè)開源環(huán)境,我將在這篇文章中講述如何部署此開源環(huán)境。
環(huán)境準(zhǔn)備:
? ? ? ? 1响巢、Donkey Car 開源文件
? ? ? ? 2、unity
1、Donkey Car開源文件下載:
? ? ? ? 開源環(huán)境需要到Github 下載:GitHub - tawnkramer/sdsandbox: This provides a sandbox simulator for training a self-driving car. This uses Unity for simulation and Python with Keras and Tensorflow for training. Recently updated to work on Python 3.4+ and Keras 2+
? ? ? ? 進(jìn)入GitHub單擊“Clone or download”按鈕参滴,再單擊“download zip” 蝌箍。
? ? ? ? 下載完壓縮包脆诉,解壓到自己想解壓的文件夾下(一定要記清楚解壓路徑)。后面將會(huì)在Unity中打開此開源環(huán)境。
2、Unity安裝包下載及安裝:
? ? ? ? 由于Unity的下載安裝不是本文的側(cè)重點(diǎn)病蛉,所以我找到了一篇安裝Unity的博客:2018 Unity 3D安裝教程;圖片步驟詳解 - 簡(jiǎn)書
? ? ? ? Unity使用個(gè)人版即可苛蒲。
部署環(huán)境:
? ? ? ? 打開Unity蔫浆,點(diǎn)擊open,選擇剛剛解壓的Donkey Car中的sdsim文件夾
? ? ? ? 進(jìn)入之后,在下方的Project欄里選擇Scenes文件夾迁匠,雙擊main文件布疙,最后點(diǎn)擊上方的的啟動(dòng)按鈕運(yùn)行虛擬環(huán)境。
? ? ? ? 進(jìn)入環(huán)境之后我們會(huì)看見小車和道路,左上角是地圖园骆,需要注意的是右上角锌唾。由于我們現(xiàn)在是小窗口重窟,所以我們會(huì)發(fā)現(xiàn)右上角六個(gè)按鈕是空白的巡扇,我們需要把窗口最大化才能看清。
? ? ? ? 放大窗口后就可以看清楚了卒蘸,當(dāng)然在知道這些button的作用之后我們便可靈活運(yùn)用此環(huán)境了县恕。
對(duì)于我們來說我們只需理解其中四個(gè)button的作用:
? ? ? ? “Generate Training Data”:用來制造訓(xùn)練數(shù)據(jù),點(diǎn)擊此按鈕之后小車將會(huì)勻速運(yùn)行斟薇,小車一邊運(yùn)行一邊截圖师坎,截下的每張圖片的名稱中將會(huì)包含“轉(zhuǎn)向值”和“油門值”
? ? ? ? “Use NN Steering” :使用訓(xùn)練完成的模型來運(yùn)行小車使其在道路上運(yùn)行
? ? ? ? “Next Track”:用來改變路面,環(huán)境中不止提供了一種路面堪滨。
? ? ? ? “Regen Track”: 用來改變道路路線胯陋,每點(diǎn)擊一次都會(huì)重新生成一次路徑,小車就不會(huì)總是跑一張地圖。
制造數(shù)據(jù):
? ? ? ? 在制造數(shù)據(jù)之前遏乔,我們首先要在sdsim文件下新建一個(gè)log文件夾用來保存截圖义矛。(注意:新建文件夾的名字必須是log)
建好文件夾之后我們進(jìn)行下面幾步操作:
? ? ? ? 1、運(yùn)行環(huán)境盟萨,點(diǎn)擊“Generate Training Data”按鈕
? ? ? ? 2症革、小車跑完地圖前點(diǎn)擊右上角stop按鈕停止造數(shù)據(jù)。
? ? ? ? 3鸯旁、點(diǎn)擊上方的停止按鈕,關(guān)閉環(huán)境
? ? ? ? 4量蕊、在sdsim同級(jí)文件夾中新建dataset文件夾? (注意:此步驟只需在第一次操作時(shí)做铺罢,后面不需要重復(fù)此步驟)
? ? ? ? 5、“python src/prepare_data.py --src=sdsim/log/*.* --dest=dataset”? 在cmd(或Power Shell)中運(yùn)行此命令残炮,讓log文件中的截圖轉(zhuǎn)移到dataset下韭赘。(注意:此命令需要安裝python環(huán)境)
上面的步驟完成一次大概能造出35MB左右的圖片。多次循環(huán)上面步驟即可制造出大量訓(xùn)練數(shù)據(jù)势就。(“注意其中有一步只需在第一次時(shí)要做”)
總結(jié):
? ? ? ? 1泉瞻、由于一次制造的數(shù)據(jù)較少需要多次制造才能擁有一個(gè)可觀的訓(xùn)練數(shù)據(jù)量
? ? ? ? 2、制造數(shù)據(jù)一定要按照步驟來操作苞冯,不然會(huì)報(bào)錯(cuò)袖牙。
? ? ? ? 在制造數(shù)據(jù)結(jié)束之后我們將使用它們來訓(xùn)練模型,下篇博客將分享如何利用src文件夾下的代碼訓(xùn)練舅锄。
? ? ? ? 博客地址:使用深度學(xué)習(xí)在Unity環(huán)境中訓(xùn)練Donkey Car —— 訓(xùn)練模型 - 簡(jiǎn)書