AIAssistC 是c++版本的AIAssist,原来c#的版本,由于使用的OpenCvSharp4不支持显卡CUDA加速,而游戏中检测速度是关键,所以再做有一个c++版本。
目前已实现了图像检测、自动追踪、自动开火等主体功能。GPU加速已经开发成功,这块坑很多,有时间整理下相关内容。
GPU加速的建议是不要尝试需要自己编译GPU功能的框架,非常浪费时间。直接选择提供预编译好支持GPU的运行库,如TensorFlow C API,可以节约大量时间。
原来的c#版本不再更新,感兴趣的可以参考 https://github.com/dengqizhou30/AIAssist
版本变更:
V1.2:
1、系统不再依赖鼠标键盘驱动程序,移除相关子项目,简化整个工程解决方案。
2、鼠标键盘驱动程序相关子项目,迁移到独立的工程中 https://github.com/dengqizhou30/HIDDriver
一、项目说明:
AIAssistC是一个AI游戏助手,使用OpenCv、DNN、tensorflow c api、cppflow、ssd_mobilenet/efficientdet、hidriver、MFC等技术,截取游戏屏幕,使用AI模型进行对象识别,并实现自动瞄准/自动开枪等鼠标操作,提升玩家的游戏体验。
二、工程说明:
AIAssist:mfc前端UI子工程;
AIAssistLib:AI助手静态库子工程;
Data:存放模型文件及工具文件的子工程;
HIDDriver:windows鼠标键盘驱动子工程;
HIDDriverLib:鼠标键盘驱动调用库子工程;
HIDDriverLibTest:鼠标键盘驱动调用库验证测试子工程;
OpencvTest:openc功能验证测试子工程;
三、主要的运行库:
1、intel贡献的大神级图像处理框架OpenCv:
https://opencv.org/
OpenCV DNN 模块目前支持多种AI对象检测模型推理运行:
https://github.com/opencv/opencv/tree/master/samples/dnn
https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API
https://github.com/openvinotoolkit/open_model_zoo
2、TensorFlow C API运行库,cppflow是TensorFlow C API的C++封装库:
选择使用TensorFlow C API运行库的原因,是因为它提供编译好的支持GPU的运行库,而其他框架都需要自己编译。
https://tensorflow.google.cn/install/lang_c
https://github.com/serizba/cppflow
https://serizba.github.io/cppflow/quickstart.html
3、谷歌tensoflow的对象检测模型efficientdet-lite0、ssd_mobilenet_v3:
实测gpu加速效果,efficientdet-lite模型比ssd_mobilenet好很多
https://hub.tensorflow.google.cn/tensorflow/efficientnet/lite0/classification/2
https://github.com/tensorflow/models
四、使用注意:
1、使用小技巧:目前基于AI图像检测,只做到了人员识别,无法区分敌我。为避免游戏中自动追踪并射击队友的尴尬,有一个使用技巧。
目前在工具中加入了控制逻辑,只有切换到主副武器时才会运行自动追踪和自动射击,切换到其他武器时不会自动追踪。
所以在捡枪或者跟队友跑时,切换到手枪或其他数字键,停止自动追踪。对敌时再切换到主副武器(数字键1或2),自动追踪才生效。
习惯这种操作方式后,这个工具使用体验相对好一些。
2、使用windows api实现了鼠标键盘操作模拟,HIDDriver驱动程序不再是必须项。在绝地求生、逆战、穿越火线三个游戏上测试,windows api可以正常工作。
3、如果要尝试HIDDriver驱动,需要手工安装。这个驱动目前还没有微软颁发的正式证书,只能在win 10测试模式下执行,详情参考子项目说明:
https://github.com/dengqizhou30/AIAssistC/tree/main/HIDDriver