用yolov5训练自己的数据集【绝对能学会系列】

news2025/1/16 16:12:07

【第一部分:环境搭建;第二部分:测试代码;第三部分:训练自己的数据集】

第一部分:环境搭建

首先确保您的电脑上面有Anaconda和PyCharm。

去一个您喜欢的地方创建一个文件夹【不创建也ok,直接打开cmd】:(注意最好不要有中文路径!)

输入:

activate

激活环境,出现以下界面说明你的conda是没有问题的,处于base环境下:

然后后续需要安装各种包嘛,所以我们可以切换一下源,让下载速度更快(之前试过清华的源,这次试一下中科大的源):

conda config --remove-key channelsconda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/conda config --set show_channel_urls yespip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

ok,切换完了。

去白嫖一个项目下来修改,综合网络上的百花齐放的资料,我觉得这个是个不错的项目:(没有gitee账号的先去注册登录一下)

YOLOV5-mask-42: 基于YOLOV5的口罩检测系统-提供教学视频 (gitee.com)

(记得给人家点赞收藏转发,哈哈)

ok,下载下来并解压到刚刚创建的那个文件里边,如下:

首先先用cmd打开根目录(就是yolov5-mask-42-master),然后创建虚拟环境:

conda create -n py811 python==3.8.5

(py811指的是虚拟环境的名字,python版本指定3.8.5)

出现以下界面说明创建成功:

然后需要激活这个环境:

conda activate py811

(出现左边这个小括号说明你正处于这个环境下面,是ok的)

该项目是基于pytorch框架的,所以需要去安装pytorch。

so,去pytoch官网找命令:

(另外,复制命令的时候后面的"-c pytorch"可以不选中,“-c pytorch”表示首选从国外的源进行加载,速度会灰常灰常慢。)

ok,选第一条命令复制到cmd:

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2

安装到这里的时候好像卡住了?等一会试试?

ok的,没有问题,要有耐心哈哈哈:(怎么和别的博主不一样,他们的飞快?哈哈)

安装完了之后就是安装项目的第三方依赖包,安装第三方包的时候注意你所处的环境一定是py811就行,也可以用"dir"看一下,目录下一定要有这个requirements.txt文件:

然后就放心安装:

pip install -r requirements.txt

等待几分钟......

ok,第三方依赖也安装好了:

(呜呜我看了一下我的盘儿,挺占内存的啊)

再额外安装几个库,第一个是用来计算目标检测精度和map值的:(windows下,如果你是Linux,去掉"-windows")

pip install pycocotools-windows

第二个是用来展示图形化界面的:

pip install pyqt5

ok,目前代码所需要的依赖包就安装好了,也就是环境都搭建好了。

第二部分:测试代码

试一下看代码能不能跑通:

先简单看两个文件夹的东西,有助于跑代码:

第一个是:

项目中的pretrained文件夹里面存放的是三个预训练模型的权重文件,代表含义如下:

预训练模型是具有检测物体的能力的,它是已经在coco数据集上做过训练的。

"yolov5s.pt"比较小,咱直接采用它去做训练。

第二个是data下面的images文件夹(这是项目本身自带的图片哈):

看到bus.jpg木有,我们就检测一下这一张图片:

python detect.py --source data/images/bus.jpg --weights pretrained/yolov5s.pt

出现这些信息就说明是能跑通的,至于输出来的是什么东西,感兴趣可以去看看之前的几篇文章,有细讲,包括命令行输入的又是什么东西。(文末可以跳转到相应的文章)

看一下他执行完输出的测试结果吧:

ok,这也说明代码是可以跑通的。

在pycharm里面打开项目吧,好看一点,初次打开需要配置环境(保证右下角处于py811环境,也就是刚刚搭建的环境里):

番外:也不知道你们会不会调环境出来,不会的简单参考一下这张图:

同理,打开之后也可以先执行一下:(这张图片不是原有的,是临时随便截图的放进来的)

python detect.py --source data/images/dogs.png --weights pretrained/yolov5s.pt

在红框的路径看预测结果:

打开路径下的图片会发现图上什么显示都没有【因为这个项目是下载的别人的口罩检测的项目(而且你会发现他其实也检测不出来口罩,因为这个下载下来的项目没有提供口罩数据集,如果不做任何更改,其实他就是一个yolov5的原项目。我之所以会下载这一个是因为里面有我想要的东西哈哈),我想做的是检测狗狗和狗狗的舌头的任务,这也就是如标题所说的训练自己的数据,我的数据集不是口罩哦,因此我们接下来要做的就是如何训练自己的数据集】

第三部分:训练自己的数据集

对数据进行标注(借助labelimg工具):

pip install labelimg

进入labelimg:

labelimg

这时候他就会弹出labelimg,这就是用来进行数据标注的工具:

各个图标的含义:

一般,第一次打开这个软件先需要进行几个修改:

由于前面介绍了我的数据集是狗狗,所以我去搞了1200张狗狗的图片作为需要标注的图片:(哈哈这个数据集有没有很眼熟,没错,就是猫狗大战的那个,不喜欢的话可以去爬其他的),并把这6张图片放在images目录下:(这一个路径就需要加载到labelimg的Open Dir)【如需要该标注后的数据集,文末有放!不过需要一点点💴💴哈哈】

并在images的同级目录下创建一个labels文件夹,如图(这个路径需要加载到labelimg的Change Save Dir)

把这几个调整过来之后,labelimg的界面如下:(如果在点击过程中遇到闪退情况,在cmd再运行一下labelimg即可)

然后进行标注任务:(点击下一张图片的时候ctrl+s保存一下或者左边的save键)

yolov5狗狗标注视频

标完了之后可以打开labels看一下:

0.543003 0.465962 0.712828 0.913146:前面两个代表中心点坐标,后面表示w和h,这里这个数据都是做了归一化处理的,这样的话模型算得会更快

(注意,图片名称和标签名称应该是一一对应的哦)

标注完了之后:

将数据集按照8:2划分为训练集和测试集。(直接手动拖就行)

so,我的训练集有960张,测试集有240张,存放的位置和内容如下:

(训练集路径)

(测试集路径)

接下来就是改代码部分的东西了:

第一个要改的就是yolov5s.yaml配置文件(模型的配置文件):(可以直接在yolov5s.yaml文件中把类别改为2,也可以如图所示复制到一个新文件再改)

第二个就是data.yaml(数据集的配置文件):【建议新建一个更改如下的内容即可】

ok,可以开始训练模型了。

可以去改train代码的内容进行模型训练,但是我一般不去更改,直接命令行输入参数也可以:

python train.py --data DogTongue_data.yaml --cfg dogtongue_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 2

运行这一句话的时候可能会遇到一个报错:

解决办法为:

完了之后立即重启电脑,再去pycharm运行那行命令,然后等待100轮训练完成:

训练完了之后:

新训练的结果会保存在runs下的train目录下:

(后续会更新训练完后的)

在训练完之后对生成权重文件进行验证(val.py进行):

python val.py --data data/DogTongue_data.yaml --weights runs/train/exp4/weights/best.pt --img 640

然后去到这个项目的windows.py文件中第的60行:

最后运行这个windows.py:

得到它的可视化界面,然后上传自己的图片预测即可:

(看过前面的文章就会知道在之前没有自己的数据集的时候预测这张狗狗的图片是不成功的,这里就能正确预测出来!)

over!​

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

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

相关文章

Jay17 2023.8.12日报

8.12 今天做了2题,CTFshow 红包挑战8(PHP create_function())和BUU [RoarCTF 2019]Easy Java(web.xml泄露)。 此外一直在打NepCTF,出了一题(ez_java_checkin)简单了解了java中shri…

智能优化算法:人类行为优化算法-附代码

智能优化算法:人类行为优化算法 文章目录 智能优化算法:人类行为优化算法1.人类行为优化2.实验结果3.参考文献4.Matlab5.python 摘要:HBBO 是 Seyed-Alireza Ahmadi 于 2017 年基于人类行为而提出的一种新型元启发式优化算法。。具有寻优能力…

EVE-NG 镜像导入

目录 1.文件构成 2.导入锐捷镜像 2.1 上传模板 2.2 上传图标 2.3上传启动镜像 2.4上传配置脚本 2.5 修复文件权限 2.6 查看​ 1.文件构成 eve-ng 镜像由4个文件构成 1.启动镜像:运行时加载的磁盘镜像文件; 2.图标:在拓扑中显示的图…

基于OFDM+QPSK的通信系统误码率matlab仿真,对比不同同步误差对系统误码率的影响

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1.1 OFDM 原理 1.2 QPSK 原理 1.3 同步误差对系统性能的影响 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ...........................…

运维监控学习笔记3

DELL的IPMI页面的登录: 风扇的状态: 电源温度:超过70度就告警: 日志信息: 可以看到更换过磁盘。 iDRAC的设置 虚拟控制台:启动远程控制台: 可以进行远程控制。 机房工程师帮我们接远程控制&…

Confluence(wiki)搭建遇到创建的文档乱码问题的解决

在公司使用这个知识管理协同的工具的时候,感觉用起来还不错,自己就想着搭建一套玩玩; 用的是docker搭建,具体就是搞docker compose文件管理起来, 但是当我搭建完毕之后创建学习目录的时候发现全是?&#x…

leetcode---357单周赛

题目列表 2810. 故障键盘 2811. 判断是否能拆分数组 2812. 找出最安全路径 2813. 子序列最大优雅度 一、故障键盘 这题可以直接模拟&#xff0c;时间复杂度是O(n^2)&#xff0c;代码如下 class Solution { public:string finalString(string s) {string x;for(int i0;i<…

asp.net core webapi如何执行周期性任务

使用Api执行周期性任务 第一种&#xff0c;无图形化界面1.新建类&#xff0c;继承IJob&#xff0c;在实现的方法种书写需要周期性执行的事件。2.编写方法类&#xff0c;定义事件执行方式3.在启动方法中&#xff0c;进行设置&#xff0c;.net 6中在program.cs的Main方法中&#…

猿人学刷题系列(第一届比赛)——第二题( js 混淆 - 动态cookie 1)

题目&#xff1a;提取全部5页发布日热度的值&#xff0c;计算所有值的加和 地址&#xff1a;https://match.yuanrenxue.cn/match/2 思路分析 本题我们会简单说一下两种不同的方式去处理&#xff0c;一种是不还原混淆代码直接从源代码硬扣生成逻辑&#xff0c;另一种则是还原…

小程序具体开发

window 导航栏 属性名类型默认值作用navigationBarTitleText string字字符串导航栏标题内容navigationBarBackgroundColorHexcolor#000000设置导航栏背景颜色&#xff08;比如荧黄色 #ffa&#xff09;navigationBarTextStylestringwhite设置导航栏标题的颜色&#xff08;仅含有…

运维监控学习笔记2

硬件监控&#xff1a; 1&#xff09;使用IPMI 2&#xff09;机房巡检 路由器和交换机&#xff1a; 使用SNMP&#xff08;简单网络管理协议&#xff09;进行监控。 Linux 安装snmp&#xff1a; yum install -y net-snmp net-snmp-utils 说明&#xff1a;net-snmp是安装在snm…

swager web服务无法显示问题

如果指定了扫描其他包 那么web文件夹里面的就扫描不到 需要加上扫描扫描web的 &#xff0c;默认什么也没有就会扫描web文件夹 但是其他模块的扫描不到 指定了扫描其他模块就需要再次指定扫描该web文件夹

HCIP VRRP技术

一、VRRP概述 VRRP&#xff08;Virtual Router Pedundancy Protocol&#xff09;虚拟路由器冗余协议&#xff0c;既能够实现网关的备份&#xff0c;又能够解决多个网关之间互相冲突的问题&#xff0c;从而提高网络可靠性。 局域网中的用户的终端通常采用配置一个默认网关的形…

私密相册管家-加密码保护私人相册照片安全

App Store史上最安全、最强大、最卓越的私密相册App&#xff01;再也不用担心私密照片视频被别人看见了&#xff01;
私密相册为你提供多重密码保护机制、简单便捷的照片存储空间&#xff0c;完美地将你的私密照片远离一切恶意偷窥者的窥探&#xff01; 【产品功能】
 √ 支…

如何培养对技术的热爱

这篇博文主要针对计算机专业相关的同学&#xff0c;对于理工科专业的同学有一定的借鉴意义&#xff0c;对于其他专业的同学&#xff0c;还请自行取舍。 背景 初学计算机&#xff0c;可能并不是每个人都能对其产生兴趣&#xff0c;更不要说从其中获得快乐。对于如何培养兴趣&a…

Python爬虫:js逆向调式操作及调式中遇到debugger问题

Python爬虫:js逆向调式操作及调式中遇到debugger问题 1. 前言2. js逆向调式操作2.1 DOM事件断点2.2 XHR/提取断点(用于请求接口参数加密处理)2.3 请求返回的数据是加密的2.4 hook定位参数 3. 调式中遇到debugger问题3.1 解决方式(一律不在此处暂停)3.2 问题&#xff1a;点击一律…

Mac超好用软件推荐

没有广告&#xff0c;良心推荐哦 刷到有福啦 非常非常感谢一路支持的大佬&#xff0c;你们的支持是我的荣幸 目录 Keka Free Download Manager Noizio Lite Microsoft 365 ​编辑 LocalSand Hidden Bar Obsidian iWork VMware Fusion SwitchHosts Xmind Listen…

通讯协议037——全网独有的OPC HDA知识一之聚合(六)实际时间最小值

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化&#xff0c;以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…

matlab使用教程(14)—稀疏矩阵的运算

1.运算效率 1.1计算复杂度 稀疏运算的计算复杂度与矩阵中的非零元素数 nnz 成比例。计算复杂度在线性上还与矩阵的行大小 m 和列大小 n 相关&#xff0c;但与积 m*n&#xff08;零元素和非零元素总数&#xff09;无关。相当复杂的运算&#xff08;例如对稀疏线性方程求解&…