yolov5检测cs2中的目标

环境介绍

系统:Windows11

显卡:4070ti

cuda:11.8

配置环境
python环境

安装python的虚拟环境anaconda。Free Download | Anaconda

成功安装后可以按Win键搜索anaconda,可以看到桌面版和命令行版本,我们这里直接用命令行版本。

Figure 1
Figure 1

其中Anaconda powershell prompt为命令行的版本,点击进入。

Figure 2

可看到默认已经有base的环境了。而我们需要创建一个环境,让YOLOv5可以正常运行。所以我们创建一个新的环境。使用命令行conda activate -n yolo   此命令的含义是建立一个名为yolo的虚拟python环境。而我们要安装的包都要在这个环境下安装,用于和其他环境隔离。 你也可以不用使用conda,直接在本机上安装yolov5的所有环境也是可以的,但是并不建议这样做。

cuda环境

如果没有显卡可以不跳过cuda环境

查看自己的显卡可以使用的cuda版本,我这个显卡是可以安装cuda12的版本。但是我们yolov5依赖的深度学习框架pytorch 2.0.1版本最大支持11.8。下载链接。我安装了几个不同的cuda版本用于切换。

切换时可以找到环境变量->系统变量->Path

Figure 3

将需要的版本上移。此处我将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin、C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp 均上移。记住上移之后重启电脑生效

重启电脑之后再命令行输入命令 nvcc -V 可以查看当前的cuda版本

然后还需要下载cuDNN

以为我们的cuda版本 是11.8,所以我下载了Download cuDNN v8.9.4 (August 8th, 2023), for CUDA 11.x

下载压缩包之后就解压。

将解压之后的文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 下,就是刚才环境变量中的那个版本路径

yolov5环境

下载yolov5的源码,可以直接从https://github.com/ultralytics/yolov5 下载,如果觉得慢可以去gitee搜索一下,肯定有人同步过。

下载完成之后使用刚才Figure 2的conda命令行,cd 到yolov5的目录下

pip install -r .\requirements.txt 使用该命令安装yolov5需要的环境。requirements.txt文件是源码中的文件,描述了这个程序运行需要的环境

如果使用显卡训练,则需要安装下显卡版本的pytorch,上面的环境默认只安装cpu的版本。

Start Locally | PyTorch 进入这个网页,选好环境。 我们这个选择的是windows和conda,cuda版本选择11.8,然后版本选择2.0.1  然后看到提示安装的命令行,复制这个命令到上图的powershell中运行。

运行之后pytorch的环境就配置好了。

代码介绍

使用vscode打开yolov5的文件夹。 其中核心的文件有train.py,detect.py文件,用于训练和检测任务。

训练

我这里只描述用法,打开train.py文件,大概442行左右就包含了我们需要传入的参数。

我这里就直接改default这里的参数了,正确做法应该是建立launch.json文件来传入这些参数

其中 --weights 为权重参数,可以给它一个预训练的权重文件,我这个直接用yolov5s.pt这个默认的,这个是原本就有的文件。

--device 表示用什么设备来训练,如果直接使用cpu可以不改。 我这里用的是gpu,所有默认值改成0

--epochs 表示训练次数

--data 这里需要给训练集和验证集的数据,这里执行我自己建立的在data目录下的cs2.yaml文件,这里的文件描述我参考。

path表示数据集的根目录,我这里用的相对目录。 如果不熟的话可以直接使用绝对路径

然后在这个目录下建立训练集和验证集的路径, 测试集可以不用。 然后训练集和验证集可以先设为一个路径,先跑通代码再说也是可以的。

names:  这里代表命名。 我这里有4个类别,其中0是匪、1是警、2是死亡人物、3是未激活的人物

这个是我的路径。  然后train和val分别代表数据集和验证集。

他们文件夹下的目录结构是一样的,分别有images和lables目录,分别存有图片和对这个图片的标注。例如

labels.cache是训练过程中的中间文件,不用管。 val下也是一样的文件目录结构。下面讲解如果生产lables和训练用的图片

标注

图片可以直接打开游戏,玩上两把然后录屏。在播放器中播放,等播放到有人物的时候暂停截图。例如我截图

截图之后放到某一个目录下。

然后下载标注软件,我这里用的是Labeling

打开刚才存有截屏的目录,而且记得将标注文件格式改成yolo

最好记得快捷键 a 上张图、 d 下张图 、w 标注。  而且记得改下他的predefined_classes.txt 文件,不然它会预加载一些用不到的类别。可以设置为自动保存,方便标注。

标注完成之后,在图片的目录下就有同名不同格式的标注文件的,将目录下的图片复制到上述的cs2/train/images文件中、而对应的标注文件 cs2/trian/lables中。 当然留一些样本给验证集,就是放一些到cs/val中,和训练集一样。

训练结果

回到vscode中,打开train.py文件,并将右下角的环境改成conda 'yolo'

然后F5运行

训练结束后会在输出窗口显示,训练结果文件在哪输出。 默认在 yolov5/runs/train/exp*  文件下,exp后面接的数字代表第几次训练。找到最大的数字的目录,里面就是结果,有很多结果的图表。最重要就是 Weights文件夹下的两个权重文件,我们使用best.pt 这个是训练结果最好的权重文件,last.pt只是最后一轮的结果。

测试

vscode 打开detect.py文件, 我这里还是创建了launch.json文件,用来传入检测参数。

可以看到best.pt我直接复制到YOLOv5目录下,所以我的权重参数--weights也指向此地址。

--source 这个参数作为检测源,这个直接使用屏幕截屏。 它会边截屏边检测。参数是 "screen 1 0 0 2560 1440" 含义是,第一个屏幕,坐标为0,0 长为2560 宽1440的区域截屏。 可以看出我的显示器是2K的。

--conf-thres 置信度过滤  我这里设置为低于0.6不返回结果

--iou-thres 可以认为是检测框能框到人物的这个坐标的精度

--max-det 是最大能检测的目标总数

--move-mouse 不要管,这个是我自己写的自动瞄准选项

--classes 表示只检测哪些目标

这个文件写好之后就可以返回detect.py文件  F5启动

然后打开游戏,晚上一把。 结束之后

此处可以按 Ctrl+C启动

当然也可以不使用Python启动这个。  可以打开conda命令行,切换到yolo环境。 直接Python detect.py -- 参数   这样启动也可以。

结束之后就可以在默认的目录找到输出的结果,一般在上述的runs/detect/exp* 目录下,这个截图的方式检测会返回一个视频。 下面是一些结果的演示

检测效果

其他任务的建议

如果想进一步操作鼠标。 在游戏普通的win32api是无法自动挪移的,建议使用pyautoti模块的鼠标部分。然后最好开窗口模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147751.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

spring-boot入门之如何利用idea创建一个spring-boot项目

1.创建流程!!! 选择新建项目,这里我们需要注意是基于maven建立的和java版本和jdk版本要对应 这里我们是基于web项目创建的记得选择这个框架。 2.测试程序 编写hello测试类 我们需要通过程序的入口进行启动程序。idea已经为我们自…

C++算法 —— 动态规划(7)两个数组的dp

文章目录 1、动规思路简介2、最长公共子序列3、不相交的线4、不同的子序列5、通配符匹配6、正则表达式匹配7、交错字符串8、两个字符串的最小ASCII删除和9、最长重复子数组 每一种算法都最好看完第一篇再去找要看的博客,因为这样会帮你梳理好思路,看接下…

vue项目开发环境工具-node

最近在开始接触做vue框架的前端项目,以前用的前端比如html,js,css等都是比较原生的,写好后直接浏览器打开就行。但vue跟java一样是需要编译的,和微信小程序类似。今天就先记录一下vue的开发运行搭建。所需工具如下 nod…

【MySQL】MySQL 官方安装包形式

MySQL 官方提供3种包: 1. 源码包 mysql-5.7.42.tar.gz mysql-5.7.42-aarch64.tar.gz http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42.tar.gz需要用户根据自己的CPU架构选择对应的…

vue3+ts创建前端blog项目

vue3创建blog项目 cmd创建Manually select featuresChoose Vue versionUse class-style component syntax? (Y/n)Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? (Y/n)Use history mode for router?Pick a CSS pre…

Python之函数、模块、包库

函数、模块、包库基础概念和作用 A、函数 减少代码重复 将复杂问题代码分解成简单模块 提高代码可读性 复用老代码 """ 函数 """# 定义一个函数 def my_fuvtion():# 函数执行部分print(这是一个函数)# 定义带有参数的函数 def say_hello(n…

码科速送同城跑腿小程序 v3.2.8+用户端+接单端 安装测试教程

码科速送同城跑腿V3.2.8版本包含骑手端用户端小程序!骑手端码科跑腿快速发单,码科速送同城跑腿小程序是一款专用于同城跑腿小程序源码,播播资源针对这系统安装后感觉配置比较折腾人,不过正常使用后基本没发现什么BUG。本版本并非开…

摄影后期图像编辑软件Lightroom Classic 2023 mac中文特点介绍

Lightroom Classic 2023 mac是一款图像处理软件,是数字摄影后期制作的重要工具之一,lrc2023 mac适合数字摄影后期制作、摄影师、设计师等专业人士使用。 Lightroom Classic 2023 mac软件特点 高效的图像管理:Lightroom Classic提供了强大的图…

JUC——并发编程—第四部分

理解JMM Volatile是Java虚拟机提供的轻量级的同步机制。有三大特性。 1.保证可见性 2.不保证原子性 3.禁止指令重排 定义:Java内存模型,是一个概念。 关于JMM的一些同步的约定: 1、线程解锁前,必须把共享变量立刻刷回主存. 2、线程加锁前&#x…

【AI视野·今日Robot 机器人论文速览 第四十三期】Thu, 28 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 28 Sep 2023 Totally 37 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚****触觉力控学习策略,基于触觉的主动推理与力控用于小孔插入任务。提出了姿态控制与插入控制双策略模型。 (from 东京大学…

HTML开篇之安装VSvode(用记事本编辑HTML)

文章目录 前端开篇开篇知识点讲解1.HTML 结构1.1认识 HTML 标签1.2HTML 文件基本结构1.3标签层次结构1.4快速生成代码框架1.5用记事本写HTML1.6前端开发工具1.7下载vscode 及使用教学 大家好,我是晓星航。今天为大家带来的是 HTML 相关的讲解!&#x1f6…

redis的简单使用

文章目录 环境安装与配置redis发布-订阅相关命令redis发布-订阅的客户端编程redis的订阅发布的例子 环境安装与配置 sudo apt-get install redis-server # ubuntu命令安装redis服务ubuntu通过上面命令安装完redis,会自动启动redis服务,通过ps命令确认&a…

【数组及指针经典笔试题解析】

1.数组和指针笔试题 题目1 int main(){int a[5] { 1,2,3,4,5};int * ptr (int * )(&a 1);printf("%d,%d",*(a 1),*(ptr - 1));return 0;}图文解析: int * ptr …

批量删除wordpress文章修订版本/自动草稿残留数据(3种方法)及四种方法禁用WordPress文章历史修订/自动保存/自动草稿功能

目录 1、批量删除wordpress文章修订版本/自动草稿残留数据(3种方法) 方法一:SQL命令批量删除 命令: 方法二:利用PHP代码来删除 方法三:利用数据库清理优化插件 WP Clean Up 或 WP Cleaner 批量删除 2…

PowerPoint如何设置密码?

PowerPoint,也就是PPT,是很多人工作中经常用的办公软件,而PPT和Word、Excel等一样可以设置密码保护。 PPT可以设置两种密码,一种是“打开密码”,也就是需要密码才能打开PPT;还有一种是设置成有密码的“只读…

Leetcode字符串题目

1 sslist(s) ttlist(t) ss.sort() tt.sort() return sstt 时间复杂度更低的代码 2 dict1{} dict2{} for ch in s:dict1[ch]dict1.get(ch,0)1 # 如果有ch,则原有位置加一,没有的话就创建了(01) for ch in t:dict2[ch]dict2.get(ch,0)1 return dict1…

【C语言】函数的定义、传参与调用(一)

目录 导读: 1. 为什么要用函数 2. C语言中函数的分类 2.1 库函数 2.1.1 什么是库函数 2.1.2 C语言常用的库函数 2.2 自定义函数 2.2.1 什么是自定义函数 2.2.2 定义函数的方法 2.2.3 举例 3. 函数的参数 3.1 传参不同的对比 3.2 形式参数(形…

列表的增删改查和遍历

任务概念 什么是任务 任务是一个参数为指针,无法返回的函数,函数体为死循环不能返回任务的实现过程 每个任务是独立的,需要为任务分别分配栈称为任务栈,通常是预定义的全局数组,也可以是动态分配的一段内存空间&#…

腾讯云域名API解析升级版本(通过Java实现)腾讯云动态公网IP绑定域名实现内网服务器公网穿透

公众号推广: 目前CSDN进行VIP可见,文章可在微信公众号进行免费的阅读。 文章内容经过认证实践,比较的清晰易懂,适合初次接触的人员。 请关注微信公众号:菜鸟编程踩坑之路,进入公众号搜索关键词 内网穿透 需求场景: 首先我自己组装了一台自己的服务器,相比较购买的阿…

CVE-2020-11978 Apache Airflow 命令注入漏洞分析与利用

简介 漏洞软件&#xff1a;Apache Airflow影响版本&#xff1a;< 1.10.10 环境 Vulhub 漏洞测试靶场 复现步骤 进入 /root/vulhub/airflow/CVE-2020-11978/ 目录运行以下命令启动环境 # 初始化数据库 docker compose run airflow-init # 开启服务 docker compose up -…