GTA 5真香!哦不,我在用深度学习做自动驾驶

2020 年 4 月 18 日 CVer

点击上方“CVer”,选择加"星标"或“置顶”

重磅干货,第一时间送达

本文转载自:机器之心
项目作者:Iker García  |  参与:Racoon X
用深度学习当「外挂」,本文将教你如何用 PyTorch 在GTA 5 中训练自动驾驶模型。
最新一代的侠盗猎车手 GTA 5 是这样一款游戏,它内含一个故事驱动的高度自由化世界,以至于游戏推出之后,很多人在通关之后(或者一点剧情没打)会尝试很多非常规的玩法。 调整游戏中的物理参数、当 一个遵纪守法的「好人」,甚至在游戏里学习侧方位停车帮助考驾照……

对于 AI 开发者来说,GTA 5 有一个庞大的虚拟世界,我们在里面可以开车。所以为什么不能用来训练自动驾驶呢?在新冠疫情期间,我们打游戏的时间不断增加,进而产生了大胆的想法。

项目简介

这是一个使用深层神经网络并运用监督学习实现在 Grand Theft Auto V 中自动驾驶的开源项目。项目使用 PyTorch 编写,并使用了 Nvidia 的 Apex 扩展库,支持混合精度训练与推断,最多大约有两倍的速度提升。训练后模型在驾驶时的策略是模仿人玩 GTA 时的操作,并不会去遵守游戏里的交通规则。例如:地板油在街道上穿行,并躲避其他车辆与行人。当在游戏中设置好目标点后,训练好的模型能够自主地驾驶到对应目标点。

项目地址:https://github.com/ikergarcia1996/Self-Driving-Car-in-Video-Games

项目使用人工标记的数据来训练深层神经网络,即首先记录下游戏中的画面已经人玩游戏时的键盘操作,之后使用该数据集来训练神经网络模型。

这里需要指出的是,本项目只是用 GTA V 作为自动驾驶的例子,理论上其可用于任意一款驾驶的电子游戏中。下图为使用训练后模型进行自动驾驶的效果展示。


这技术,比玩家都稳?


整体框架

此前大多数尝试在电子游戏中实现自动驾驶的模型均包含有深层卷积神经网络(通常是 Inception 或 Resnet)。这些模型以单一图像作为输入。当你看到如下这样一张图像时你会作出什么样的反应呢?


你可能会想到,最好的选择是刹车来避让图中蓝色和灰色车辆。但是,如果这两辆车都停下来让你先过马路怎么办呢?假如你现在实际上是在倒车呢?你当前的车速以及其他车辆的速度是否允许你穿过马路而不会发生碰撞?单一的图像无法为自动驾驶车辆提供足够的信息。我们需要更多的信息,这就是为什么本项目使用一系列图像作为输入的原因。间隔 0.1 秒捕捉 5 张连续的图像,这样的方式为模型提供了更多关于自身、其他车辆与环境的信息。


T.E.D.D. 1104 由一个深层卷积神经网络(Resnet)之后连接一个循环神经网络(LSTM)组成。CNN 用以上 5 张连续的图片作为输入,并为其产生对应的向量表征。之后这些表征将会输送到 RNN 中,RNN 会为整个序列输入产生一个独特的向量表征。最后通过一个全连接网络输出以上序列输入在电脑键盘上对应的按键。整体结构如下图所示。


如何使用

这个项目包含了所有用于生成训练数据、进行模型训练以及使用训练好的模型在游戏中自动驾驶的文件。整个项目使用 Python 3 编写。作者仅在 Windows 10 系统下进行了测试,毕竟大多数人都是在 Win 10 操作系统下玩的 PC 游戏,Linux 和 Mac 上的游戏还是比较偏小众一些。

依赖环境

运行本项目需要安装的依赖环境如下:

Pytorch
Torchvision
Nvidia Apex (only for FP16 training)
numpy
cupy (optional but highly recommended especially for training the model, 10x speed up in data preprocessing comparated with numpy)
cv2 (opencv-python)
glob
h5py
json
win32api (PythonWin) - Should be installed by default in newest Python versions (Python 3.7 reccomended)


生成训练数据集

首先将游戏设置为桌面模式,分辨率设置为 1600x900,将游戏窗口移到桌面左上角位置,如下图所示:


运行如下代码并开始玩游戏:

python generate_data.py --save_dir tedd1007\training_data


该程序会自动地捕捉屏幕并生成用于训练的样本。这些文件将会被保存为「training_dataX.npz」。重新运行以上代码时不用担心原数据集被覆盖,程序会自动检测目录中是否已经存在数据集文件。使用 Q + E 停止收集数据。

训练模型

使用如下代码对模型进行训练:

python train.py --train_new 
--train_dir tedd1007\training_data\train 
--dev_dir tedd1007\training_data\dev 
--test_dir tedd1007\training_data\test 
--output_dir tedd1007\models 
--batch_size 10 
--num_epochs 5 
--fp16


其中--fp16 能够让我们使用混合精度训练(需要显卡支持半精度浮点运算,如:RTX 2000、RTX Titan、Titan V、Tesla V100 等),使用了 Nvidia 的 Apex 扩展库:https://github.com/NVIDIA/apex。训练模型需要消耗大量的显存,项目作者把 batch size 设置为 15 在 RTX 2080 上进行训练。

使用如下代码从保存的 checkpoint 中继续训练:

python train.py --continue_training
--train_dir tedd1007\training_data\train 
--dev_dir tedd1007\training_data\dev 
--test_dir tedd1007\training_data\test 
--output_dir tedd1007\models 
--batch_size 10 
--num_epochs 5 
--checkpoint_path tedd1007\checkpoint\epoch1checkpoint.pt


运行模型

训练完成之后,接下来就可以看 AI 是如何「开车」的了。使用如下命令运行模型:

python run_TEDD1104.py --model_dir D:\GTAV-AI\models --show_current_control --fp16


假如读者的 GPU 有 tensor core 的话(如 RTX 2000、RTX Titan、Titan V、Tesla V100 等),推荐使用--fp16,能够将推理速度大约提升 2 倍并只消耗一半的显存。

GTA 5 里的载具手感和极品飞车等游戏有所不同,对于手残的我们来说撞墙在所难免。自从学习了人工智能,一切看来变得有了希望。


重磅!CVer-论文写作与投稿 交流群已成立


扫码添加CVer助手,可申请加入CVer-论文写作与投稿 微信交流群,目前已满1250+人,旨在交流顶会(CVPR/ICCV/ECCV/ICML/ICLR/AAAI等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI等写作与投稿事宜。


同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。


一定要备注:研究方向+地点+学校/公司+昵称(如论文写作+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加微信群


▲长按关注CVer公众号

麻烦给我一个在看!

登录查看更多
0

相关内容

自动驾驶汽车,又称为无人驾驶汽车、电脑驾驶汽车或轮式移动机器人,是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。完全的自动驾驶汽车仍未全面商用化,大多数均为原型机及展示系统,部分可靠技术才下放至商用车型,但有关于自驾车逐渐成为现实,已经引起了很多有关于道德的讨论。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
最新《深度学习自动驾驶》技术综述论文,28页pdf
专知会员服务
153+阅读 · 2020年6月14日
少标签数据学习,54页ppt
专知会员服务
196+阅读 · 2020年5月22日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
172+阅读 · 2020年2月8日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
深度学习技术在自动驾驶中的应用
智能交通技术
26+阅读 · 2019年10月27日
自动驾驶高精度定位如何在复杂环境进行
智能交通技术
18+阅读 · 2019年9月27日
自动驾驶技术解读——自动驾驶汽车决策控制系统
智能交通技术
30+阅读 · 2019年7月7日
无人驾驶仿真软件
智能交通技术
21+阅读 · 2019年5月9日
自动驾驶仿真软件列表
智能交通技术
13+阅读 · 2019年5月9日
深度学习在自动驾驶感知领域的应用
AI100
11+阅读 · 2019年3月6日
【教程】如何从零开始构建深度学习项目?
七月在线实验室
7+阅读 · 2018年4月23日
图像识别 | 道路识别的自动驾驶算法基本原理
沈浩老师
6+阅读 · 2017年5月12日
SlowFast Networks for Video Recognition
Arxiv
19+阅读 · 2018年12月10日
A Multi-Objective Deep Reinforcement Learning Framework
VIP会员
相关VIP内容
最新《深度学习自动驾驶》技术综述论文,28页pdf
专知会员服务
153+阅读 · 2020年6月14日
少标签数据学习,54页ppt
专知会员服务
196+阅读 · 2020年5月22日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
172+阅读 · 2020年2月8日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
相关资讯
深度学习技术在自动驾驶中的应用
智能交通技术
26+阅读 · 2019年10月27日
自动驾驶高精度定位如何在复杂环境进行
智能交通技术
18+阅读 · 2019年9月27日
自动驾驶技术解读——自动驾驶汽车决策控制系统
智能交通技术
30+阅读 · 2019年7月7日
无人驾驶仿真软件
智能交通技术
21+阅读 · 2019年5月9日
自动驾驶仿真软件列表
智能交通技术
13+阅读 · 2019年5月9日
深度学习在自动驾驶感知领域的应用
AI100
11+阅读 · 2019年3月6日
【教程】如何从零开始构建深度学习项目?
七月在线实验室
7+阅读 · 2018年4月23日
图像识别 | 道路识别的自动驾驶算法基本原理
沈浩老师
6+阅读 · 2017年5月12日
Top
微信扫码咨询专知VIP会员