当前位置: 首页 > news >正文

【YOLOv13保姆级教程#03】自建数据集训练与验证(Train Val)全流程 | 手把手教你构建数据集、标签格式转换与yaml配置

YOLOv13保姆级入门教程(三):模型训练与验证全流程! | 手把手教你构建数据集、标签格式转换与yaml配置


文章目录

    • 📖 前言
    • (1) 准备自定义数据集
      • 1.1 数据集结构
      • 1.2 创建数据集配置文件 (.yaml)
    • (2) 配置并开始训练
    • (3) 模型验证 (Validation)
    • (4) 总结


📖 前言

Hello,大家好!欢迎来到YOLOv13保姆级教程的第三部分,也是最激动人心的实战环节。在上一期《环境配置与推理验证》中,我们已经成功搭建了YOLOv13的运行环境。

今天,我们将正式开始使用我们自己的数据集来训练和验证YOLOv13模型。这对于将YOLO技术应用于实际项目至关重要。

(1) 准备自定义数据集

在开始训练之前,你需要有一个已经标注好的、符合YOLO格式的数据集。

1.1 数据集结构

这里我们以一个PCB电路板缺陷检测数据集为例,它的目录结构如下:

/path/to/your/dataset/
├── images/
│   ├── 01_missing_hole_01.jpg
│   ├── 01_missing_hole_02.jpg
│   └── ...
├── labels/
│   ├── 01_missing_hole_01.txt
│   ├── 01_missing_hole_02.txt
│   └── ...
├── train.txt
└── val.txt
  • images/: 存放所有原始图片。
  • labels/: 存放与图片同名的.txt标注文件,每一行代表一个边界框。
  • train.txtval.txt: 分别存放训练集和验证集所有图片的绝对路径。

小贴士:关于如何从XML格式转换为YOLO的TXT格式,可以参考我之前在YOLOv12系列中详细讲解的《数据集构建》教程。

1.2 创建数据集配置文件 (.yaml)

为了让YOLOv13知道如何使用你的数据集,我们需要创建一个.yaml格式的配置文件。

  1. 参考官方配置
    yolov13-main/ultralytics/cfg/datasets/目录下,有很多官方数据集的.yaml文件,例如coco.yaml。我们可以复制一份并进行修改。

  2. 创建你的.yaml文件
    我们将coco.yaml复制并重命名为PCB.yaml

  3. 修改配置文件内容
    打开PCB.yaml,修改以下关键部分:

    # 数据集根目录的路径
    path: /path/to/your/DATASET  # 修改为你数据集的绝对路径
    train: train.txt  # 训练集图片路径列表文件
    val: val.txt      # 验证集图片路径列表文件
    # test: (可选)# 类别信息
    names:0: Missing_hole1: Mouse_bite2: Open_circuit3: Short4: Spur5: Spurious_copper
    
    • path: 必须是你的数据集根目录的绝对路径
    • train/val: 指向包含图片路径的.txt文件。
    • names: 定义你的类别名称,顺序必须与标注文件中的类别ID(从0开始)严格对应

(2) 配置并开始训练

准备好数据集配置文件后,我们就可以配置训练脚本并启动训练了。

  1. 创建训练脚本
    yolov13-main目录下创建一个train.py文件。

  2. 编写训练代码
    将以下代码粘贴到train.py中。这段代码与官方README中的示例基本一致,但我们做了一些关键修改。

    from ultralytics import YOLO# 1. 加载一个模型配置 (这里使用yolov13n.yaml从零开始训练)
    #    也可以加载预训练权重,如 model = YOLO('yolov13n.pt')
    model = YOLO('yolov13n.yaml')# 2. 训练模型
    results = model.train(data='ultralytics/cfg/datasets/PCB.yaml',  # ‼️ 关键:指向你的数据集配置文件epochs=600,batch=-1,  		# 设为-1,YOLO会自动寻找最佳batch sizeimgsz=640,scale=0.5,  mosaic=1.0,mixup=0.0,  		# S:0.05; L:0.15; X:0.2copy_paste=0.1,  # S:0.15; L:0.5; X:0.6       device='0'  		# 指定使用第0号GPU,多卡用 '0,1,2,3'
    )
    
  3. 理解关键训练参数

    • model: 可以是.yaml(从零训练)或.pt(使用预训练权重)。对于自定义数据集,强烈推荐使用预训练权重,这样收敛更快,效果更好。
    • data: 这是最关键的一步,必须准确指向你刚刚创建的数据集.yaml文件。
    • epochs: 训练的总轮数。可以先设小一点测试,实际训练时根据收敛情况调整。
    • batch: 每批次训练的图片数量。设为-1可以让YOLO自动测试并选择显存允许的最大值,非常方便。
    • device: 指定训练用的GPU。
  4. 启动训练
    在激活了yolov13的conda环境下,运行脚本:

    # (yolov13) ...$ 
    python train.py
    

    如果一切配置正确,你会看到终端开始打印模型结构,并启动auto batch测试,然后正式开始训练。训练日志和权重文件会保存在runs/detect/train/目录下。

(3) 模型验证 (Validation)

训练完成后,你需要验证模型在验证集上的性能。

  1. 创建验证脚本
    yolov13-main目录下创建val.py文件。

  2. 编写验证代码

    from ultralytics import YOLO# 1. 加载你训练好的模型权重
    #    通常是 runs/detect/trainX/weights/best.pt
    model = YOLO('runs/detect/train/weights/best.pt')# 2. 运行验证
    metrics = model.val(data='ultralytics/cfg/datasets/PCB.yaml',  # 同样指向你的数据集配置文件batch=128,half=True  # 使用半精度推理,可以加速
    )
    
    • model: 这里加载的是你训练过程中保存下来的最佳权重 (best.pt)
    • data: 同样指向你的数据集配置文件。
  3. 运行验证

    # (yolov13) ...$
    python val.py
    

    运行结束后,终端会打印出详细的性能指标表格,包括每个类别的P (Precision), R (Recall), mAP50, mAP50-95等。


(4) 总结

本期教程详细讲解了使用自定义数据集训练和验证YOLOv13的全流程:

  1. 准备了符合YOLO格式的数据集
  2. 创建并配置了关键的.yaml数据集文件
  3. 修改并运行了训练脚本,并解释了核心参数。
  4. 使用训练好的权重进行了模型验证,并解读了性能指标。

至此,你已经掌握了YOLOv13从环境配置到模型训练的核心技能。下一期,我们将探讨如何使用训练好的模型进行图片、视频的推理,以及模型的导出。我们下期再见!

http://www.lqws.cn/news/558523.html

相关文章:

  • Go开发工程师-Golang基础知识篇
  • Vue工程化实现约定式路由自动注册
  • 使用vue3构建一套网站
  • TCP 和 UDP 是什么?
  • 【Python基础】06 实战:视频压缩迷你脚本设计
  • 深入理解C#委托操作:添加、移除与调用全解析
  • 港澳地区,海外服务器ping通可能是地区运营商问题
  • MySQL为什么要使用b+树
  • 1 Studying《Computer Architecture A Quantitative Approach》1-4
  • 鸿蒙HarmonyOS 5小游戏实践:数字记忆挑战(附:源代码)
  • 信号处理学习——文献精读与code复现之TFN——嵌入时频变换的可解释神经网络(下)
  • 给定一个整型矩阵map,求最大的矩形区域为1的数量
  • Insar 相位展开真实的数据集的生成与下载(随机矩阵放大,zernike 仿真包裹相位)
  • Launcher3中的CellLayout 和ShortcutAndWidgetContainer 的联系和各自职责
  • 剑指offer50_0到n-1中缺失的数字
  • python -日期与天数的转换
  • autoas/as 工程的RTE静态消息总线实现与端口数据交换机制详解
  • 解决flash-attn安装报错的问题
  • 【C】陷波滤波器
  • 鸿蒙开发:资讯项目实战之底部导航封装
  • MySQL之MVCC实现原理深度解析
  • 类和对象(中)
  • springboot+Vue驾校管理系统
  • 开疆智能ModbusTCP转CClinkIE网关连接台达DVP-ES3 PLC配置案例
  • Java-正则表达式
  • 测量 Linux 中进程上下文切换需要的时间
  • cocos creator 3.8 - 精品源码 - 挪车超人(挪车消消乐)
  • 同步日志系统深度解析【链式调用】【宏定义】【固定缓冲区】【线程局部存储】【RAII】
  • 蚂蚁百宝箱体验:如何快速创建“旅游小助手”AI智能体
  • LINUX628 NFS 多web;主从dns;ntp;samba