YOLO26 训练配方#
简介#
本指南记录了用于在 COCO 上生成官方 YOLO26 预训练检查点的确切训练方案。此处显示的每个超参数都已经嵌入在发布的 .pt 权重中,并且可以通过编程方式进行检查。
了解官方检查点背后的内容——不仅是架构,还有塑造其性能的学习率调度、数据增强流程和损失权重——有助于你在微调时做出更好的决策:保留哪些数据增强、调整哪些损失函数权重,以及哪种优化器设置最适合你的数据集大小。
训练概述#
所有 YOLO26 基础模型均在 640x640 分辨率的 COCO 数据集上进行训练,使用的是配备 batch size 128 的 MuSGD 优化器。模型没有在单次运行中从随机权重开始,而是从中间预训练权重初始化,并使用通过演化搜索找到的超参数进行微调。每个模型大小的完整训练日志和指标都可在Ultralytics 平台上查看。
所有尺寸的关键设计选择:
- 端到端训练(
end2end=True),配备无 NMS 的一对一检测头 - MuSGD 优化器,将 SGD 与针对权重矩阵(2D 线性权重和 4D 卷积滤波器,它们被重塑为 2D)的 Muon 风格正交化更新结合起来
- 重度马赛克增强(~0.9-1.0 概率)在最后 10 个周期中禁用(
close_mosaic=10) - 激进的缩放增强 (0.56-0.95),用于处理不同大小的目标
- 最小程度的旋转/剪切,适用于大多数尺寸,以保持较低的几何失真
检查 YOLO26 检查点训练参数#
每个 Ultralytics 检查点都存储了用于生成它的完整训练配置,因此你可以亲自验证此页面上的每个数字:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])输出列出了包含 100 多个条目的完整配置,包括本页记录的每个方案值。yolo26n.pt 的摘录:
batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGD这适用于任何 .pt 检查点——无论是官方发布版本还是你自己的微调模型。有关可配置训练参数的完整列表,请参见训练配置参考。
YOLO26 各模型尺寸的训练超参数#
下表按类别对方案进行了分组——优化器与调度、损失权重以及数据增强。每个值都直接来自发布检查点中嵌入的 train_args。
优化器和学习率#
这些优化器和调度设置驱动了每个尺寸的 COCO 预训练;请注意 N 模型与其他模型有何不同:
| 设置 | 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)。这反映了较小模型与较大模型不同的收敛动态——较小模型需要更激进的更新才能有效学习。
损失权重#
损失权重平衡了检测损失的三个组件——边界框 IoU 回归(box)、分类(cls)和框距离回归项(dfl)。请注意,无 DFL 的 YOLO26 重新利用了 dfl 增益来对归一化框距离上的 L1 损失进行加权,而不是使用分布焦点损失:
| 设置 | 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 模型将重点转移到基于 IoU 的框回归。分类损失在所有尺寸中保持相对一致。
增强管道#
有关每种技术的详细说明,请参阅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 |
显示为 ~0 的值在实际检查点中低于 0.01(例如,S 模型的 degrees=0.00012)——该增强实际上已被禁用。
总体而言,较大的模型使用更激进的增强(更高的 mixup、复制粘贴和缩放),因为它们具有更大的容量并受益于更强的正则化。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 |
有关微调时这些参数含义的说明,请参阅关于这些参数的 FAQ 条目。
在你的数据集上微调 YOLO26#
在自己的数据集上微调 YOLO26 时,你无需复制完整的预训练方案。预训练权重已经编码了来自 COCO 训练的增强和优化知识。有关更多通用的训练最佳实践,请参阅模型训练技巧。
使用默认设置进行微调#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)使用默认配置进行微调是一个强大的基准。除非有特定原因,否则无需调整超参数。
何时调整 YOLO26 超参数#
小型数据集 (< 1,000 张图像):
- 降低增强强度:
mosaic=0.5、mixup=0.0、copy_paste=0.0 - 降低学习率:
lr0=0.001 - 减少带有耐心机制的周期数:
epochs=50、patience=20 - 考虑冻结主干层:
freeze=10
大型数据集 (> 50,000 张图像):
- 更贴近预训练配方
- 考虑将
optimizer=MuSGD用于更长时间的运行 - 增加增强:
mosaic=1.0、mixup=0.3、scale=0.9
领域特定图像(航空、医疗、水下):
- 如果垂直方向有所变化,请增加
flipud=0.5 - 如果对象出现任意旋转,请增加
degrees - 如果光照条件与 COCO 有显着差异,请调整
hsv_s和hsv_v
有关自动化超参数优化,请参阅超参数调优指南。
选择模型大小#
| 模型 | 最适用场景 | Batch Size 指南 |
|---|---|---|
| YOLO26n | 边缘设备、移动设备、CPU 实时推理 | 消费级 GPU 上的大批量 (64-128) |
| YOLO26s | 速度与精度的平衡 | 中等批量 (32-64) |
| YOLO26m | 以适中的算力获得更高精度 | 较小批量 (16-32) |
| YOLO26l | 有 GPU 可用时的高精度 | 小批量 (8-16) 或多 GPU |
| YOLO26x | 最高精度,服务器部署 | 小批量 (4-8) 或多 GPU |
结论#
YOLO26 检查点内置了完整的训练方案,因此每个模型大小背后的确切超参数只需通过 train_args 查询即可获取。从默认值开始微调,使用本页上的表格进行刻意调整,并根据你自己的验证集验证每次更改。如果在过程中遇到问题,请在 Ultralytics GitHub 仓库或 Ultralytics Discord 服务器上向社区求助。
常见问题解答#
使用
torch.load()加载检查点并访问train_args键,或者将model.ckpt["train_args"]与 Ultralytics API 一起使用。有关完整示例,请参阅检查 YOLO26 检查点训练参数。较大的模型在 COCO 上通常需要的训练周期较少,因为它们更大的容量加速了收敛——X 模型训练了 40 个周期,而 N 模型训练了 245 个周期——尽管计数并非严格单调(S 使用 70,M 使用 80)。在自己的数据集上进行微调时,最佳周期数取决于你的数据集大小和复杂度,而不是模型大小。使用早停法(
patience)自动找到合适的停止点。通常你不需要选择:使用默认的
optimizer=auto,Ultralytics 会自动为较长的训练运行(>10,000 次迭代)选择 MuSGD,为较短的运行选择 AdamW。如果你愿意,可以显式设置optimizer=MuSGD。有关 MuSGD 工作原理的更多信息,请参阅训练文档。这些是生成基础检查点的训练流程中的内部参数,记录在
train_args中以保证可复现性。它们不是default.yaml中用户可配置的设置,将它们传递给model.train()会引发无效参数错误——公共软件包不会读取它们。在微调时你不需要设置它们;有关其每个模型大小的具体值,请参阅内部训练参数。不完全是——这些检查点是使用带有公共代码库中没有的其他功能(如可配置的
o2m权重和cls_w)的内部训练分支生成的。你可以使用公共 Ultralytics 软件包配合本页记录的超参数获得非常接近的结果,但要精确复现则需要内部分支。