前言:
这一个系列将分享我是如何使用深度学习在Unity环境中训练Donkey Car 。Donkey Car 是一个开源的小型自动驾驶汽车,下图是donkey样车,在它上面有一个摄像头、树莓派、单片机、电机、舵机和电源。由于制作这样一辆车成本不低,而且会消耗一些时间,对于第一次组装Donkey Car的人可能会不友好,所以我将分享如何利用开源社区里的Unity环境来训练Donkey Car 。
我在学习Donkey Car时看了一篇讲述如何使用强化学习在Unity环境中训练Donkey Car的博客:Train Donkey Car in Unity Simulator with Reinforcement Learning | Felix Yu
在Felix Yu博客的代码里使用了一个开源环境,我将在这篇文章中讲述如何部署此开源环境。
环境准备:
1、Donkey Car 开源文件
2、unity
1、Donkey Car开源文件下载:
进入GitHub单击“Clone or download”按钮,再单击“download zip” 。
下载完压缩包,解压到自己想解压的文件夹下(一定要记清楚解压路径)。后面将会在Unity中打开此开源环境。
2、Unity安装包下载及安装:
由于Unity的下载安装不是本文的侧重点,所以我找到了一篇安装Unity的博客:2018 Unity 3D安装教程;图片步骤详解 - 简书
Unity使用个人版即可。
部署环境:
打开Unity,点击open,选择刚刚解压的Donkey Car中的sdsim文件夹
进入之后,在下方的Project栏里选择Scenes文件夹,双击main文件,最后点击上方的的启动按钮运行虚拟环境。
进入环境之后我们会看见小车和道路,左上角是地图,需要注意的是右上角。由于我们现在是小窗口,所以我们会发现右上角六个按钮是空白的,我们需要把窗口最大化才能看清。
放大窗口后就可以看清楚了,当然在知道这些button的作用之后我们便可灵活运用此环境了。
对于我们来说我们只需理解其中四个button的作用:
“Generate Training Data”:用来制造训练数据,点击此按钮之后小车将会匀速运行,小车一边运行一边截图,截下的每张图片的名称中将会包含“转向值”和“油门值”
“Use NN Steering” :使用训练完成的模型来运行小车使其在道路上运行
“Next Track”:用来改变路面,环境中不止提供了一种路面。
“Regen Track”: 用来改变道路路线,每点击一次都会重新生成一次路径,小车就不会总是跑一张地图。
制造数据:
在制造数据之前,我们首先要在sdsim文件下新建一个log文件夹用来保存截图。(注意:新建文件夹的名字必须是log)
建好文件夹之后我们进行下面几步操作:
1、运行环境,点击“Generate Training Data”按钮
2、小车跑完地图前点击右上角stop按钮停止造数据。
3、点击上方的停止按钮,关闭环境
4、在sdsim同级文件夹中新建dataset文件夹 (注意:此步骤只需在第一次操作时做,后面不需要重复此步骤)
5、“python src/prepare_data.py --src=sdsim/log/*.* --dest=dataset” 在cmd(或Power Shell)中运行此命令,让log文件中的截图转移到dataset下。(注意:此命令需要安装python环境)
上面的步骤完成一次大概能造出35MB左右的图片。多次循环上面步骤即可制造出大量训练数据。(“注意其中有一步只需在第一次时要做”)
总结:
1、由于一次制造的数据较少需要多次制造才能拥有一个可观的训练数据量
2、制造数据一定要按照步骤来操作,不然会报错。
在制造数据结束之后我们将使用它们来训练模型,下篇博客将分享如何利用src文件夹下的代码训练。