需求背景
一时心血来潮,尝试制作一个“外挂”:用来制作FPS类游戏的AI外挂,目标需要完成的任务如下:
- 在玩游戏时需要在游戏画面上标注出人物目标框(后期可以更换为人脸OR人头);
- 由于不是读取内存,这里不作透视需求;
- 可以使用驱动鼠标控制鼠标箭头达到目标框内(瞄准的是人物的中心(矩形框的中心));
- 可以较为及时的显示处理视频画面(避免延迟)
实验设备
这里我们以FPS类游戏CS1.6为例子,选用CS1.6其原因是足够老,不是很吃GPU,这里需要保证有足够的显存进行推理,避免推理存在延迟。显卡选用性价比较高的英伟达的1660ti。在算法这里先选用yolo系列,然后进行缩减结构,更改主干网络(在不影响准确率的情况下,为了加速)。
这里我们采用目标检测进行自瞄的构建,从前期的训练到后期的推理测试验证,根据训练需求可得如下实验设备:
硬件 | 软件 |
PC机 | 游戏(CS1.6) |
显卡(1660ti) | 架构yolo |
数据的准备
选择CS1.6还有一个好处是没有过分特殊的皮肤,视频画面显示的人物较为真实. 根据需求,我们需要完成yolo算法的话,数据是必不可少的。
- 我们可以选择原始的游戏画面,使用labelImg进行标注;
- 采用开源行人数据集;
- 借鉴 juejin.cn/post/710491… 进行大批量数据集的制作;
- 使用别人的模型,制作自己的数据集。
算法逻辑
这里我不过多介绍原理,一切以实操为主! 根据yolo目标检测,我们可以得到如下逻辑顺序结构:
- 获取当前视频画面(指定显示器区域内容图像);
- 对视频画面进行人物检测(后期可以选择人脸OR人头);
- 将检测结果绘制到截取视频画面上,同时输出目标中心点(使用视频画面的中心点坐标)
- 使用驱动鼠标,控制鼠标快速达到中心点坐标。