引言
YOLOv11 是最新的 YOLO(You Only Look Once)版本,专注于高效的目标检测任务,适用于图像分割、姿态估计等任务。本文将详细介绍如何通过 YOLOv11 进行模型的训练和配置,并指导你如何使用自己的数据集进行目标检测模型的训练。
环境准备
数据集准备
使用自己的数据集时,需要将其格式化为 YOLOv11 支持的格式。以下是常用的数据集配置方法。
1. 数据集结构
你的数据集应该按照如下结构组织:
datasets/
my_dataset/
images/
train/ # 训练图片
val/ # 验证图片
labels/
train/ # 训练标签 (YOLO格式)
val/ # 验证标签 (YOLO格式)
注意: 标签文件应为 .txt 格式,每一行代表一个物体,格式为: <x_center> <y_center> ,所有值均为相对比例(0-1 之间)。
2. 数据集配置文件
你需要为你的数据集创建一个 .yaml 文件,定义训练、验证集的路径及类别。创建一个类似于 my_dataset.yaml 的文件:
path: ../datasets/my_dataset # 数据集的根目录
train: images/train # 训练集图片路径
val: images/val # 验证集图片路径
names: # 类别名称映射表
0: people
将 path 指向你的数据集根目录,train 和 val 分别指向训练和验证图片的相对路径,names 包含你的数据集中所有类别的名称。
示例:数据集配置文件存储路径
ultralytics/cfg/datasets/people.yaml
示例:数据集配置文件内容
path: ../datasets/people # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
# Classes for DOTA 1.0
names:
0: people
YOLOv11 训练步骤
基于预训练模型进行训练
yolo detect train data=my_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640
在这里,model=yolo11n.pt 使用预训练模型作为初始权重,这可以加快收敛速度,并提高模型性能。
示例:训练文件命令
yolo detect train data=./cfg/datasets/people.yaml model=yolo11n.pt epochs=10
模型验证
在训练完成后,可以使用以下命令对模型进行验证:
yolo predict model=.model.pt source=./test.jpg
此命令将使用最优权重文件 best.pt 评估模型在验证集上的性能。
示例:推理验证命令
yolo predict model=./runs/detect/train4/weights/best.pt source=./VOC2007_28.jpg
参数调优
在 YOLOv11 中,您可以通过调整多种参数来优化训练过程。以下是常用的参数配置:
参数 | 默认值 | 描述 |
---|---|---|
epochs |
100 |
训练的总轮数。每个 epoch 表示对整个数据集的一次完整遍历。 |
batch |
16 |
每个批次的图像数量,可以根据 GPU 内存进行调整。 |
imgsz |
640 |
输入图像的大小。较大的图像尺寸有助于提高检测精度,但需要更多的计算资源。 |
device |
None |
指定使用的设备,如 0 使用 GPU,cpu 使用 CPU。 |
lr0 |
0.01 |
初始学习率,通常可以根据数据集的复杂性进行调整。 |
momentum |
0.937 |
优化器动量参数。 |
weight_decay |
0.0005 |
L2 正则化项,防止过拟合。 |
可以通过修改这些参数进一步优化模型的训练效果。
实验结果和模型评估
在训练期间和结束后,YOLOv11 会自动生成训练日志、损失曲线和预测图像。你可以通过以下命令查看训练日志:
tensorboard --logdir runs/detect/train
打开浏览器访问 http://localhost:6006/ 即可查看训练过程中的详细统计数据和模型评估结果。