超详细yolov8训练数据集流程

这篇具有很好参考价值的文章主要介绍了超详细yolov8训练数据集流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一,构建数据集

1,任意位置新建如下文件夹

2,xml转txt

3,划分数据集

二、配置yolov8训练文件

1,car文件夹下创建mydata.yaml(当然别的位置创建也行)

 2,修改yolov8x.yaml

 三、训练


一,构建数据集

1,任意位置新建如下文件夹

|------car(目标检测类别名)

|      |------dataSet(后续在文件夹下生成存放images中图像路径的txt文件)

|      |------images(不可改名,存放图像文件,图像不需要统一格式)

|      |------labels(不可改名,存放标签文件,标签与图像根据文件名一一对应)

|      |------xml(存放xml文件,labelImg的VOC格式打标生成的xml文件)

超详细yolov8训练数据集流程

labelImg打标,可以打标为VOC格式(xml文件)和YOLO格式(txt文件)

如果打标为VOC格式,后续需要转成YOLO格式,也就是xml文件转换为txt文件

所以直接打标为YOLO格式就不需要xml转txt,也不需要xml文件夹。

但是,xml转txt容易,txt转xml就难了

labelimg安装与使用:labelimg数据打标

2,xml转txt

 代码如下,按提示修改即可

#trans
# voc_to_yolo.py

import os
import xml.etree.ElementTree as ET
from fnmatch import fnmatch


# 转换之前先修改类别和路径
classes  = ["car"]
# 指定路径
IN_PATH  = "./xml"           # xml文件夹路径
OUT_PATH = "./labels"        # txt文件夹路径

# 一般情况不修改:类别起始编号start_number
start_number = 0



# (lx,ly,rx,ry) -> (cx,xy,w,h)
def convert(size, box):
    dw = 1. / size[0]
    dh = 1. / size[1]
    x = (box[0] + box[1]) / 2.0
    y = (box[2] + box[3]) / 2.0
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return x, y, w, h

def convert_annotation(in_path, out_path, img_id):
    i_p = os.path.join(in_path, img_id+'.xml')
    in_file = open(i_p, 'rb')
    o_p = os.path.join(out_path, img_id + '.txt')
    out_file = open(o_p, 'w')
    tree = ET.parse(in_file)
    root = tree.getroot()
    size = root.find('size')
    w = int(size.find('width').text)
    h = int(size.find('height').text)
    for obj in root.iter('object'):
        difficult = obj.find('difficult').text
        cls = obj.find('name').text
        if cls not in classes or int(difficult) == 1:
            continue
        cls_id = classes.index(cls) + start_number
        xmlbox = obj.find('bndbox')
        b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),
            float(xmlbox.find('ymax').text))
        bb = convert((w, h), b)

        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')

def xml2txt(in_path,out_path):
    file_lst = os.listdir(in_path)
    for f in file_lst:
        if fnmatch(f, '*.xml'):
            print("Translate...",f)
            img_id = f.split('.')[0]
            convert_annotation(in_path, out_path, img_id)


xml2txt(IN_PATH, OUT_PATH)

标签文件夹labels中得到txt文件,内容:

超详细yolov8训练数据集流程

· 每行代表标注的一个目标

· 每行第一个数代表类别

· 后边四个数是归一化后的((中心坐标),框的宽,框的高)

· 归一化的原理在上边给出的xml2txt代码中

3,划分数据集

将images中图像分为三部分:train,valid,test(推荐比例8:1:1)

执行代码(下边给出get_path.py),得到train.txt,valid.txt,test.txt,分别存放这三部分图像的路径

举例:

超详细yolov8训练数据集流程

 如果images中有100张图片,那么train.txt中约有80条路径,valid.txt和test.txt各约10条路径

超详细yolov8训练数据集流程

 yolo训练数据查找图像对应标签时,自动将路径中的images替换为labels就可以定位图像对应的标签文件,所以images和labels文件夹不要改名

 get_path.py: 

"""
划分训练集\验证集\测试集的文件的路径
存入train.txt valid.txt test.txt
比例推荐8:1:1
"""

from pathlib import Path
import random

path_train = Path('./images')#--图片数据集目录
path_dataset = Path('./dataSet')#--存放数据集的划分文件

f_train = open(path_dataset/'train.txt', 'w')
f_valid = open(path_dataset/'valid.txt', 'w')
f_test = open(path_dataset/'test.txt', 'w')

for path in path_train.glob('*.*'):
    i = random.random()
    if i<0.1:
        f_test.write(str(path)+'\n')
    elif i<0.2:
        f_valid.write(str(path)+'\n')
    else:
        f_train.write(str(path)+'\n')
# print(str(path))

二、配置yolov8训练文件

1,car文件夹下创建mydata.yaml(当然别的位置创建也行)

超详细yolov8训练数据集流程

 注意:

· 5,6,7行缩进要一致

· 每个冒号后边要有空格

· train.txt / valid.txt 可以是绝对路径也可以是相对路径

 2,修改yolov8x.yaml

yolov8有两种训练执行方式,后续细说。一种是用yolov8x.yaml初始化模型进行训练,这种方式需要修改yolov8x.yaml。只需修改一个参数:类别数。如图

超详细yolov8训练数据集流程

超详细yolov8训练数据集流程

其他yaml网络大小参考yolov5:

超详细yolov8训练数据集流程

 三、训练

方式一,执行:yolo task=detect mode=train model=...../yolov8x.yaml(路径) data=./mydata.yaml(路径) epochs=200 batch=16

方式二,执行:yolo task=detect mode=train model=yolov8n.pt data=./mydata.yaml epochs=200 batch=16

若训练报错与内存有关,先试试调小batch的值

方式二中的yolov8n.pt训练时会自动下载,可能很慢。后续训练依然重新下载yolov8n.pt的话,可能是yolo运行目录下没有yolov8n.pt,复制一份到当前目录即可跳过下载

还可能下载Arial.ttf字体,可能也慢。但是都不影响训练

方式三,创建python文件,python运行

参数含义:

model传参可以是yaml文件,也可以是.pt文件,传.pt文件是加载预训练模型

epochs若设置300,表示训练300轮

batch即batch_size,若训练报错,先试试调小它的值

训练结果:

mydata.yaml同目录下生成run文件夹,runs/detect/train下存放训练结果

重点是weights文件夹下的best.pt last.pt,这是最优模型和当前训练的最后一轮的模型。

查看趋势图:

runs/detect/train目录下执行:tensorboard --logdir='./'

终端最后一行返回一个链接,点击打开网页可以看到当前训练的数据图

超详细yolov8训练数据集流程

 超详细yolov8训练数据集流程文章来源地址https://www.toymoban.com/news/detail-454626.html

到了这里,关于超详细yolov8训练数据集流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目标检测笔记(十四): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

    目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防

    2024年02月07日
    浏览(49)
  • 适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

      目录 一、前期准备+所需环境配置  1.1. 虚拟环境创建 1.2 下载yolov8源码,在pycharm中进行配置 1.2.1 下载源码 1.2.2 在pycharm终端中配置conda 1.3 在pycharm的terminal中激活虚拟环境  1.4 安装requirements.txt中的相关包 1.5 pip安装其他包 1.6 预训练权重的下载  1.7 验证环境配置是否成功

    2024年02月05日
    浏览(74)
  • SSD训练数据集流程(学习记录)

    关于理论部分我看的是b站“霹雳吧啦Wz”的SSD理论讲解,作为入门小白表示能听懂,需要的同学可以自行观看 目录 1.训练环境 2.训练步骤 我的环境是win11+anaconda+python3.6.13+pytorch1.10.2+cuda11.6 (1)下载SSD源码 可到github进行下载 GitHub - amdegroot/ssd.pytorch: A PyTorch Implementation of Sing

    2023年04月09日
    浏览(34)
  • 【目标检测算法实现之yolov8】yolov8训练并测试VisDrone数据集

    在这之前,需要先准备主机的环境,环境如下: Ubuntu18.04 cuda11.3 pytorch:1.11.0 torchvision:0.12.0 在服务器上执行以下命令, pytorch v1.11.0(torch1.11.0+cu1113 ,torchvision0.12.0+cu113) 先创建yolov8文件夹,存放等会要下载的yolov8代码 mkdir yolov8 进入yolov8文件夹, cd yolov8 下载yolov8代码 git cl

    2024年02月13日
    浏览(43)
  • YOLOv8训练自己的分割数据集

    Ultralytics YOLOv8 是由 Ultralytics 开发的一个前沿的 SOTA 模型。它在以前成功的 YOLO 版本基础上,引入了新的功能和改进,进一步提升了其性能和灵活性。YOLOv8 基于快速、准确和易于使用的设计理念,使其成为广泛的目标检测、图像分割和图像分类任务的绝佳选择。YOLOv5 自

    2024年02月04日
    浏览(64)
  • Yolov8训练自己的数据集合(最新实验数据)

    一、安装环境 笔者环境如下: 二、clone代码 地址如下,可以直接使用git命令进行clone,也可以直接去网站下载 代码目录如下所示 三、安装必要的库 其实这里比较重要的是两步,第一步是安装requirement.txt中的库,然后再安装ultralytics。那么下面就是安装库的过程了 安装require

    2024年02月15日
    浏览(50)
  • 基于 YOLOv8 的自定义数据集训练

    图1.1:YOLOv8初始测试 YOLOv8🔥于 2023年1月10日由Ultralytics发布。它在计算机视觉方面提供了进展,带来了对我们感知、分析和理解视觉世界的巨大创新。它将为各个领域带来前所未有的可能性。 在速度、准确性和架构方面进行了相当大的改进。它是从头开始实现的,没有使用任

    2024年02月11日
    浏览(46)
  • yolov8训练自己的数据集遇到的问题

    **方法一:**根据本地模型配置文件.yaml可以设置nc 但是,这里无法用到预训练模型.pt模型文件,预训练模型的权重参数是在大数据集上训练得到的,泛化性能可能比较好,所以,下载了官方的分类模型yolov8n-cls.pt(这里实际上经过验证可以通过其它方法利用yaml方法加载预训练

    2023年04月26日
    浏览(52)
  • yolov8代码梳理 训练自己的数据 最终版

    最开始为了检测不规则的麻包袋,所以采用了目标检测。yolov3,fasterrcnn,ssd。这种矩形框还是可以用。后面检测的物体变成了规则的纸箱,我们还用目标检测发现,没有旋转角度,因为箱子的摆放不是正的。只能通过opencv的minarea去找到最小矩形框去寻找角度。但是opencv的方

    2024年02月12日
    浏览(46)
  • 使用YOLOv8训练自己的【目标检测】数据集

    随着深度学习技术在计算机视觉领域的广泛应用,行人检测和车辆检测等任务已成为热门研究领域。然而,实际应用中,可用的预训练模型可能并不适用于所有应用场景。 例如,虽然预先训练的模型可以检测出行人,但它无法区分“好人”和“坏人”,因为它没有接受相关的

    2024年04月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包