教程目录
- 一、训练模型
- 二、查看模型信息
- 三、验证最优模型权重
- 四、断点重新训练
- 五、数据集配置与训练
- 六、其他信息补充
- 1. 自动混合精度 (AMP) 检查
- 2. 参数自动优化
- 3. 模型参数量变化
- 4. 标签文件未正确加载
- 5. 日志与结果存储
温馨提示:本文是Ultralytics官方中文文档的精华简化版,建议搭配官方完整文档学习 → Ultralytics官方中文教程
✅ 提取官方中文文档核心内容
✅ 避开YOLO初学者常见深坑
✅ 提供可直接运行的代码片段
✅ 用最简流程实现YOLO目标检测实战
往期YOLO专题:
- 对图片进行标签框预测:YOLOv8可视化predict预测阶段如何调整标签框大小
- 对图片进行三色框错误预测分析:【目标检测论文必备】通俗易懂地讲解用绿色、蓝色、红色框可视化描述YOLO模型权重对于单个图片的训练效果(TP、FP、FN)
- 改进模型过程中常见的KeyError报错:解决ultralytics中的YOLOv8在执行task.py文件添加模块操作出现的KeyError报错
- 模型训练过程中多GPU报错:解决Ultralytics的自定义YOLO模型单GPU可以训练多GPU训练却报错subprocess.CalledProcessError的问题
- 在原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
是训练过程中保存的最后一个权重文件)。- 其他参数与普通训练一致(如
device
、data
、batch
等)。
五、数据集配置与训练
数据集配置文件位于 /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/train
和labels/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
:展示数据集中目标大小的分布情况。