将 europilot 视为游戏环境与您最喜欢的深度学习框架(例如 Keras 或 Tensorflow)之间的桥梁。使用 europilot,您可以捕获游戏屏幕输入,并以编程方式控制模拟器内的卡车。
Europilot 可以通过以下两种方式之一使用:培训或测试。
对于训练,europilot 可以捕获屏幕输入并实时输出一个 numpy 数组,同时获取方向盘操纵杆值。相关屏幕截图和操纵杆值之间的映射写入 csv 文件中。
为了进行测试,europilot 可以创建一个可以在游戏中识别的虚拟操纵杆驱动程序,它可以用于以编程方式控制卡车。使用这个操纵杆,您可以创建一个实时推理网络,以游戏画面作为输入,并输出相关的操纵杆命令,例如转向。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
首先,克隆项目
git clone git@github.com:marshq/europilot.git
如果你想在本地安装 europilot,
python setup.py install
您还可以安装必备库并直接在此项目路径中执行某些操作。
pip install -r requirements.txt
python
>>> import europilot
>>> europilot.__version__
'0.0.1'
要开始生成训练数据,请查看脚本目录中的generate_training_data.py 。
注意,需要使用模块opencv
编译opencv_contrib
才能使用屏幕选择 gui。
否则,您应该指定一个屏幕区域,通过将自定义Box
对象分配给来捕获该区域train.Config.BOX
。
训练数据生成完成后,您可能需要手动检查每张图像以检查是否记录了不需要的数据。检查clean_up.ipynb是否有一个简单的脚本来删除不需要的数据以及 csv 文件中的伴随行。另请查看preprocess.ipynb和get_mean_std.ipynb以获取预处理数据的示例代码。
PilotNet.ipynb是 Mariusz Bojarski 的End to End Learning for Self-Driving Cars的实现,略有不同。上面显示的演示是使用以下笔记本创建的。
要在模型上运行推理,请查看脚本目录中的inference.ipynb 。
对于那些感兴趣的人,这里提供了一个由 162,495 张图像组成的驾驶数据集(17G)。
Europilot 通过简化的界面隐藏了捕获屏幕数据和操纵杆数据的复杂性。在内部,操纵杆数据流被解析为机器可读格式,对我们来说就是罗技 G27。如果您有不同的操纵杆,请根据需要修改joystick.py 。
我们目前有使用 Keras 实现的示例笔记本。我们希望在其他流行的框架中添加更多示例。
虚拟操纵杆驱动程序是通过在内核中附加用户空间驱动程序,通过将事件输出到 udev 来实现的。这个驱动程序可以在 ETS2 中被识别。请注意,驱动必须在游戏开始前进行初始化,否则不会出现在控制器页面中。
Europilot 捕获屏幕输入,因此从技术上讲它与游戏无关。我们选择 ETS2 作为我们的第一个目标有几个原因。
多平台支持:ETS2 支持 Windows、OS X 和 Linux。开发者可以在 Macbook 或 Ubuntu 工作站上运行游戏。这让 ETS2 领先于 GTA 5 等游戏。
逼真的图形/物理:我们研究了开源游戏,但发现图形或物理引擎对于我们的用例来说不够逼真。毕竟,ETS2 的标题中包含“模拟器”。
乐趣:拥有大型数据集对于开发良好的模型至关重要。因此,作为开发人员,您必须花很多时间玩您的目标游戏。幸运的是,ETS2 玩起来很有趣!
[/hidecontent]