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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCL 最小二乘拟合圆柱(C++详细过程版)

目录 一、算法原理1、算法简介2、参考文献二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法简介 圆柱拟合步骤主要包括两步: 一是确定柱面模型参数初始值…

9.2 Windows驱动开发:内核解析PE结构导出表

在笔者的上一篇文章《内核特征码扫描PE代码段》中LyShark带大家通过封装好的LySharkToolsUtilKernelBase函数实现了动态获取内核模块基址,并通过ntimage.h头文件中提供的系列函数解析了指定内核模块的PE节表参数,本章将继续延申这个话题,实现…

【追求卓越11】算法--二叉树

引导 接下来的几节我们开始介绍非线性的数据结构--树。树的内容比较多也比较复杂。本节,我们只需要了解关于树的一些基本概念。以及再进一步了解树的相关内容--搜索二叉树。该类型二叉树在工作中,是我们常接触的。该节我们介绍关于搜索二叉树的相关操作&…

【2021集创赛】基于ARM-M3的双目立体视觉避障系统 SOC设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位:上海电力大学 队伍名称:骇行队 总决赛奖项:二等奖 1.摘要 随着信息技术的发展,AGV(Automated Guided Vehic…

快慢指针判断环形链表

我们在前面文章中写过用快慢指针判断链表是否带环: leetcode:环形链表-CSDN博客 我们用的是slow指针一次走一步,fast指针一次走两步,当slow入环后开始了追击,每走一次距离缩短1,最终就会相遇 思考问题 …

FastAPI通过SSE进行流式输出

服务端推送 在服务器推送技术中,服务器在消息可用后立即主动向客户端发送消息。其中,有两种类型的服务器推送:SSE和 WebSocket。 SSE(Server-Send Events) SSE 是一种在基于浏览器的 Web 应用程序中仅从服务器向客户…

Arcgis中通过函数实现字符串截取

效果 从字符串中提取最右侧的符号,如“/”后面的字符串 步骤 1、VB dim bbindexinstrrev( [WGCJ] ,"/")bbright( [WGCJ] ,len( [WGCJ] )- index )2、python def bb(aa):index(aa.rfind("/"))bbaa[index1:]return bb

Linux 磁盘/分区/修复 命令

目录 1. lsblk(list block devices) 2. fdisk(fragment disk) 3. gdisk 4. mkfs(make filesystem) 5. df(display file-system disk space usage) 6. du 7. fsck(file-sy…

手把手教你通过CODESYS V3进行PLC编程(二)

教程背景 在上一期教程中,我们已经完成了控制器设备的连接和配置。接下来的教程将继续以宏集MC-Prime为例,假设控制器已经配置并连接到开发者的PC上,为您演示如何为控制器安装合适的CODESYS V3版本并创建第一个程序。 一、安装CODESYS &…

HarmonyOS ArkTS 保存应用数据(十)

1 概述 在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS应用开发也不例外。 2 什么是首选项 首选项为应用提供Key-Value键…

快速上手Banana Pi BPI-M4 Zero 全志科技H618开源硬件开发开发板

Linux[编辑] 准备[编辑] 1. Linux镜像支持SD卡或EMMC启动,并且会优先从SD卡启动。 2. 建议使用A1级卡,至少8GB。 3. 如果您想从 SD 卡启动,请确保可启动 EMMC 已格式化。 4. 如果您想从 EMMC 启动并使用 Sdcard 作为存储,请确…

220V转12V固定输出12V非隔离芯片WT5106WT5105

220V转12V固定输出12V非隔离芯片WT5106WT5105 今天给大家介绍一款实用芯片,WT5106。它是一款高效率高精度的非隔离降压开关电源恒压控制驱动芯片。 WT5106适用于85VAC~265VAC全范围输入电压的非隔离Buck、Buckboost拓扑结构,小家电、电机驱动、继电器驱…