【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.txt
和val.txt
: 分别存放训练集和验证集所有图片的绝对路径。
小贴士:关于如何从XML格式转换为YOLO的TXT格式,可以参考我之前在YOLOv12系列中详细讲解的《数据集构建》教程。
1.2 创建数据集配置文件 (.yaml)
为了让YOLOv13知道如何使用你的数据集,我们需要创建一个.yaml
格式的配置文件。
-
参考官方配置:
在yolov13-main/ultralytics/cfg/datasets/
目录下,有很多官方数据集的.yaml
文件,例如coco.yaml
。我们可以复制一份并进行修改。 -
创建你的
.yaml
文件:
我们将coco.yaml
复制并重命名为PCB.yaml
。 -
修改配置文件内容:
打开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) 配置并开始训练
准备好数据集配置文件后,我们就可以配置训练脚本并启动训练了。
-
创建训练脚本
在yolov13-main
目录下创建一个train.py
文件。 -
编写训练代码
将以下代码粘贴到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' )
-
理解关键训练参数:
model
: 可以是.yaml
(从零训练)或.pt
(使用预训练权重)。对于自定义数据集,强烈推荐使用预训练权重,这样收敛更快,效果更好。data
: 这是最关键的一步,必须准确指向你刚刚创建的数据集.yaml
文件。epochs
: 训练的总轮数。可以先设小一点测试,实际训练时根据收敛情况调整。batch
: 每批次训练的图片数量。设为-1
可以让YOLO自动测试并选择显存允许的最大值,非常方便。device
: 指定训练用的GPU。
-
启动训练
在激活了yolov13
的conda环境下,运行脚本:# (yolov13) ...$ python train.py
如果一切配置正确,你会看到终端开始打印模型结构,并启动
auto batch
测试,然后正式开始训练。训练日志和权重文件会保存在runs/detect/train/
目录下。
(3) 模型验证 (Validation)
训练完成后,你需要验证模型在验证集上的性能。
-
创建验证脚本
在yolov13-main
目录下创建val.py
文件。 -
编写验证代码
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
: 同样指向你的数据集配置文件。
-
运行验证
# (yolov13) ...$ python val.py
运行结束后,终端会打印出详细的性能指标表格,包括每个类别的
P
(Precision),R
(Recall),mAP50
,mAP50-95
等。
(4) 总结
本期教程详细讲解了使用自定义数据集训练和验证YOLOv13的全流程:
- 准备了符合YOLO格式的数据集。
- 创建并配置了关键的
.yaml
数据集文件。 - 修改并运行了训练脚本,并解释了核心参数。
- 使用训练好的权重进行了模型验证,并解读了性能指标。
至此,你已经掌握了YOLOv13从环境配置到模型训练的核心技能。下一期,我们将探讨如何使用训练好的模型进行图片、视频的推理,以及模型的导出。我们下期再见!