本文为 AI 研习社编译的技术博客,原标题 :Using Tensorflow Object Detection to control first-person shooter games 作者 Chintan Trivedi | 翻译 Yukiqq | 校对酱番梨 | 整理菠萝妹 本篇文章我将介绍如何使用 TensorFlow 目标检测模型来玩经典 FPS 游戏——“反恐精英”。
使用我的网络摄像机和 TensorFlow 目标检测模型玩“反恐精英” 方才,我偶然发现了这样一个有趣的项目。文章作者是利用网络摄像头玩经典游戏“格斗之王”。他借助网络摄像头记录的信息、结合 CNN 和 RNN 的使用来识别踢打和拳击的动作。之后,他将模型输出的预测值翻译成游戏中用到的准确动作。这确实是一个很棒的玩儿法~
用网络摄像头和深度学习来玩“格斗之王”。原文可以在这里找到。 受这个项目的启发,我于是做了一个类似的控制界面,它可以通过 TensorFlow 目标检测模型的预测结果玩 FPS (第一人称设计游戏)。 这个项目的代码可以在我的 GitHub 主页上找到,链接如下: ChintanTrivedi/DeepGamingAI_FPSAn FPS game controller that uses webcam and deep learning to play games - ChintanTrivedi/DeepGamingAI_FPSgithub.com 我设计的这个控制界面可以处理游戏里如下几个动作: 1. 瞄枪 首先,为了在游戏里环顾四周,我将一个网球作为我的目标检测模型。基于屏幕里在我手上的这个网球的位置,我们可以设置鼠标的位置,进而控制我们的玩家在游戏里瞄准的位置。
2. 移动玩家 紧接着,为了指挥游戏里的玩家前进,我会检测我的食指动作。当食指竖起来时,玩家会前进;而当我放下手指时,会停止玩家的动作。
3.开枪 第三个支持的动作是开枪。因为两只手都用在了瞄枪和前进上,我只能使用张嘴动作来控制开枪了。
目标检测模型 这个用作目标检测的模型叫 MobileNet,它结合 SSD 使图片本土化。我在不同的网球图片、竖起的食指图片和代表张开嘴的牙齿图片上训练该模型。它会在一个合理的速率上跑,这样我就可以通过轻量级的模型实时控制我们的游戏。
模型性能 就模型的性能而言,游戏中检测手指和牙齿的方法似乎相对可靠些。主要的问题在于能够按照我们想要的位置准确地瞄枪。因为模型是跑在比游戏还低的帧率上的,因此鼠标的移动是跳跃式的、不太流畅。此外,在图片边缘网球的检测效果不好,因此这种方法不太可靠。这个问题可以在离网络摄像头稍远的地方通过微调模型来有效检测目标来解决,这样我们就有足够的空间移动网球,就能够对我们的目标有更好的控制。 这个模型的游戏性能效果可以在我的 YouTube 上看到。 总结 因为深度学习模型的强化,这个概念已经接近可能。为了替代游戏中更多传统的方式,这种控制机制的实际应用需要变得更完美。我能够预测到这个想法的完美实现将使得 FPS 的游戏过程变得更有趣。雷锋网 谢谢欣赏。如果你喜欢本篇文章,请在 Medium,GitHub 平台上关注我,或者订阅我的 YouTube 专栏。 |