YOLO26训练秘籍
简介
本指南记录了确切的 训练 用于生成官方 YOLO26 预训练检查点的 COCO。 每个 超参数 .pt 此处显示的都已嵌入到发布的
权重中,并且可以通过编程方式进行检查。
本指南适用于哪些人群?
本指南面向希望了解官方YOLO26检查点背后细节的实践者 — 不仅仅是架构,还包括塑造其性能的学习率调度、增强流水线和损失权重。利用这些信息,在您自己的数据上进行微调时做出明智的选择。
查看训练参数
每个Ultralytics检查点都存储了用于生成它的完整训练配置。您可以随时检查这些设置:
检查检查点训练参数
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])
import torch
# Load any official checkpoint
ckpt = torch.load("yolo26n.pt", map_location="cpu", weights_only=False)
# Print all training arguments
for k, v in sorted(ckpt["train_args"].items()):
print(f"{k}: {v}")
这适用于任何 .pt 检查点 — 无论是官方发布版本还是您自己微调的模型。有关可配置训练参数的完整列表,请参阅 训练配置参考.
训练概述
所有YOLO26基础模型均在COCO数据集上以640x640分辨率进行训练,使用MuSGD优化器,批量大小为128。模型从中间预训练权重初始化,并通过进化搜索找到的超参数进行优化。所有模型尺寸的完整训练日志和指标可在Ultralytics Platform上查看:
所有尺寸的关键设计选择:
- 端到端训练 (
end2end=True) 采用无NMS的一对一头部 - MuSGD优化器,将SGD与Muon风格的正交化更新相结合,用于卷积权重
- 大量mosaic数据增强 (约0.9-1.0的概率) 在最后10个epoch中禁用 (
close_mosaic=10) - 激进的尺度增强 (0.56-0.95),以处理不同尺寸的目标
- 大多数尺寸采用最小的旋转/剪切,保持几何失真较低
各模型尺寸的超参数
优化器和学习率
| 设置 | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
学习率策略
N模型使用了更高的初始学习率和陡峭的衰减 (lrf=0.0495),而S/M/L/X模型使用了低得多的初始学习率和更平缓的调度 (lrf=0.882)。这反映了小型模型与大型模型之间不同的收敛动态——小型模型需要更激进的更新才能有效学习。
损失权重
| 设置 | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5.63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
N模型优先考虑DFL损失,而S/M/L/X模型则将重点转向边界框回归。分类损失在所有尺寸中保持相对一致。
数据增强流水线
有关每种技术的详细解释,请参阅YOLO数据增强指南。
| 设置 | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
大型模型整体上使用更激进的增强(更高的mixup、copy-paste和尺度增强),因为它们具有更大的容量并受益于更强的正则化。N模型是唯一具有显著旋转、剪切和BGR增强的尺寸。
内部训练参数
高级:内部管道参数
检查点还包含在内部训练管道中使用的参数,但这些参数 不 作为用户可配置设置公开于 default.yaml:
| 设置 | 描述 | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | MuSGD 中的 Muon 更新权重 | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | MuSGD 中的 SGD 更新权重 | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | 内部分类权重 | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | 一对多头部损失权重 | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Top-k 标签分配 | 8 | 5 | 5 | 5 | 5 |
这些被记录下来以确保可复现性,但在微调时无需设置。有关更多详细信息,请参阅常见问题。
微调指南
当在您自己的数据集上微调 YOLO26 时,您无需复制完整的预训练方案。预训练权重已编码了来自 COCO 训练的增强和优化知识。有关更通用的训练最佳实践,请参阅模型训练技巧。
从简开始
使用默认设置进行微调
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
yolo train model=yolo26n.pt data=your-dataset.yaml epochs=100 imgsz=640
使用默认设置进行微调是一个强大的基线。仅在有特定原因时才调整超参数。
何时调整
Small datasets (< 1,000 images):
- 降低数据增强强度:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - 降低学习率:
lr0=0.001 - 使用更少的 个 epoch 并带有耐心:
epochs=50,patience=20 - 考虑冻结骨干层:
freeze=10
大型数据集(> 50,000 张图像):
- 更紧密地匹配预训练方案
- 考虑
optimizer=MuSGD用于长时间运行 - 增加数据增强:
mosaic=1.0,mixup=0.3,scale=0.9
领域特定图像(航空、医学、水下):
- 增加
flipud=0.5如果垂直方向变化较大 - 增加
degrees如果物体以任意旋转出现 - 调整
hsv_s和hsv_v如果光照条件与COCO数据集显著不同
对于自动化超参数优化,请参阅超参数调优指南。
选择模型尺寸
| 模型 | 最适合 | 批大小指导 |
|---|---|---|
| YOLO26n | 边缘设备、移动设备、CPU实时运行 | 消费级GPU上的大批次 (64-128) |
| YOLO26s | 速度与精度平衡 | 中等批次 (32-64) |
| YOLO26m | 适度计算量下实现更高精度 | 较小批次 (16-32) |
| YOLO26l | GPU可用时的高精度 | 小批次 (8-16) 或多GPU |
| YOLO26x | 最高精度,服务器部署 | 小批次 (4-8) 或多GPU |
常见问题
如何查看任何检查点使用的确切超参数?
使用以下方式加载检查点: torch.load() 并访问 train_args 键,或使用 model.ckpt["train_args"] 结合Ultralytics API。请参阅 查看训练参数 获取完整示例。
为什么不同模型尺寸的训练轮次(epoch)数量不同?
更大的模型在COCO数据集上收敛更快,因为它们具有更大的容量。N模型需要245个epoch,而X模型仅需要40个。在您自己的数据集上进行微调时,最佳的epoch数量取决于数据集的大小和复杂性,而非模型大小。使用早停机制 (patience) 自动找到正确的停止点。
微调时是否应该使用MuSGD?
何时 optimizer=auto (默认值),Ultralytics自动选择 MuSGD 用于较长的训练运行 (>10,000次迭代) 和 AdamW 用于较短的训练运行。您可以显式设置 optimizer=MuSGD 如果您愿意。有关优化器选择的更多信息,请参阅 训练文档.
什么是 muon_w, sgd_w, cls_w, o2m和 topk 检查点中的?
这些是生成基础检查点的训练管道中的内部参数。它们被存储用于重现性,但是 不 用户可配置的设置 default.yaml。在微调时,您无需设置它们。请参阅 内部训练参数 详情请见。
我能否从头开始复现精确的预训练过程?
这些检查点是使用一个内部训练分支生成的,该分支包含公共代码库中没有的额外功能(例如可配置的 o2m 权重和 cls_w)。您可以使用本页上记录的超参数和公共 Ultralytics 软件包获得非常接近的结果,但精确重现需要内部分支。