基于YOLOV5的自动瞄准(附代码)

您所在的位置:网站首页 csgo免费脚本 基于YOLOV5的自动瞄准(附代码)

基于YOLOV5的自动瞄准(附代码)

2023-12-18 16:33| 来源: 网络整理| 查看: 265

本篇使用CS:GO 进行测试,测试环境:3060 Laptop i7-12700h 底部有源码

在对YOLOV5 detect.py摸索几天后发现 YOLOV5 的架构真的很清晰,从应用的角度上来说是真的方便

YOLOV5 官方的detect.py 中有着非常完整的功能,从读取图片到调用摄像头都已经写好了代码,只需要阅读一下官方文档,更改下启动参数基本就可以完成物体检测的任务。

本次代码是基于 detect.py 精简和改进而来,代码都是现有的,但是自己上手体会一下流程才能更好理解

先说结论:

我个人感觉帧率还是偏低,对移动的物体的跟踪还是不够强,也勉强够用,后续优化应该会更好

但是相较于原版的detect.py 速度“快”了大半(这个快后面有解释)

过程分析:

基本流程:

对于一个辅助瞄准来说有着以下基本的流程:

获取屏幕 -> 目标检测 - 获得坐标 - 移动鼠标 - 判断是否已经瞄准 - 按下开火

我选择的是将 “判断是否已经瞄准”放到下一帧去处理(因为判断是需要再获取一次物体坐标的)

具体步骤:

获取屏幕:

https://www.simplifiedpython.net/python-screenshot/ Python获取屏幕截图的4种方法_jokerzhango.O的博客

除了这几种,YOLOV5中还有自带的截图模块:

dataset = LoadScreenshots(source, img_size=imgsz, stride=stride, auto=pt) for path, im, im0s, vid_cap, s in dataset:

在这个5个截图方式中,我选择了 win32api(PyQt的性能我测的是没有win32api好的,也许是我的原因)

win32 api 截取 640* 640 的图片大概需要 10ms 左右, 不同的配置会有所差异

目标检测:

这倒是简单,毕竟YOLOV5中已经有源代码了,只需要正确地把图片送进去就可以

关于这个正确的是怎么个正确法 在下面有写踩坑,这里就不复述了

获得坐标:

for *xyxy, conf, cls in reversed(det):     ppl_list = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist()

ppl_list 中的是坐标框的xywh(检测框中心的 x y 坐标 , 检测框的宽度和高度)

要注意的是这几个数据都是百分比的形式(0.52314) 需要乘以图片的长宽才可以用

移动鼠标:

由于大部分游戏都有限制,导致例如pyautogui 类的库都没法使用,在我网上找了大半圈后,本着就简的原则 发现了pydirectinput 这个库,能够在游戏内移动视角,但那篇帖子找不到啦

判断是否已经瞄准:

这个是倒数第二简单的,用 ppl_list 中获得的检测框中心的(x,y)坐标与屏幕中心来计算距离

choose_close[0] _


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3