我的实践:使用Tensorflow对象检测来控制射击游戏!
在本文中,我将解释如何使用Tensorflow的对象检测模型来玩经典的FPS游戏Counter Strike。
使用我的网络摄像头录制和Tensorflow对象检测模型进行这个游戏
不久之前,我遇到了这个非常有趣的项目,文章的作者使用网络摄像头来玩经典格斗游戏Mortal Kombat。他利用卷积神经网络和回归神经网络的组合来识别他的网络摄像头录音中的踢和冲击动作。然后他将模型的预测转换为在游戏中采取适当行动。这确实是一种非常酷的玩游戏的方式!
用网络摄像头和深度学习玩真人快打
以这个为灵感,我创建了一个类似的控制器界面,可以使用Tensorflow对象检测模型的预测玩射击游戏。
该项目的代码可以在我的Github页面上找到,链接:https://github.com/ChintanTrivedi
该控制器旨在处理游戏中的以下操作:
1.瞄准枪
首先,为了在游戏中环顾四周,我在网球上使用物体检测。根据在屏幕上检测到的球的位置,我们可以设置鼠标的位置,进而控制我们的玩家在游戏中的目标。
2.移动播放器
接下来,为了指示玩家在游戏中前进,我正在使用我的食指检测。当手指指向上方时,玩家向前移动,当再次将手指放下的时候,停止玩家的移动。
3.射击
这里支持的第三个动作就是射击。由于双手在瞄准和移动时都用完到了,我使用张开嘴巴的姿势来控制枪的射击。
对象检测模型
这里用于物体检测的模型是MobileNet与Single-Shot Multi-Box Detector (SSD)相结合用于图像定位。它已被训练成各种各样的网球图像、凸起的手指和张开的嘴巴(看到牙齿表明嘴巴已经张开)。它设法以合理的速度运行,从而可以实时使用轻量级模型来控制我们的游戏。
模型的性能
就模型的性能而言,在玩游戏时,手指和牙齿的检测似乎相当可靠。主要的麻烦是是否能将枪准确地瞄准我们想要的地方,因为模型以比游戏低得多的帧率运行,因此鼠标的移动是比较跳跃的并且不是非常平滑顺畅的操作。而且,对球的边缘部分的检测很差,使其不可靠。这个问题可以通过调整模型来可靠地检测远离网络摄像头的物体来解决,因此我们有足够的空间来移动网球,从而更好地控制我们的目标。
此模型的游戏内效果结果可以在下面嵌入的视频中找到。