- 罗技驱动(版本不超过21.9)
- python>=3.10 && python <3.11
- CUDA 11
- torch 2.0
- 更多依赖的在
requirements.txt
中
默认在windows系统下
配置scoop(非常好用的windows包管理器)
打开PowerShell terminal(version 5.1 or later)
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
> Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
scoop install anaconda3
在项目文件夹下
conda create -n apex
conda activate apex
pip install -r requirements.txt
使用gpu进行推理所必须,配置过程较复杂,请去搜索专门的资料
python apex.py
https://github.com/goldjee/AL-YOLO-dataset
使用Yolov5 的train.py文件,修改数据集路径参数
训练日志以及过程的数据存放在exp
目录下
使用DXcam截图来替代yolov5自带的mss截图,将截图时间从15ms优化到5ms
使用Dxshot将截图时间进一步优化
同时通过多开一个线程给监视器来监视全局变量的变化来跨文件传参
注意:因为是通过屏幕截图的方式来获取的图像,所以屏幕刷新率会限制FPS的上限
加入了win函数控制鼠标移动的选项,但是在训练场里试了试没有效果,有可能游戏更新之后已经把这个给修复掉了(?),而且正常情况下win函数的效率太低,所以默认还是鼠标驱动控制鼠标
操纵罗技鼠标驱动的文件之前有人写过,就是mouse_driver
中的ghub_mouse.dll
暂时没想出来如何将鼠标直接移过去,网上也找不到前人的经验。
基于内存的外挂自瞄原理是可以拿到三维坐标,直接修改方向角来瞄准敌人,而基于计算机视觉的外挂只能拿到目标在屏幕上的投影,这是一个二维坐标,要解算出移动的向量很依赖游戏底层的参数(视场角等,详见issue),目前还没想明白怎么一帧锁敌,也许将来会去实现。
况且一帧锁敌会大大提高被检测的风险性,实现的价值不大,短期内不会再向这个方向去努力了。
目前采用的是将准星逐步移动到目标身上的方法,牺牲了一点点效率,达到了准星吸附一样的效果。
- 将代码下载到本地
- 部署环境依赖
- 修改参数(目前在
mouse_control.py
下) - 管理员模式打开一个终端,进入项目文件夹下运行
python apex.py
- 切换鼠标操纵方式(罗技驱动/pyautogui)(非必要),在
mouse_control.py
中将
from mouse_driver.MouseMove import ghub_mouse_move as mouse_move # logi驱动
# from mouse_driver.MouseMove import pygui_mouse_move as mouse_move # pyautogui
切换成
# from mouse_driver.MouseMove import ghub_mouse_move as mouse_move # logi驱动
from mouse_driver.MouseMove import pygui_mouse_move as mouse_move # pyautogui
- 截图方式优化
-
推理文件多线程并行(python多线程没啥用) - 加入PID平滑控制鼠标
- tensorrt推理加速
- 添加自瞄开关
- 取消对驱动的依赖
- 多目标识别优先级判断
- 项目架构优化
- 对不同机器参数自适应
- 推理部分C++重写
- 数据集清洗,扩充,加入敌我识别
- 做个前端
- 生成安装包
-
一帧拉枪(太难,与内存挂原理不同)