原作者: Chintan Trivedi
链接: https://towardsdatascience.com/using-tensorflow-object-detection-to-control-first-person-shooter-games-c2c7f1daf2e9
在本文中,我将解释如何使用tensorflow的对象检测模型来玩经典的FPS游戏“CS”。
不久前,我遇到了这个非常有趣的项目,文章作者使用网络摄像机播放经典的格斗游戏,真人快打。他利用卷积神经网络和递归神经网络的结合,从他的网络摄像头记录中识别出踢和打的动作。然后,他将模型的预测转化为游戏中要采取的适当行动。这是很酷的游戏方式!
以此为灵感,我创建了一个类似的控制器接口,可以使用Tensorflow对象检测模型的预测玩第一人称射击游戏。
以下是该项目的代码链接:
此控制器用于处理游戏中的以下操作:
1. 枪的瞄准
首先,为了在游戏中四处看看,我在网球上使用了目标检测。根据屏幕上检测到的球的位置,我们可以设置鼠标的位置,从而控制玩家在游戏中的视角位置。
2. 玩家的移动
接下来,为了指导玩家在游戏中前进,我使用了食指检测。当手指向上时,玩家向前移动,再次向下放置手指将停止玩家的移动。
3. 开枪
这里支持的第三个行动是开枪。由于两只手都用来瞄准和移动,我用张开嘴的姿势来控制枪的射击。
目标检测模型
本文所采用的目标检测模型是MobileNet结合单点多盒探测器(SSD,Single-Shot Multi-Box Detector)进行图像定位。它被训练成各种各样的网球、手指抬起和牙齿张开的图像。它能够以合理的速度运行,从而能够实时使用轻量级模型来控制我们的游戏。
模型性能
从模型的性能来看,在玩游戏时手指和牙齿的检测似乎相当可靠。主要的问题是把枪对准我们想要的地方,因为模型运行的帧速率比游戏低得多,因此鼠标的移动是跳跃的,不是很平滑。此外,对图像边缘的球的检测也很差,这使得它不可靠。这个问题可以通过调整模型来可靠地检测离摄像头稍远的物体来解决,这样我们就有足够的空间来移动网球,从而更好地控制我们的目标。
结论
我觉得用摄像头控制游戏的总体体验,没有额外的硬件仍然是一个非常诱人的概念。由于深度学习模式的进步,这已经成为非常可能。这种控制机制的实际实施需要完善,以取代更为传统的玩这些游戏的方式。我可以看到这个想法的完美实现是玩FPS游戏的有趣方式。