当前位置: 首页 > 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从环境配置到模型训练的核心技能。下一期,我们将探讨如何使用训练好的模型进行图片、视频的推理,以及模型的导出。我们下期再见!

相关文章:

  • NV046NV060美光固态闪存NV061NV063
  • matplotlib 绘制水平柱状图
  • 使用deepseek制作“喝什么奶茶”随机抽签小网页
  • linux面试常考
  • SpringBoot3.x整合Knife4j接口文档
  • HarmonyOS应用开发实验操作步骤
  • Python 数据分析与可视化 Day 10 - 数据合并与连接
  • HashMap 和 ConcurrentHashMap的区别
  • Python 数据分析:numpy,抽提,整数数组索引。听故事学知识点怎么这么容易?
  • C++泛型编程2 - 类模板
  • 基于LQR控制器的六自由度四旋翼无人机模型simulink建模与仿真
  • 「Java案例」古代重量单位转换
  • 力扣 刷题(第七十一天)
  • 湖北理元理律师事务所:债务优化中的法律理性与人文温度
  • MySQL 索引 -- 磁盘,主键索引,唯一索引,普通索引,全文索引
  • cocos creator 3.8 - 精品源码 - 挪车超人(挪车消消乐)
  • 【学习】《算法图解》第七章学习笔记:树
  • 设计模式(策略,工厂,单例,享元,门面)+模板方法
  • spring-ai-alibaba DashScopeCloudStore自动装配问题
  • Pytest自动化测试执行环境切换的2种解决方案