教你快速上手YOLO系列模型训练与验证:Ultralytics框架简明教程

教程目录

  • 一、训练模型
  • 二、查看模型信息
  • 三、验证最优模型权重
  • 四、断点重新训练
  • 五、数据集配置与训练
  • 六、其他信息补充
    • 1. 自动混合精度 (AMP) 检查
    • 2. 参数自动优化
    • 3. 模型参数量变化
    • 4. 标签文件未正确加载
    • 5. 日志与结果存储

温馨提示:本文是Ultralytics官方中文文档的精华简化版,建议搭配官方完整文档学习 → Ultralytics官方中文教程

✅ 提取官方中文文档核心内容
✅ 避开YOLO初学者常见深坑
✅ 提供可直接运行的代码片段
✅ 用最简流程实现YOLO目标检测实战

往期YOLO专题

  1. 对图片进行标签框预测:YOLOv8可视化predict预测阶段如何调整标签框大小
  2. 对图片进行三色框错误预测分析:【目标检测论文必备】通俗易懂地讲解用绿色、蓝色、红色框可视化描述YOLO模型权重对于单个图片的训练效果(TP、FP、FN)
  3. 改进模型过程中常见的KeyError报错:解决ultralytics中的YOLOv8在执行task.py文件添加模块操作出现的KeyError报错
  4. 模型训练过程中多GPU报错:解决Ultralytics的自定义YOLO模型单GPU可以训练多GPU训练却报错subprocess.CalledProcessError的问题
  5. 在原ultralytics项目中手动部署YOLOv12:YOLOv12震撼首发(附v12模型训练使用过程&A2C2f模块部署)

一、训练模型

# 训练模型
from ultralytics import YOLO

# Load a model
model = YOLO("/home/xxx/ultralytics/ultralytics/cfg/models/11/yolo11s.yaml")  # build a new model from YAML
# model = YOLO("yolo11n.pt")  # load a pretrained model (recommended for training)
# model = YOLO("/home/xxx/ultralytics/ultralytics/cfg/models/11/yolo11n.yaml").load("/home/xxx/ultralytics/yolo11n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(
    data="/home/xxx/ultralytics/ultralytics/cfg/datasets/VisDrone.yaml",
    device='0,1,2',  # 指定设备(如 GPU 编号或 CPU)
    batch=15,        # 每批次图片数量
    epochs=200,      # 训练轮数
    imgsz=640,       # 输入图片尺寸
    seed=10          # 随机种子,用于结果可复现
)
  • 模型选择
    • yolo11s.yaml:小规模模型。
    • yolo11m.yaml:中等规模模型。
    • yolo11l.yaml:大规模模型。
    • yolo11x.yaml:超大规模模型。
    • 默认为 yolo11n.yaml(Nano 版本)。
  • 模型加载
    • 直接加载yaml模型文件,不同模型版本可以通过修改 /home/xxx/ultralytics/ultralytics/cfg/models/11/ 下的yaml模型文件从而选择需要加载的模型:(如 yolo11s.yaml)。
    • 直接加载预训练模型(如 yolo11n.pt)。
    • 加载yaml模型文件并加载预训练权重。
  • 训练参数
    • data:指定数据集配置文件路径(如 VisDrone.yaml)。
    • device:指定使用的设备。例如,device='0,1,2' 表示使用编号为 0、1 和 2 的 GPU。
    • batch:每批次图片数量。
    • epochs:训练轮数。
    • imgsz:输入图片尺寸(如 640x640)。
    • seed:设置随机种子,确保结果可复现。

二、查看模型信息

# 查看模型信息
from ultralytics import YOLO

# Load a model
model = YOLO("/home/xxx/ultralytics/ultralytics/cfg/models/11/yolo11s.yaml")  # build a new model from YAML
model.info()
  • model.info()
    • 显示模型的结构和参数量等详细信息。
    • 适用于调试和优化模型时查看模型复杂度和计算需求。

三、验证最优模型权重

# 验证最优模型权重
from ultralytics import YOLO

# Load a model
model = YOLO('/home/xxx/runs/detect/yolo11s-xxx/weights/best.pt')  # 加载最佳权重文件

# 验证模型
results = model.val(
    device='0,1,2',  # 指定设备
    data='/home/xxx/ultralytics/ultralytics/cfg/datasets/VisDrone.yaml',  # 数据集配置文件路径
    batch=9,         # 每批次图片数量
    split='val'      # 指定验证集
)
  • 验证模型性能
    • 使用 model.val() 在验证集上评估模型性能。
    • 关键参数:
      • device:指定设备(如 GPU 编号或 CPU)。
      • data:指定数据集配置文件路径。
      • batch:每批次图片数量。
      • split:指定数据集子集(如 val 表示验证集)。
    • 输出指标包括 mAP(平均精度均值)、Precision(精确率)、Recall(召回率)等。

四、断点重新训练

# 断点重新训练
from ultralytics import YOLO

# Load a model
model = YOLO('/home/xxx/runs/detect/yolo11s-xxx/weights/last.pt')  # 加载上次保存的权重文件

# 继续训练
results = model.train(
    resume=True,  # 设置为 True,表示从上次中断的地方继续训练
    device='0,1,2',  # 指定设备
    data='/home/xxx/ultralytics/ultralytics/cfg/datasets/VisDrone.yaml',  # 数据集配置文件路径
    batch=9,         # 每批次图片数量
    split='val'      # 指定验证集
)
  • 断点续训
    • 如果训练中断,可以使用上次保存的权重文件继续训练。
    • 关键参数:
      • resume=True:表示从上次中断的地方继续训练。
      • weights:指定权重文件路径(如 last.pt 是训练过程中保存的最后一个权重文件)。
      • 其他参数与普通训练一致(如 devicedatabatch 等)。

五、数据集配置与训练

数据集配置文件位于 /home/xxx/ultralytics/ultralytics/cfg/datasets/ 目录下,例如 VisDrone.yaml。以下是详细说明:

path: /data/xxx/VisDrone # dataset root dir
train: images/train # train images (relative to 'path')  6471 images
val: images/val # val images (relative to 'path')  548 images
test: images/test # test images (optional)  1610 images

# Classes
names:
  0: pedestrian
  1: people
  2: bicycle
  3: car
  4: van
  5: truck
  6: tricycle
  7: awning-tricycle
  8: bus
  9: motor
  • 确保数据集中包含对应的标签文件,路径如 labels/trainlabels/val(此处是隐式配置,并不需要直接展示在数据集的yaml文件中),你的具体数据集目录应该被整理至如下:
/data/xxx/VisDrone/
├── images/
│   ├── train/          # 训练集图片 (6471张)
│   ├── val/            # 验证集图片 (548张)
│   └── test/           # 测试集图片 (1610张,可选)
└── labels/
    ├── train/ 			# 训练集标签 (与images/train一一对应)
    ├── val/         	# 验证集标签 (与images/val一一对应)
    └── test/           # 测试集标签 (与images/test一一对应)
  • 路径对应规则

    • 图片路径:/data/XXX/VisDrone/images/train/xxx.jpg
    • 对应标签路径会自动映射为:/data/XXX/VisDrone/labels/train/xxx.txt
  • 标签文件格式要求

    <class_id> <x_center> <y_center> <width> <height>
    

六、其他信息补充

1. 自动混合精度 (AMP) 检查

训练过程中可能会显示以下信息:

AMP: running Automatic Mixed Precision (AMP) checks with YOLO11n...
  • 在训练时默认会检测是否支持混合精度训练(AMP), AMP检测是框架行为,与 YOLO版本无关,无论check with yolo11n还是yolov8n都没关系。

2. 参数自动优化

如果设置了 optimizer=auto,框架会自动忽略手动设置的学习率(lr)和动量值(momentum),并选择最佳优化器及超参数。

3. 模型参数量变化

训练前后输出的模型参数量(parameters)可能略微有些不同,这是正常现象,因为框架会根据数据集类别数等信息动态调整模型结构。

4. 标签文件未正确加载

如果训练开始时 bbox_loss 损失为 0,可能是标签文件路径或格式有误。请检查:

  • 图片文件与标签文件是否一一对应。
  • 标签文件格式是否符合 YOLO 的要求(txt文件)。

5. 日志与结果存储

训练日志默认存储在 runs/detect/trainXX 目录下:

  • result.png:查看模型收敛情况。

在这里插入图片描述

  • result.csv:具体数据(训练和验证的损失与精度),可用于二次绘图。
  • labels.png:展示数据集中目标大小的分布情况。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值