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

发布于:2025-06-29 ⋅ 阅读:(27) ⋅ 点赞:(0)

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



📖 前言

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_hole
      1: Mouse_bite
      2: Open_circuit
      3: Short
      4: Spur
      5: 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 size
       imgsz=640,
       scale=0.5,  
       mosaic=1.0,
       mixup=0.0,  		# S:0.05; L:0.15; X:0.2
       copy_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从环境配置到模型训练的核心技能。下一期,我们将探讨如何使用训练好的模型进行图片、视频的推理,以及模型的导出。我们下期再见!


网站公告

今日签到

点亮在社区的每一天
去签到