yolov5训练自己的数据集(超详细,小白必看)

唐宋宋宋 唐宋宋宋     2023-03-03     199

关键词:

哈喽大家好 ! 我是唐宋宋宋,很荣幸与您相见!!!

一.代码

yolov5的代码需要大家上github自己扒 链接已经提供。

GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

二.新建存放数据的文件

首先需要创建三个文件用来存放需要的数据。(名字自己定义,注意区分)

images和labels文件里需要创建train,val文件具体如下:

LOVE_PRE文件里需要创建Annotations(标注),JPEGImages(照片),labels(类别标签)文件具体如下:

三.填入需要的数据

*文件我们先备好,接下来看文件内需要放哪些内容。

说一下,既然是训练自己的数据集就需要我们对自己寻找的数据集进行标注,这边我使用的是labelimg 它是用Python编写的,并将Qt用于其图形界面 具体怎么使用大家可以参考

(21条消息) labelImg 使用教程 图像标定工具_Dontla的博客-CSDN博客_labelimg

注:标注好的.xml文件放入Annotations内。

我们知道使用labelimg标注好的文件格式是.xml文件 如果我们要使用yolov5就需要把它转换成yolov5需要的文件格式 .txt (这是重点) 代码附下:

# -*- coding: utf-8 -*-
import os
import xml.etree.ElementTree as ET

dirpath = r'D:\\pythonProject1\\yolov5-6.0\\bottle_dataset\\stronger\\xml'  # 原来存放xml文件的目录
newdir = r'D:\\pythonProject1\\yolov5-6.0\\bottle_dataset\\stronger\\labels'  # 修改label后形成的txt目录

if not os.path.exists(newdir):
    os.makedirs(newdir)

dict_info = 'green': 0, 'transparent': 1, 'white': 2, 'blue': 3, 'unknown': 4, 'orange': 5  # 有几个 类别 填写几个label names

for fp in os.listdir(dirpath):
    if fp.endswith('.xml'):
        root = ET.parse(os.path.join(dirpath, fp)).getroot()

        xmin, ymin, xmax, ymax = 0, 0, 0, 0
        sz = root.find('size')
        width = float(sz[0].text)
        height = float(sz[1].text)
        filename = root.find('filename').text
        for child in root.findall('object'):  # 找到图片中的所有框

            sub = child.find('bndbox')  # 找到框的标注值并进行读取
            label = child.find('name').text
            label_ = dict_info.get(label)
            if label_:
                label_ = label_
            else:
                label_ = 0
            xmin = float(sub[0].text)
            ymin = float(sub[1].text)
            xmax = float(sub[2].text)
            ymax = float(sub[3].text)
            try:  # 转换成yolov3的标签格式,需要归一化到(0-1)的范围内
                x_center = (xmin + xmax) / (2 * width)
                x_center = '%.6f' % x_center
                y_center = (ymin + ymax) / (2 * height)
                y_center = '%.6f' % y_center
                w = (xmax - xmin) / width
                w = '%.6f' % w
                h = (ymax - ymin) / height
                h = '%.6f' % h
            except ZeroDivisionError:
                print(filename, '的 width有问题')
            with open(os.path.join(newdir, fp.split('.xml')[0] + '.txt'), 'a+') as f:
                f.write(' '.join([str(label_), str(x_center), str(y_center), str(w), str(h) + '\\n']))
print('ok')

代码只需要更改5,6行的文件路径和第11行你所标注的类别即可。

注:.xml转化成.txt文件放入labels内。

注:我们用到的所有照片放入JPEGImage内。

生成的.txt内容如下(以我的数据为例)第一列是设定的标签,后面是坐标位置

接下来切分数据集,对于我们标注的图片需要进行切分成训练集和验证集(一般比例是8:2)训练集放入创建的images/train中,验证集放入images/val中,训练的图片对应的.txt文件放入labels/train中,验证的图片对应的.txt文件放入labels/val中。(训练和验证的图片和.txt文档的数量一定要对应)

*以上是完整的对于数据文件的划分。

四.构造自己的.yaml文件

因为yolov5训练数据调用的都是.yaml文件,所以我们需要在date目录下创建一个xxx.yaml文件来存放我们已经整理好的数据,其中train存放的是我们切分好的训练.txt文件,需要存放其绝对路径(可以放相对,但要调整好目录级别)val存放的是我们切分好的验证.txt文件,路径同train一样。

nc: 存放类别个数

name:存放类别的名字(个数和nc对应)

如图:

五.运行train.py文件训练

开始训练我们的数据集,运行train.py需要注意这几个参数。

--weight 先选用官方的yolov5s.pt权重

--cfg 选用model目录下的yolov5s模型

--date选用自己编写的.yaml文件

--epoch指的就是训练过程中整个数据集将被迭代多少次,显卡不行你就调小点

--bath_size一次看完多少张图片才进行权重更新,梯度下降的mini-batch,显卡不行你就调小点

以上的参数解释如下:

img-size:输入图片宽高,显卡不行你就调小点。

rect:进行矩形训练

resume:恢复最近保存的模型开始训练

nosave:仅保存最终checkpoint

notest:仅测试最后的epoch

evolve:进化超参数

bucket:gsutil bucket

cache-images:缓存图像以加快训练速度

weights:权重文件路径

name: 重命名results.txt to results_name.txt

device:cuda device, i.e. 0 or 0,1,2,3 or cpu

adam:使用adam优化

multi-scale:多尺度训练,img-size +/- 50%

single-cls:单类别的训练集

六.查看训练好的权重及可视化日志

训练生成好的文件会在一个run文件中(代码跑完自己生成)。

注:生成的一些信息都存在这个文件里面,红标箭头标出的权重就是我们所训练好以后需要的内容。

*训练过程可视化

利用tensorboard可视化训练过程,使用tensorboard打开即可查看训练日志。

我们可以拿出best.pt权重来进行测试和推理这些会在另一篇博客中讲解,以上就是使用yolov5训练自己的数据集的全部内容。

感谢大家阅读!🙏🙏🙏

yolov5解析|第二篇:用yolov5训练自己的数据集(超级详细完整版)(代码片段)

大家好,我是K同学啊!我们接着上一篇文章YOLOv5解析|第一篇:快速部署YOLOv5模型配置完YOLOv5需要的环境后,今天我们试着用YOLOv5训练自己的数据。(在开始本教程前,记得先跑一遍入门篇,确保其他... 查看详情

yolov5解析|第二篇:用yolov5训练自己的数据集(超级详细完整版)(代码片段)

大家好,我是K同学啊!我们接着上一篇文章YOLOv5解析|第一篇:快速部署YOLOv5模型配置完YOLOv5需要的环境后,今天我们试着用YOLOv5训练自己的数据。(在开始本教程前,记得先跑一遍入门篇,确保其他... 查看详情

深度学习100例|第53天:用yolov5训练自己的数据集(超级详细完整版)(代码片段)

...接着上一篇文章深度学习100例|第51天-目标检测算法(YOLOv5)(入门篇)配置完YOLOv5需要的环境后,今天我们试着用YOLOv5训练自己的数据。࿰ 查看详情

yolov5训练自己的数据集(详细完整版)(代码片段)

...thon:3.9ps:如果要使用GPU,cuda版本要>=10.1下载安装yolov5:yolov5官方要求Python>=3.6andPyTorch>=1.7yolov5源码下载:https://github.com/ultralytics/yolov5下载后,进入pytorch环境进入yolov5文件夹使用换源的方法安装依赖... 查看详情

yolov5-pytorch版-windows下训练自己的数据集,内含voc批量转yolo方法。(自称宇宙超级巨详细步骤)(代码片段)

Yolov5-Pytorch版-Windows下训练自己的数据集(自称宇宙超级巨详细步骤)一.准备数据集1.在labelimg下直接生成yolo的.txt格式2.Pytorch版批量.xml格式转yolo的.txt格式3.数据集制作二.Yolov5实现训练1.修改两个.yaml文件2.修改train.py文件3... 查看详情

[课程][原创]yolov5安装标注训练自己数据集windows版

搞定系列:yolov5训练自己数据集windows版课程地址:搞定系列:yolov5训练自己数据集windows版--深度学习视频教程-人工智能-CSDN程序员研修院开会员学更多课程课程介绍课程目录讨论留言你将收获1、学会如何搭建yolov5环... 查看详情

yolo|用yolov7训练自己的数据集(超详细版)

...,配置数据集然后训练。(可参考我之前做过的YOLOv5流程)二.克隆项目配置库gitclonehttps://github.com/WongKinYiu/yolov7打开项目下载要求的库:cdyolov7 查看详情

深度学习100例|第53天:用yolov5训练自己的数据集(超级详细完整版)(代码片段)

...接着上一篇文章深度学习100例|第51天-目标检测算法(YOLOv5)(入门篇)配置完YOLOv5需要的环境后,今天我们试着用YOLOv5训练自己的数据。(在开始本教程前,记得先跑一遍入门篇,确保其他环境是... 查看详情

最新版yolov6训练自己的数据集(超详细完整版!)(代码片段)

接着上篇文章继续写,本篇文章讲如何训练自己的数据集。从官网下载YOLOv6源码:meituan/YOLOv6:YOLOv6:asingle-stageobjectdetectionframeworkdedicatedtoindustrialapplications.(github.com)https://github.com/meituan/YOLOv6一、创建文件将t 查看详情

笔记2:yolov5训练自己的目标检测模型_创建并划分数据集(代码片段)

...检测的数据集资源标签的格式都是VOC(xml格式)的,而yolov5训练所需要的文件格式是yolo(txt格式)的,这里就需要对xml格式的标签文件转换为txt文件。同时训练自己的yolov5检测模型的时候,数据集需要划分为训练集和验证 查看详情

深度学习资料链接收集

文章目录1.博客1.1太阳花的小绿豆2.细化分类2.1yolov52.1.1[yolov5全解-一文通关](https://www.jianshu.com/p/34b3312b71db)2.1.2[【YOLOv5】详细讲解全过程](https://blog.csdn.net/u013066730/article/details/126068967)2.1.3[深入浅出Yolov5之自有数据集训练超详细教... 查看详情

深度学习资料链接收集

文章目录1.博客1.1太阳花的小绿豆2.细化分类2.1yolov52.1.1[yolov5全解-一文通关](https://www.jianshu.com/p/34b3312b71db)2.1.2[【YOLOv5】详细讲解全过程](https://blog.csdn.net/u013066730/article/details/126068967)2.1.3[深入浅出Yolov5之自有数据集训练超详细教... 查看详情

用yolov5ds训练自己的数据集,注意点!

    这两天打算使用YOLOv5做一下实例分割,找到用YOLOv5ds训练自己的数据集——同时检测和分割_2021黑白灰的博客-CSDN博客_yolov5图像分割Yolov5同时进行目标检测和分割分割_LeeCW2022的博客-CSDN博客_yolov5分割这两篇文章当参考&#x... 查看详情

深度学习训练营之yolov5训练自己的数据集(代码片段)

...如下命令进行数据集的划分pythonsplit_train_val.py--xml_pathD:\\yolov5-master\\yolov5-master\\my_data\\Annotations--txt_pathD:\\yolov5-master\\yolov5-mast 查看详情

零基础玩转yolov5yolov5训练自己的数据集(最新最全版)(代码片段)

...六、训练结果可视化一、写在前面 博主也是最近开始玩yolov5的,甚至也是最近开始使用python的ÿ 查看详情

深度学习目标检测---使用yolov5训练自己的数据集模型(windows系统)(代码片段)

目录0   前言1、从githab上克隆yolov5代码1.1yolov5网络project克隆1.2项目代码结构的整体介绍1.3深度学习环境的配置和安装yolov5所需要的库2、数据集和预训练权重的准备2.1利用labelimg对数据进行标注和划分2.2下载预训练权重 3、训练... 查看详情

yolov5详细解读(代码片段)

YOLOV5检测算法详解学习前言本文主要是对基于深度学习的目标检测算法进行细节解读,以YOLOV5为例;基于深度学习的目标检测整体流程基于深度学习的目标检测主要包括训练和测试两个部分。训练阶段训练的目的是利用... 查看详情

yolov5训练自己的数据集(缺陷检测分类——看了就懂系列)(代码片段)

这里记录一下将yolov5用于训练自己的数据集,这里v5的github地址Environment本文是直接pipinstall-rrequirement.txt直接安装成功,如果不容易成功,就一个个安装即可。如果出现报错,多关注一下torch的版本即可。Datapreparati... 查看详情