基于YOLOv5的FPS类游戏瞄准辅助(附可用于CSGO的模型) 您所在的位置:网站首页 开挂模式开启图片 基于YOLOv5的FPS类游戏瞄准辅助(附可用于CSGO的模型)

基于YOLOv5的FPS类游戏瞄准辅助(附可用于CSGO的模型)

2024-06-03 08:49| 来源: 网络整理| 查看: 265

本文来自作者去年写的一个小项目,项目使用YOLOv5-2.0和PyTorch,实现了一款基于目标检测算法的射击类游戏瞄准辅助,俗称“AI外挂”。(文中含项目地址及演示视频,项目中提供了作者预训练的可用于CSGO的模型。)

项目地址:https://github.com/Aa-bN/AimYolo

文章目录 一、前言1.1 项目地址1.2 项目结构1.3 注意事项 二、开发过程2.1 总体设计2.2 屏幕实时捕获2.3 鼠标定位与移动2.3.1 鼠标定位2.3.2 鼠标移动 2.4 代码重构 三、模型开发3.1 模型结构3.2 数据集3.2.1 CSGO专用数据集3.2.2 检测类别3.2.3 数据集划分3.2.4 数据分布特征3.2.5 数据示例 3.3 模型训练3.3.1 超参数3.3.2 训练结果3.3.3 预测效果 四、核心代码五、项目部署与展示5.1 项目部署5.2 使用5.3 游戏内展示 六、总结参考

一、前言

本文整理自作者去年写的一个小项目,出于个人兴趣而写,为demo级别,较为粗糙,优化空间很大。灵感来源于B站up主“林亦LYi”的视频。

1.1 项目地址 已在GitHub开源,点此进入同步更新至站外博客 1.2 项目结构 PyTorch,机器学习框架YOLOv5-2.0,项目地址自瞄模块 1.3 注意事项 *本项目旨在激起深度学习、游戏安全等方面爱好者的兴趣,仅供学习交流*切勿用于盈利及违法用途,以及进行任何破坏游戏公平的行为联网测试有封号风险,推荐断网使用推荐结合Anaconda部署并使用10系显卡效果明显不如30系(o(╥﹏╥)o)

值得注意的是,AI外挂几年前就已经出现,最初为YouTube上的一位创作者开发,网络上也可以找到一些版本。本项目理论上可以用于CSGO、APEX、PUBG等多种游戏,实际以CSGO为例进行了模型的开发与使用。相对于传统外挂,AI外挂多基于目标检测算法,不会修改游戏的本地内存,也不会上传恶意数据。本文后续有6个部分:开发过程、模型开发、核心代码、项目部署与展示、总结与参考。

二、开发过程

本节分为总体设计、屏幕实时捕获、鼠标定位与移动和代码重构等4个部分。

2.1 总体设计

项目整体分为8个模块,看图。(づ ̄3 ̄)づ╭❤~

1.总体思路

参数获取:继承自YOLO,个性化参数,如指定模型对目标的检测部位(头部、身体等)屏幕截取:CPU或GPU截图,截图时间尽可能短,可指定屏幕截图区域预处理:截图数据转为tensor数据类型,与YOLO接口一致模型推理:图像数据交付核心模型,进行检测坐标计算:根据模型的推理数据,计算目标位置的坐标鼠标移动:将鼠标移动至对应坐标,如头部、身体及其中心位置专用/通用数据集:如CSGO数据集(标注CT,CT_Head,T,T_Head),传统人体识别数据集等模型训练:由于待检测目标一般较少,且对速度要求较高,选取s版本的模型整体:整体采用单进程,在While循环中持续检测,并设置信号用于结束进程,后续完善为根据指定键位,更改AI姿态(大概会吧T_T) 2.2 屏幕实时捕获

这里并非真正的实时,而是从屏幕截取到模型推理,再到鼠标移动,整个过程的用时很少,宏观感受为实时。废话少说,看图(づ ̄3 ̄)づ╭❤~。

2. 屏幕实时捕获

CPU截屏:采用mss库进行截屏;也可以采用d3dshot库进行GPU截屏,但其中会涉及numpy和tensor数据的运算速度、显卡的设置问题,不推荐实时截图与展示:将截取的画面实时展示,便于测试与直观感受,根据参数配置作为可选项

以只因哥打篮球的视频为例,这个部分的效果应该是这样的。(づ ̄3 ̄)づ╭❤~

坤哥打球实时检测

2.3 鼠标定位与移动

关于鼠标的定位与移动,需要搞清几个问题,看图(づ ̄3 ̄)づ╭❤~。

3.direct-input

2.3.1 鼠标定位 即让鼠标搞清自己的定位step1. 获取鼠标当前位置的坐标/像素step2. 结合YOLO,根据检测框计算坐标step3. 计算欧式距离,移动鼠标特别注意(部分问题会在核心代码部分解释) 鼠标移动时的绝对距离与相对距离(一般为相对距离,故计算了欧氏距离)物理距离与分辨率不一致的问题 (开启DPI感知)一些游戏需要关闭原始输入 2.3.2 鼠标移动 A. Windows程序鼠标移动机制 如图,传统机制已经满足不了当下大型游戏的需求 B. DirectX游戏开发 微软开发的多媒体编程接口,具有更快的响应速度导致PyAutoGui、Pynput等采用Virtual Key Codes的键鼠控制库失效 C. 绕过限制 更先进的Scan Codes和Win32 Sendinput方法,实现游戏内的键鼠快速控制如图,采用了Ctypes库在一些老游戏,如CS1.6中,则不用考虑这些 2.4 代码重构

重构了YOLOv5中的detect.py:保留核心模型,更改原有逻辑,添加自定义功能。看图。(づ ̄3 ̄)づ╭❤~

4.代码重构

更多细节留给核心代码部分。

三、模型开发

本节分为模型结构、数据集和模型训练等3个部分。

3.1 模型结构

采取的模型结构,看图。具体介绍可参考江佬的博客,该图也源此。(づ ̄3 ̄)づ╭❤~

5.yolov5s

需要说明的是:

代码版本:YOLOv5-2.0选取模型:Pretrained YOLOv5s,后续训练时,以此为依托,进行不太严格的fine-tune任务类型:目标检测 3.2 数据集

本小节对使用的数据集进行介绍。

3.2.1 CSGO专用数据集

数据集项目地址,点此进入。时间有限,并没有进行数据集的构建,当时,这个项目解决了博主的燃眉之急。值得说明的是,该项目的创作者也附加了一些单纯的检测代码。

3.2.2 检测类别

检测类别数:4,包括 ct, t, t_head, ct_head,即反恐精英,恐怖分子,恐怖分子头部,反恐精英头部。这有利于模型进行目标身体或头部的检测与锁定。

3.2.3 数据集划分

图片总数:800张。博主进行手动(不够随机)划分->训练集:700张,验证集:100张。

3.2.4 数据分布特征

6.数据分布特征

3.2.5 数据示例

img_250.jpg的原始图像信息、标签信息,以及一些图片的groundtruth如下。(づ ̄3 ̄)づ╭❤~

7.img_250.jpg

8.img_250_label

9.test_batch

3.3 模型训练

本小节展示了训练过程中产生的数据和预测效果。

3.3.1 超参数

1011

3.3.2 训练结果

12.results 13.result_txt

3.3.3 预测效果

14.test 需要说明的是,模型在预训练(pretrained)的YOLOv5s的权重基础上,进行了不太严格的微调(fine-tune)。图中示例均为模型训练200轮的结果。实际上,模型在训练50轮时,就已经能够初步使用了。

四、核心代码

核心代码集中在z_captureScreen.py,z_ctypes,z_detect5.py中。

懒得写了,有空再补,相信以gie gie们的聪明才智,一定可以看明白哒,哒哒哒。(づ ̄3 ̄)づ╭❤~

五、项目部署与展示

本节分为项目部署、使用和游戏内展示等3个部分。

5.1 项目部署 A. Anaconda(推荐)和 PyTorch 的安装B. 部署 YOLOv5C. 自瞄模块的依赖库,可见项目的requirements.txt,依赖不多,也可根据报错安装 5.2 使用 进入项目目录python z_detect5.py [可选参数],例如: python z_detect5.py --view-img --classes 0 1 2 3python z_detect5.py --classes 2python z_detect5.py… 上述命令推荐在命令行中运行,在PyCharm中使用,可能出现win32相关库的报错 5.3 游戏内展示

CSGO中,注意在游戏内设置中关闭数据原始输入。

CSGO人机实战

六、总结

本节总结了一些问题。

小目标检测:对于小目标,存在误检,可能检测不到鼠标移动:移动速度过快,无法最大程度仿真弱点:后台实时运行的脚本 + 不自然的鼠标移动模式可能的优化方向:远程外挂;多进程提速;数据集优化(增加人物模型等);硬件性能提升(CPU+GPU)三个问题: A. 坐标不一致性 监听器和控制器不一致,即屏幕的物理尺寸


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有