Giter Club home page Giter Club logo

dengqizhou30 / aiassistopencv Goto Github PK

View Code? Open in Web Editor NEW
371.0 9.0 86.0 213.35 MB

AIAssistC是一个AI游戏助手,使用OpenCv、DNN、ssd_mobilenet/efficientdet、MFC等技术,截取游戏屏幕进行对象识别,使用虚拟鼠标键盘hook实现自动瞄准/自动开枪等功能,提升玩家的游戏体验。

License: Apache License 2.0

C++ 92.43% C 3.08% C# 0.58% PureBasic 0.01% PowerShell 1.92% Python 1.99%
ai mobilenet opencv hook

aiassistopencv's Introduction

通告:本项目已发布可运行程序,包含依赖库,有兴趣的兄弟可以下载试用 https://github.com/dengqizhou30/AIAssistOpenCV/releases

游戏助手已发布三个项目,区别如下:
AIAssist 是c#版的游戏游戏助手,已不再更新,感兴趣的可以参考 https://github.com/dengqizhou30/AIAssist
AIAssistC 是c++版本的AIAssist,原因是c#的版本无法实现显卡CUDA加速等底层优化,这个版本也不再更新,感兴趣的可以参考 https://github.com/dengqizhou30/AIAssistC
AIAssistOpenCV 是c++重构简化版本,在AIAssistC基础上做了重构简化,主要考虑方便使用,拷贝一个opencv dll就可以跑起来了。

重构简化内容:
1、简化AI推理依赖的库,删除tensorflow库,只依赖opencv dnn;
2、编译opencv,调整参数针对AMD CPU进行优化; opencv本地编译的时候,会自动检测硬件是否支持指令集优化,应该有一定性能优化;
3、编译opencv,尝试启用opencl,用于opencv dnn推理加速;适用于intel显卡,实测n卡启用opencl性能比cpu还低;
4、编译opencv,尝试启用cuda,用于opencv dnn推理加速。以前反复尝试都失败了,这次用opencv新版本再试试;又花了一些时间验证cuda推理加速,还是失败,intel的opencv dnn和N卡的对接很不顺畅,避免在这个技术方向上尝试,非常浪费时间;
5、使用DXGI Desktop Duplication API优化截屏性能;验证发现目前不能指定截取区域,只能截取全屏,性能不稳定,大部分时候比GDI函数BitBlt截取部分区域还慢。

推理加速方向:
1、使用CPU推理,配置多核CPU,能上两块物理CPU更佳,可以使用一块CPU专用于推理;
2、使用GPU推理,优先选择intel gpu,opencv支持得更好,能上一块专用得intel显卡用于推理最好;

一、项目说明:
AIAssistC是一个AI游戏助手,使用OpenCv、DNN、tensorflow c api、cppflow、ssd_mobilenet/efficientdet、hidriver、MFC等技术,截取游戏屏幕,使用AI模型进行对象识别,并实现自动瞄准/自动开枪等鼠标操作,提升玩家的游戏体验。

二、工程说明:
AIAssist:mfc前端UI子工程;
AIAssistLib:AI助手静态库子工程;
Data:存放模型文件及工具文件的子工程;
DXGICaptureSample:DXGI Desktop Duplication API截屏测试子工程;
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、谷歌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图像检测,只做到了人员识别,无法区分敌我。为避免游戏中自动追踪并射击队友的尴尬,参考如下使用技巧。习惯这些操作方式后,这个工具使用体验相对好一些。:
a、按其他数字键停止自动追踪:目前在工具中加入了控制逻辑,只有切换到主副武器时才会运行自动追踪和自动射击,切换到其他武器时不会自动追踪。 所以在捡枪或者跟队友跑时,切换到手枪或其他数字键,停止自动追踪。对敌时再切换到主副武器(数字键1或2),自动追踪才生效。
b、避免追踪游戏者自己:目前无法区分识别出来的图像是自己还是其他人,钢枪或者搜索时切换为T第一人称视图,避免检测到游戏者自己。

2、使用windows hook及鼠标键盘api实现了鼠标键盘操作模拟,HIDDriver驱动程序不再是必须项。在绝地求生、逆战、穿越火线三个游戏上测试,可以正常工作。推测现在的游戏安全检测侧重游戏内部的行为数据检测,游戏外部环境中windwos hook等通用操作机制不再管控

3、HIDDriver鼠标键盘模拟驱动已移除,这个驱动没有微软颁发的正式证书,只能在win 10测试模式下执行。如果要尝试,参考项目说明:
https://github.com/dengqizhou30/HIDDriver

五、游戏截图:
穿越火线游戏截图:
blockchain
blockchain

aiassistopencv's People

Contributors

dengqizhou30 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aiassistopencv's Issues

AIAssistOpenCV试用反馈

显卡:5700xt
CPU:5900x

识别延迟较高,exe程序里显示42-50ms,但使用起来感觉几乎没识别,包括识别距离,得很近,那个压枪功能的触发,有点让人暴躁,很呆滞

编译不通过

老哥,我是直接git把代码拉下来,但是opencv的库, tensorflow这些库我看着都没有啊。以至于编译就没办法通过。我最近是想在学习通过程序控制游戏里的人物,特别是对鼠标在游戏里的点击、移动, 游戏的截图等等。这份代码看见时候我是相当的兴奋。拉下来了编不过,目前来说我是想学习对于鼠标在游戏里的控制,但是我看了下源码里,都是一些简单基础的Windows API . 但我所了解的游戏都会有一些屏蔽,所以如果可以的话。还想向老哥请教一些专业知识。我的Q:124042540. 感谢

很不错,工作也比较正常

先没研究src,直接上的是你的release ...5800h + 3060 ,识别速度在45ms 左右。基本还是能跟住人,但是位置要做下偏移修正...
等下看下src 能否过,能过可玩性就比较高了..xD

总之感谢开源

bug反馈:始终锁定、监控窗口乱码

环境:Win11 i5 12490F+Rx5700XT 鼠标GPW2+雷蛇蝰蛇终极版 键盘VGN98Pro+G910,双屏; 实测无法实现按住鼠标右键锁定,只要开启锁定就会始终锁定,监控窗口在重新选择游戏后会呈现条纹乱码,实际效果不会受影响,重启软件可以解决。
想问下其他人有没有出现过开启按住右键锁定结果持续锁定的情况

想知道自动追踪和压枪的实现细节,以及一些问题

你好,很感谢你开发这个软件

基于深度学习的游戏辅助是这个领域的未来,传统的逆向工程军备竞赛现状导致的高昂开发成本和使用成本会以此被避免。辅助程序制作难度和使用成本将因此极大降低。
我一直认为这种技术下的辅助程序应被开发出开源通用框架,提供面向多种游戏的高拓展性修改能力,对关键逻辑的抽象进行标准化(比如图像检测、轨迹模拟、环境建模、样本采集、输入、硬件管理和通信、辅助功能),将含有检测风险的逻辑分离,让开发者专注于解决避免检测的适配问题

这种辅助程序在道德上可以解释为使任何人获得普通玩家水平,减少低级错误,以此提高部分游戏的战术性,同时减少游玩疲劳,并且通过开发优势和使用压缩基于传统原理的暴力外挂的生存空间,且因其免检测原理成为与卖金、攻略一样无可避免的共存者

想问一下自动追踪和压枪的实现细节,因为游戏完全可以对玩家输入数据进行检测,粗暴的迫近或pid控制器等在人类视觉中都十分明显的轨迹会被轻易识别,该种辅助成熟后反作弊厂商必然会引入大规模深度学习轨迹筛查,因此发展的结果或许是深度学习模拟玩家在各种情况下的输入轨迹

建议:将检测和辅助逻辑分离,使辅助逻辑可以被c#、python等简单语言编写,让更多人参与到开发中

增加图像伸缩功能,使高分辨率显示器的检测区域不至于太小

制作外接硬件的标准软件接口,制作针对通用可编程输入硬件的教程

使用舒缓的追踪和开火方法,并提供选项。如学习手柄的瞄准辅助:移动至人体范围内降低鼠标灵敏度,或者在光标偏移过度时提供对玩家输入矢量相反方向的方向修正,而不直接提供玩家操作中不存在的新移动位置。选项则在深度学习模拟玩家输入轨迹和开火模式前提供经验修正方法,如故意的空射击和移动过度

程序有在处理但无法追踪

Win11
2540,1440显示器
检查区域360-220
开启自动追踪(持续追踪)

游戏只试了cf,试过更改分辨率,试过更改dpi,按数字键1和2(切换武器)都没有反应。但是能看得到Ai游戏助手里面有图像处理。期间有一两次不知道为什么可以追踪,但换武器再换回来就没了。

后面发现了在游戏内软件无法操控鼠标,游戏外可以。但不知道怎么解决

鼠标无法跟踪

使用的是编译后的可执行程序,能正常识别,开始追踪后鼠标不移动

如何自己更新软件包

想使用更新的代码但不会更新软件包 想加入新的模型
没有软件包应该如何运行呢

请问能否实现调整虚拟准星的位置

在预留的其他游戏里准星还是固定识别的屏幕正中心,但有一部分FPS的实际准星其实会在屏幕的其他地方,如果可以在程序里手动调整准星位置的话感觉适用范围会大大增加

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.