yolov5检测cs2中的目标

news2024/12/23 16:14:10
环境介绍

系统: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,所以我下载了DNN版本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.coloradmin.cn/o/1059700.html

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

相关文章

VUE3照本宣科——响应式与生命周期钩子

VUE3照本宣科——响应式与生命周期钩子 前言一、响应式1.ref()2.reactive()3.computed()4.watch()5.代码演示 二、defineProps() 和 defineEmits()三、生命周期钩子1.onMounted()2.onUpdated()3.onUnmounted()4.onBeforeMount()5.onBeforeUpdate()6.onBeforeUnmount()7.onError…

公众号突破2个限制技巧

许多用户在注册公众号时可能会遇到“公众号显示主体已达上限”的问题。这是因为在2018年11月16日对公众号注册数量进行了调整,具体调整如下:1、个人主体注册公众号数量上限从2个调整为1个。2、企业主体注册公众号数量上限从5个调整为2个。这意味着&#…

vs2015 执行后出来空白界面的解决

为什么在visual studio上写的代码点击开始执行,出来的是空白界面?(代码没问题)? - 知乎 Visual Studio 2015 - 新建 C/C 项目 (Project)_vs2015创建一个c项目-CSDN博客

微信小程序点单左右联动的效果实现

微信小程序点单左右联动的效果实现 原理解析:   点击左边标签会跳到右边相应位置:点击改变rightCur值,转跳相应位置滑动右边,左边标签会跳到相应的位置:监听并且设置每个右边元素的top和bottom,再判断当…

Linux内存管理 | 一、内存管理的由来及思想

我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! …

Linux系统常用指令篇---(一)

Linux系统常用指令篇—(一) 1.cd指令 Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。 语法:cd 目录名 功能:改变工作目录。将当前工作目录改变到指定的目录下。 (简单理解为进入指定目录下) 举例: cd .. : 返…

maven 初学

1. maven 安装 配置安装 路径 maven 下载位置: D:\software\apache-maven-3.8.6 默认仓库位置: C:\Users\star-dream\.m2\repository 【已更改】 本地仓库设置为&#xff1a;D:\software\apache-maven-3.8.6\.m2\repository 镜像已更改为阿里云中央镜像仓库 <mirrors>…

文件编码格式

一、问题场景 笔者在写controller层出现了一些小问题&#xff1a;测试controller层的一些请求的时候&#xff0c;后端控制台打印的是乱码&#xff0c;网上找了很多说改UTF-8的&#xff0c;但是我去设置里面全部都改为UTF-8了&#xff0c;结果仍然无济于事&#xff0c;甚至还把…

flink自定义窗口分配器

背景 我们知道处理常用的滑动窗口分配器&#xff0c;滚动窗口分配器&#xff0c;全局窗口分配器&#xff0c;会话窗口分配器外&#xff0c;我们可以实现自己的自定义窗口分配器&#xff0c;以实现我们的自己的窗口逻辑 自定义窗口分配器的实现 package wikiedits.assigner;i…

camtasia 2023怎么导出mp4

MP4是常见的视频格式之一&#xff0c;那么使用电脑录屏软件Camtasia完成对视频的剪辑后&#xff0c;如何将其导出为MP4格式保存在我们的电脑中呢&#xff1f; 1.剪辑好视频后&#xff0c;我们找到软件界面右上角的“导出”按钮。 Camtasia Studio- 2023 win-安装包&#xff1a…

【数据结构】布隆过滤器

布隆过滤器的提出 在注册账号设置昵称的时候&#xff0c;为了保证每个用户昵称的唯一性&#xff0c;系统必须检测你输入的昵称是否被使用过&#xff0c;这本质就是一个key的模型&#xff0c;我们只需要判断这个昵称被用过&#xff0c;还是没被用过。 方法一&#xff1a;用红黑…

C/C++学习 -- 分组加密算法(DES算法)

数据加密标准&#xff08;Data Encryption Standard&#xff0c;DES&#xff09;是一种对称密钥加密算法&#xff0c;是信息安全领域的经典之作。本文将深入探讨DES算法的概述、特点、原理&#xff0c;以及提供C语言和C语言实现DES算法的代码案例。 一、DES算法概述 DES算法是…

【网络安全---XSS漏洞(1)】XSS漏洞原理,产生原因,以及XSS漏洞的分类。附带案例和payload让你快速学习XSS漏洞

一&#xff0c;什么是XSS漏洞&#xff1f; XSS全称&#xff08;Cross Site Scripting&#xff09;跨站脚本攻击&#xff0c;为了避免和CSS层叠样式表名称冲突&#xff0c;所以改为了XSS&#xff0c;是最常见的Web应用程序安全漏洞之一&#xff0c;位于OWASP top 10 2013/2017年…

idea配置文件属性提示消息解决方案

在项目文件路径下找到你没有属性提示消息的文件 选中&#xff0c;ok即可 如果遇到ok无法确认的情况&#xff1a; 在下图所示位置填写配置文件名称即可

lv7 嵌入式开发-网络编程开发 06 socket套接字及TCP的实现框架

目录 1 socket套接字 1.1 体系结构的两种形式 1.2 几种常见的网络编程接口 1.3 socket套接字 2 socket常用API介绍 2.1 API 2.2 地址族结构体 2.3 套接字类型 2.4 socket套接字 3 TCP通信的实现过程 4 练习 1 socket套接字 1.1 体系结构的两种形式 网络的体系结构 …

想要精通算法和SQL的成长之路 - 二叉树的判断问题(子树判断 | 对称性 | 一致性判断)

想要精通算法和SQL的成长之路 - 二叉树的判断问题 前言一. 相同的树二. 对称二叉树三. 判断子树 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 相同的树 原题链接 这题目典型的递归题&#xff1a; 如果两个节点都是null&#xff0c;我们返回true。如果两个节点一个nul…

【Linux】—— 详解软硬链接

前言&#xff1a; 本期&#xff0c;我将要给大家讲解的是有关 Linux下软硬链接的相关知识&#xff01;&#xff01;&#xff01; 目录 前言 &#xff08;一&#xff09;理解硬链接 1.什么是硬链接 2.创建硬链接 3.硬链接的使用场景 &#xff08;二&#xff09;理解软链接…

麦田物语学习

设置预设 将对一个物体的操作保存下来&#xff0c;直接用于其他的物体&#xff0c;比较省力 当设置好一个物体后点击箭头所指的地方&#xff0c;保存预设&#xff0c;在其他物体的面板里点击预设使用 sprite renderer 图片渲染顺序参考点 修改游戏的渲染方式 修改为按照 y 轴…

操作系统学习笔记2

文章目录 1、进程管理逻辑图2、进程的由来 参考视频&#xff1a; 操作系统 1、进程管理逻辑图 2、进程的由来

芯驰D9评测(2)--系统环境配置连接

linux开发板的软件开发三件套&#xff1a; 建立连接-->建立交叉编译环境-->建立驱动开发环境。 如果我们不涉及镜像的深度定制&#xff0c;只是平台化应用的话 1. 建立串口连接 查看手册&#xff0c; 获取接口定义说明&#xff1a; 板载一共两个端子&#xff0c;三个…