YOLOV5标注训练自己的数据全流程教程

概述

yolo在目标检测领域是非常有代表性的模型,它速度快识别效果也很精准,是实时检测模型中应用最广泛的。yolo的原理和代码是很容易获得的,且有各式各样的教程,但是模型怎么使用的教程相对比较少。本文讲解如何使用yolov5模型训练自己的模型,同时也包含了如何标注自己的数据。

标注自己的数据

首先要收集自己的要训练的数据,可以通过网络收集或者自己拍摄的途径获得。收集好图片之后就要进行图片的标注,这里推荐使用labelimg标注工具标注,可以自行在网络搜索获得。安装完成labelimg标注软件之后,打卡标注软件,软件内部如下图所示。
在这里插入图片描述
在标注之前我们要将搜集的图片存放在一个文件夹下,然后新建一个文件夹用来存放标注文件。点击软件左上角的"Open Dir"图标打开自己存放图片的路径,接着点击"Change Save Dir"图标打开刚刚创建的保存标注文件的路径。然后点击下图箭头指向的地方,点击切换为"YOLO"图标(代表使用yolo格式存储,便于后续训练)。

在这里插入图片描述完成上述操作之后就可以开始标注图片了。按w新建标注框,编辑标签名称,保存后就成功标注了第一张图片。
在这里插入图片描述
保存后查看标注文件保存的路径会看到新建了两个文件,classes.txt代表类别,另一个代表刚刚标注的文件对应的类别和坐标信息和原图片名称相对应。
在这里插入图片描述

在代码中配置自己的标注文件

标注就演示到这里了。这里只演示了单张的图片的标注,实际的项目中样本量至少也要几十张,多张标注方式和这个一样。
标注完成数据之后要划分训练数据集和验证数据集,可以按8:2的比例划分。划分时候的目录结构可以参考下图。在这里插入图片描述

标注完数据之后就要进行训练了,yolov5使用的是ultralytics版本的代码,可以自行在github中下载。打卡工程文件之后找到下图所示的data路径,新建一个自己的yaml文件,
在这里插入图片描述
打开新建的yaml文件,将自己的图片数据和对应标注文件划分好训练和验证的路径填写在“train”和“val”后,代码如下:

train: D:\mydata\train# 训练数据的路径
val: D:\mydata\val# 验证数据的路径

# Classes 
names:
  0: fire #这里填写自己标注的类别名称。

训练自己的数据集

经过以上操作数据集的标注和配置文件的编写就完成了,接下来要进行到训练步骤了。当然在训练模型之前要配置好自己的代码环境,在项目根目录下可以找到requirements.txt文件,根据里面的对应的软件包名称完成环境配置。配置好环境之后,我们找到yolov5项目文件的根目录,在终端中打开。在终端中输入以下命令,–data后加自己的创建的yaml文件,–weight代表预训练权重 使用yolov5s.pt文件即可,–cfg代表模型配置文件使用yolov5s.yaml即可,–batch-size 代表同时训练的图片张数(如果显卡的显存较小,适当写小一点,在硬件支持的条件下越大越好),–epochs代表训练的轮次。

python train.py --data mydata.yaml --weight yolov5s.pt --cfg yolov5s.yaml --batch-size 10 --epochs 100

如没有问题就开始训练了,终端会输出训练的进度。
在这里插入图片描述
训练结束之后终端里会输出生成的pt文件存放路径,以及这次训练的精度的统计,还有存放这次训练的结果路径,可以通过这些数据回顾整个训练过程。保存的pt文件可以为自己模型推理和预测。
在这里插入图片描述

用训练的模型pt文件进行预测

训练完自己的数据集之后得到了pt文件,这个文件可以预测自己的目标检测对象,预测在yolov5中使用的detect.py文件,和上文一样在终端中打开项目文件的根目录,在终端中输入以下命令。–weight使用自己的pt文件,–source 代表用来预测的图片或视频的路径。

python detect.py --weight fire.pt --source D:\video\fire.mp4

执行上述代码之后会进行预测,在对应的结果目录找到预测的结果便能知晓模型效果。下图为火焰检测的效果。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java.lang.IllegalStateException: Can not add resource

安卓解决 java.lang.IllegalStateException: Can not add resource 放两个链接 解决Can not add resource (com.android.aaptcompiler.ParsedResourcea980fbb) to table_言并肃的博客-CSDN博客 android attr何时会冲突_android attr冲突-CSDN博客 然后去新增的依赖找资源…

详解——菱形继承及菱形虚拟继承

目录 一,菱形继承 1.1单继承 1.2多继承 1.3菱形继承 1.4菱形继承的问题 1.5虚拟继承解决数据冗余和二义性的原理 二.继承的总结和反思 一,菱形继承 C三大特性——继承-CSDN博客 1.1单继承 单继承:一个子类只有一个直接父类时称这个继…

合伙人注册即得/创业平台扶持!

问心一语持续体验中~ 与公司签订线下(线上)纸质合伙人代理合同,具备法律效力。 一级直推、非一级直推注册即得奖励。(消耗完毕被邀请用户赠送的AI免费使用条数) 即:邀请1人注册即得并消耗!只需注册无需充值&#xff…

2023年度openGauss标杆应用实践案例征集

标杆应用实践案例征集 2023 openGauss 数据库作为企业IT系统的核心组成部分,是数字基础设施建设的关键,是实现数据安全稳定的保障。openGauss顺应开源发展趋势,强化核心技术突破,着力打造自主根社区,携手产业伙伴共同…

单片机语音芯片开发要解决的问题

在单片机语音芯片开发过程中,可能会遇到多种问题,这些问题可能来自于技术层面,也可能来自于芯片本身的设计和应用层面。下面让我们具体从芯片的功耗、语音识别的准度、芯片的尺寸和芯片的可靠性四个方面开展讨论。 1.芯片的功耗问题 首先&a…

干货分享 | 一分钟带你了解TSMaster小程序编辑代码智能提示功能

本文给大家带来TSMaster小程序编辑的新功能,其中主要包含:代码编辑智能提示功能、可用外部代码编辑器编辑小程序代码并同步。 本文关键字:C小程序、Python小程序、代码智能提示、外部代码编辑器、Visual Studio 目录/Catalog ● TSMaster的…

【网络】数据链路层协议

数据链路层协议 一、链路层解决的问题二、以太网协议1、局域网技术2、令牌环网(了解)3、以太网通信原理4、 MAC地址5、以太网帧格式6、碰撞避免7、最大传输单元MTU 二、ARP协议1、ARP数据的格式2、ARP协议的工作流程3、ARP缓存表4、ARP协议中的一些问题7…

Python基础【二】--基本语句【2023.11.22】

1.条件语句 在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断。格式如下所示: if 判断条件1:执行语句1... elif 判断条件2:执行语句2... elif 判断条件3:执行语句3... else:执行语句4...ainput("请输…

软件包管理器yum和git

目录 一、Linux软件包管理器yum 1、Linux下的软件安装方法 2、了解yum 1、实际例子引入 2、yum 3、查找软件包 4、安装软件包 5、卸载软件 二、git 一、Linux软件包管理器yum 1、Linux下的软件安装方法 1、在Linux下安装软件,一个通常的办法是下载到程序的源…

让SOLIDWORKS Composer动画在PPT中随意转换

SOLIDWORKS Composer作为一款易学易用的技术图解软件,非常适合用来给客户展示自己的产品。这里我们教大家如何将Composer文件插入大PPT中,并任意切换文件,用以给客户展示不用的方案和产品。 1.首先大家要安装SOLIDWORKS Composer Player 这个…

【c语言】重温一下动态内存,int数组过大会造成栈错误

项目场景: 项目场景:互助群同学在刷题的过程中,遇到的一个题目,需要申请一个很大数组,于是这个同学就写了int[1000000],其实这样写也没有错,可是运行后却显示栈错误。于是就找到我来请教,我想就…

ConcurrentHashMap的数据结构+以及各个版本之间的区别

ConcurrentHashMap 1.7与1.8的区别 1、锁结构不同 2、put的流程不同 3、size的计算方式不同(1.8使用的使用basecell[]计算,有点类似于LongAdder,1.7使用三级通缉判断是否一样,不一样通过分段式加锁再求和) 4、数据结构不同,1.6 Re…

【HMS Core】应用内支付问题总结

【问题描述1】 集成应用内支付,怎么让微信或者支付宝的选项位于华为支付之前。 【解决方案】 目前不能调整顺序的。 【问题描述2】 用户手机上的价格,是按照什么货币单位显示的? 【解决方案】 手机客户端根据当前华为帐号所属的服务地&a…

Dropout 作用

一、 前言 Dropout出现的原因 训练深度神经网络的时候,总是会遇到两大问题:(1)容易过拟合(2)网络费时 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出…

自学成为android framework高手需要准备哪些装备-千里马车载车机系统开发学习

背景 hi,粉丝朋友们: 大家好!经常有很多学员买课同学都会问到需要准备哪些装备,我也回答了很多学员了,今天就搞一篇文章来统一说明一下,告诉一下大家如果你想从一个framework新手变成一个framework开发的高…

在SOLIDWORKS中如何提升保存PDF版本文件的清晰度

随着Solidworks年复一年的不断更新,不仅仅是整个软件的性能上的提升,其在输出文件的功能上也同样在精益求精。 但对于老版本的使用者和希望能让输出文件清晰度更进一步的使用者而言,可能目前我们所能达到的普通文件输出清晰度远远无法达到他们…

java jdk 版本切换

java jdk 版本切换 1.JAVA8_HOME ,JAVA17_HOME为切换的两个版,JAVA_HOME来选择 2.path中java_home配置项置顶,必须在蓝色选择中框上方,它是电脑自带的配置,位置太靠上会把我们自己的配置给覆盖掉 3.java -version 查看切换结果

SpringCache使用详解

SpringCache 1.新建测试项目SpringCache2.SpringCache整合redis2.1.Cacheable2.2.CacheEvict2.3.Cacheput2.4.Caching2.5.CacheConfig 3.SpringCache问题4.SpringCache实现多级缓存 1.新建测试项目SpringCache 引入依赖 <dependencies><dependency><groupId&g…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《交直流配电网中柔性软开关接入的规划-运行协同优化方法》

这个标题涉及到交直流配电网中柔性软开关接入的规划-运行协同优化方法。下面是对这个标题各部分的详细解读&#xff1a; 交直流配电网&#xff1a; 这指的是一个电力系统&#xff0c;同时包含交流和直流电力传输的元素。这样的系统可能结合了传统的交流电力传输和近年来兴起的直…

21款奔驰GLC260L升级HUD抬头显示 平视仪表信息

随着科技飞速地发展&#xff0c;从汽车领域就可以看出&#xff0c;尤其是汽车的抬头显示器&#xff0c;一经推出就吸引了很多的车主。 升级HUD抬头显示&#xff0c;HUD与汽车系统进行完整的数据信息连接&#xff0c;整合成大数据&#xff0c;然后将一些重要信息映射到车窗玻璃…