Press "Enter" to skip to content

低配版AI车神?网友用单个CNN在“极品飞车9”里飙车

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

新智元报道

 

编辑:好困 袁榭

 

【新智元导读】单凭一个CNN网络,居然能在快20年前的经典赛车游戏里跑自动驾驶!不过,你这个AI咋不躲障碍物呢?

 

最近,一位Reddit网友自己搭了个CNN模型,让AI在2005年出的经典游戏「极品飞车9:最高通缉」里开车。

 

点赞超过1700,可谓是机器学习子版块里一时以来最高的贴。

 

至于效果嘛……

 

 

在宽阔的大路上,AI开得还算平稳,但时不时就会去「画蛇」……

 

好在速度控制得还行,不会轻易引起「警察」的注意。

 

虽然是游戏机制的一部分,但想要甩掉这些穷追不舍的警车,玩家手动操作时几乎每次都把人整得心力憔悴、手指酸痛。

 

尤其是随着追捕等级的提升,对付的将不再是那些老旧的巡逻车了,而是重型SUV甚至是直升机,逃脱难度直线上升。

 

 

大概是训练数据的缘故,当AI在路上遇到障碍物时,表现得简直就和人类玩家一模一样:

 

「躲」这个词,在AI的字典里是不存在的。

 

轻打方向,微调路线,瞄准了直接撞上去才是王道!

 

 

从路牌到三角锥,一个都不能放过。

 

 

项目很简单,就是数据不太够

 

「Deep For Speed」基于Python 3.9和Pytorch 1.10,只需要安装Numpy、Matplotlib库即可。

 

作者表示,这个项目的创意来自于英伟达项目的启发。

 

论文中英伟达只用单个卷积神经网络、而非大堆炫目算法就做出了自动驾驶汽车。

 

 

基础架构

 

作者表示,自己项目的工作流程非常简单。

 

程序首先会将游戏中的速度仪表盘、小地图和视野中直观路面录屏并存储为numpy数组,之后再去调用np.load()函数进行处理就可以了!

 

模型中的play.py和play_util.py函数,实质上是键盘输入模拟器,将AI的自动驾驶结果模拟成物理键盘输入,操控游戏。

 

不过可能是作为参考的项目比较古老,这里只能把游戏调成分辨率为800×600的窗口放在屏幕左上角运行。

 

 

创建和处理数据

 

 

使用模型

 

项目作者称,做出可以运行的模型雏形用了两周,把模型修改到其他用户也能用,又花了两周。总共在项目上投入的时间大概1个月。

 

 

其中,训练数据集的搜集可以说是最难的部分了。

 

作者表示,自己耍游戏20小时中搜集的数据,因为模型改动的频度和幅度,最后只有两小时的数据能用。

 

 

项目的开源部分也是因为扩充训练数据集的需求:想要扩大数据包,但自己搞不定了。

 

不过,如果能让大家一起来玩的话,说不定有同好会做出更大的训练数据集、训练自己的模型,然后再共享给他

 

由此,作者也模仿原来游戏的名字「Most Wanted」给项目起了一个别称——「DeepForSpeed: Data Wanted」。

 

作为最终目标,项目作者还想将自己的CNN项目做成一个可以实验多种架构的通用平台/界面。

 

让玩家同好们在体验模拟器娱乐的同时,也能实验自己做的其他神经网络。

 

极品飞车:最高通缉

 

《极品飞车:最高通缉》(Need For Speed: Most Wanted),是游戏业界着名厂商艺电(EA)推出的《极品飞车系列》赛车游戏中的第九作,于2005年11月15日开始在美国发售。

 

当年,开局一上来就不得不按照剧情需要把自己心爱的「宝驹」BMW M3 GTR输掉,着实让小编难受了好久。

 

尤其是之后要从最基础的车开始,堪称教科书式的「摩托变单车」……

 

 

游戏结合了沙盒开放世界、警匪跑跑追追模式、子弹时间视觉效果、以及玩家改装车辆等特色。

 

这些特色功能在当时几乎所有大游戏厂商都还在搞参与式电影类游戏项目的风气中,堪称走在时代的前沿。

 

游戏除了推出Windows版本外,还为GameCube、GBA、NDS,PlayStation 2、PSP,Xbox,Xbox 360等多个游戏机平台推出相应版本。

 

2009年底,游戏的全平台销量达到了1600万套,是整个极品飞车系列最畅销的一部作品,也曾是当时全球非独占平台的单一赛车游戏作品中的最高销量。

 

 

游戏女主角声优是这位超级辣阿姨Josie Maran,在2000年代曾经短暂从超模业改行作女演员,没走红后改做化妆品品牌,终于成功。

 

在当年的游戏媒体网站中也广受好评。Metacritic和Game Rankings都给出了82的高分(满分100分)。

 

Eurogamer称之为「画面效果惊艳不已」,GameSpot给出8.4分(满分10分),并赞扬游戏「图像锐利」「音效出众」,但批评游戏的AI起初太容易而之后太难。

 

 

国内有玩家想忆童年,于是又扒出来玩了一下,评价是:「速度感仍旧一流,发黄、模糊的光影和粒子效果遮盖了许多场景的简陋之处,还算比较讨巧。」

 

 

不过托这款游戏现在画面质量一般、但游戏操作系统仍然犀利的特色,正好符合机器学习模型的个人开发者的要求:

 

因为画面质量一般,对硬件的要求就低,个人买得起;因为游戏仍然好玩,训练AI模型来玩仍然有价值。

 

灵感来自2016年的论文

 

此外,作为idea来源的英伟达论文,年代也十分久远,不过效果依然拔群。

 

 

论文链接:https://arxiv.org/abs/1604.07316

 

论文中,作者训练了一个卷积神经网络(CNN),将单个前置摄像头的原始像素直接映射为转向指令。

 

只需用到很少的人类数据,AI就能学会驾驶汽车,即便是在没有标记或者视觉引导不明确的地方。

 

作者并没有训练AI去检测道路的边界,而是用人类的转向角度作为训练信号来检测有用的道路特征,从而让AI学到内部的表征。

 

与诸如车道标记检测、路径规划和控制这种对问题的明确分解相比,英伟达提出的端到端系统同时优化了所有处理步骤。

 

作者认为,这种方法可以得到更好的性能和更小的系统。其中,内部的自我优化,可以最大化整体系统的性能,而不是优化人类选择的中间标准,例如车道检测。

 

 

在训练过程中,图像最先会被输入到一个CNN网络之中,然后计算出一个转向的指令。

 

之后,将这个指令与图像的期望指令进行比较,调整CNN的权重,使CNN的输出更接近期望的输出。其中,权重调整是通过反向传播完成的。

 

 

一旦完成训练,神经网络就可以从视频图像中生成正确的转向命令。

 

 

网友:和FSD差不多嘛!

 

「游戏中AI驾驶表现比大部分加州公路上的人类司机好」

 

 

「AI在游戏里开车,和特斯拉FSD差不多嘛!很赞!」

 

 

网友:「大兄弟干得漂亮,能做个马里奥赛车版本的幺?我愿意打钱。」

 

项目作者:「好啊,我要是能在玩马里奥赛车同时也录屏,说不定可行哦。」

 

 

「千万别把这当成软件升级卖给特斯拉」

 

 

参考资料:

 

https://github.com/edilgin/DeepForSpeed

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。