网友:好像AI的梦境
你见过这样的GTA5吗?
看着是不是非常糊。
但如果我告诉你这里面每一个像素都是用GAN生成的呢!
当然,车的控制是由强化学习完成。
没有预写规则,也没有GTA5引擎。
神经网络负责处理画面中的一切信息,包括远处的风景,你每按下一次键控制车左转或右转、车撞到边栏等操作。
再仔细看一眼:
车有影子,
车窗上有阳光反射,
当然了,车辆互动也是有的!
这个GAN版GTA5来自一位民间高手,训练用的GPU还是从英伟达借来的!
只需GPU加速,无论什么操作系统的机器,都可以正常跑起这个Python程序。
而它还冲上了GitHub热榜:
它又是如何实现的?
从英伟达借来一台DGX A100
民间高手就是油管上一位百万博主,他此前是一位赛车手,现在是程序员,同时在油管上教机器学习的编程。
该模型基于英伟达的GameGAN,此前有人用这个框架做出过吃豆人的游戏。
但开发GTA5可比吃豆人复杂多了,光是做开放环境这一项就让难度直接跨上好几个等级。
既没有相关模型也没有训练数据,作者开始自己摸索。
首先从能控制汽车保持平衡开始,作者借用OpenAI Gym工具包的CartPole环境,用NEAT算法来完成对它的训练,然后收集数据。
NEAT,遗传拓扑神经网络,有人用它训练了个超级马里奥。
接着,他利用朋友正在开发的一个叫做Vroom的游戏。
该游戏基于OpenAI Gym工具包的Car Race环境,但是完全基于他们自己特殊的目的和需求进行了重写。
下面是使用英伟达Quadro RTX 8000训练几次后的效果:
画面有一些颗粒感,但是可以做到按键控制汽车方向(小轮子都在快速转动),还可以掉头、偏离路线再转回正轨。
做到这儿,作者就已经按耐不住喜悦之情了:“我们可是在神经网络生成的环境里开汽车诶,道路通往哪里、转向后的所有像素图都是它决定的啊!”
他将这个初始成果上传到Twitter之后,英伟达表示:可以试试他们的DGX station!
于是作者借来了一台含有两个64核EYPC CPU+八块A100 GPU、约合140万人民币的DGX A100服务器。
激动的心,颤抖的手,接下来该如何做出对得起这个机器的成果呢?
给Grand Theft Auto建模!
作者还给即将要建的模型取了个名字:GAN Theft Auto。
下面就是尽快收集游戏数据了,毕竟机器只是借的。
而手动玩GTA来收集太慢了(需要花费数月), 他最终选择用12个AI来打这个游戏。
这12个AI在同一个游戏实例中“开车兜风”,并且都在同一段道路。不过每一个画面只记录一辆车的数据罢了。原始画面如下图:
各车辆接受来自Python脚本的转向、速度控制等命令。
脚本会分析当前位置和最近的道路节点,使驾驶路径尽量不同,这也是为了尽可能地覆盖所有可能的动作和汽车位置。
有了这些数据环境的帮助,就可以开始在GameGAN的基础上训练了。
ps.不了解GameGAN结构的停一下:
GameGAN由3大部分组成:记忆模块、动力引擎和渲染引擎。
动态引擎负责了解在游戏环境中哪些行为是“不允许的”(比如吃豆人无法穿墙而过),并负责对行为结果的反应方式进行建模。
内存模块负责场景的长期一致性,让模拟场景不会随时间而变化,它会记住生成的场景并在需要的时候适当检索。当玩家回到之前经过的地方时,画面就能保持一致。
渲染引擎负责渲染模拟图像,它可以学习解码图像中的静态和动态分量。
作者训练出的第一个模型(6个epoch后)效果非常像素化,也没有边界障碍,不过可以非常流利地控制车转向。
接着加入其他车辆和边界障碍,训练出第二个模型,它看起来仍然有些像素化,但还是清晰多了,而这次训练加入了超级采样 (让画面更清晰生动)。
这就是我们在文章开头看到的初始版本了。
整个过程前前后后一共花了大约2个月,结果虽然远比不上使用传统游戏引擎、3D建模出来的效果,但作者自己都在视频里连呼好几个cool:这可只是用神经网络就模仿出来的。
这完全就是真的GTA5游戏。
接下来,作者打算增加它的漫游范围,再加一些更有趣的东西,不过要抓紧时间了。
“看起来像是AI的梦境”
不知道你看到这个效果是何种感受,网友们可是炸了,一个个难掩自己的喜爱之情,有人都开始期待无限赛道的马里奥卡丁车了!
不少人觉得英伟达就该让作者留着那台“死贵”的DGX A100。
不过,很多人都觉得目前的画面很像是AI做的一个迷迷糊糊的梦:一个有点混乱但也可以辨认的世界。
这么惊喜的作品要说谁不喜欢,那就只有游戏引擎开发者了。
不知道未来会不会真的使用AI来开发出高质量的游戏呢~
GitHub地址:https://github.com/sentdex/GANT