YOLO26 训练方案#
简介#
本指南记录了用于在 COCO 上生成官方 YOLO26 预训练检查点的确切训练方案。此处显示的每个超参数都已嵌入发布的 .pt 权重中,同时还包含逐 epoch 训练日志和本次运行的代码修订版本,所有这些内容都可以通过程序检查。
了解官方检查点所包含的内容——不仅是架构,还有影响其性能的学习率计划、增强流程和损失权重——可以帮助你在微调时做出更好的决策:保留哪些数据增强、调整哪些损失函数权重,以及针对你的数据集规模使用哪些优化器设置。
本页面介绍发布的检查点中记录的超参数。要了解其背后的原理,包括架构、损失和标签分配的变化,以及消融实验,请阅读 Ultralytics YOLO26:统一的实时端到端视觉模型。
训练概览#
所有 YOLO26 基础模型都分两个阶段训练:先进行 150 个 epoch 的 Objects365v1 预训练,随后进行 COCO 微调。两个阶段都使用 640x640 分辨率、MuSGD 优化器和 批量大小 128。没有任何 YOLO26 检查点是从随机权重开始在 COCO 上训练的,这就是为什么 COCO 阶段对大多数尺寸来说都很短;COCO 阶段的超参数则通过进化搜索确定。每种模型尺寸的完整训练日志和指标都存储在发布的检查点中,并在 Ultralytics Platform 上渲染为图表。
所有尺寸采用的关键设计选择:
- 在 COCO 阶段之前,每种尺寸都进行 Objects365 预训练
- **双头训练**同时采用一对多与一对一监督;推理默认使用NMS,并可通过
nms=False选择无NMS的预测头 - 采用 MuSGD 优化器,将 SGD 与 Muon 风格的正交化更新相结合,用于权重矩阵(二维线性权重和四维卷积滤波器,后者会重塑为二维)
- 采用 强力马赛克增强(概率约为 ~0.9-1.0),并在最后几个 epoch 中禁用(预训练中为
close_mosaic=8,COCO 上为close_mosaic=10) - 采用 激进的尺度增强(0.5-0.95),以处理不同尺寸的目标
- 大多数尺寸使用 最小化旋转/剪切,以降低几何失真
阶段 1:Objects365 预训练#
每个 YOLO26 COCO 检查点都从相同尺寸的 Objects365v1 检查点微调而来。这些预训练权重也已发布,并记录在 Objects365 数据集页面中。每个 COCO 检查点都会在嵌入 .pt 文件中的训练配置里记录其起始权重;下方的 检查 YOLO26 检查点训练参数将展示如何读取这些信息:
| COCO 检查点 | 起始权重 |
|---|---|
yolo26n.pt | yolo26n-objv1-150.pt |
yolo26s.pt | yolo26s-objv1-150.pt |
yolo26m.pt | yolo26m-objv1-150.pt |
yolo26l.pt | yolo26l-objv1-150.pt |
yolo26x.pt | yolo26x-objv1-150.pt |
预训练主要使用默认设置,而不是搜索得到的值。lr0、lrf、momentum、weight_decay、box 和 cls 与 default.yaml 相同,而 warmup_epochs、close_mosaic 和 dfl 被覆盖。除 X 使用的 warmup_epochs、增强强度以及表格后列出的内部 MuSGD 和检测头权重外,各尺寸共享相同的设置:
| 设置 | 值 |
|---|---|
data | Objects365v1 |
epochs | 150 |
imgsz | 640 |
batch | 128 |
optimizer | MuSGD |
lr0 / lrf | 0.01 / 0.01 |
momentum | 0.937 |
weight_decay | 0.0005 |
warmup_epochs | 1(X 为 2) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| 增强 | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
mixup | 0.0 | 0.05 | 0.15 | 0.15 | 0.2 |
copy_paste | 0.1 | 0.15 | 0.4 | 0.5 | 0.6 |
scale | 0.5 | 0.9 | 0.9 | 0.9 | 0.9 |
这些表格涵盖了影响预训练的设置,而不是完整配置。检查点记录了 100 多个参数,因此请按照下方所示打印 train_args,以获取权威列表。
高级:内部预训练参数
预训练还改变了内部训练参数中所述的同类实验分支参数。cls_w 对每种尺寸均为 1.0:
| 设置 | N | S | M | L | X |
|---|---|---|---|---|---|
muon_w | 0.45 | 0.5 | 0.45 | 0.45 | 0.5 |
sgd_w | 0.55 | 0.5 | 0.55 | 0.55 | 0.6 |
o2m | 0.1 | 0.1 | 0.1 | 1.0 | 1.0 |
你不需要 Objects365 数据集即可复用阶段 1。预训练检查点会像其他 Ultralytics 资源一样自动下载,因此你可以在自己的数据集上对其进行微调:
from ultralytics import YOLO
model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)如果要重新运行 COCO 阶段,请从相同权重开始,并从下方表格中为对应尺寸传入阶段 2 的优化器、损失和增强值。这些表格省略了较小的非默认参数,例如 warmup_momentum、warmup_bias_lr、perspective、flipud 和 cutmix,因此请从检查点打印 train_args 以获取确切配置。发布的包会拒绝这些内部参数,需要使用实验分支。
检查 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 检查点——无论是官方发布版本还是你自己的微调模型。有关可配置训练参数的完整列表,请参阅训练配置参考。
查看训练曲线#
存储的不只有 train_args。每个检查点还包含生成它的运行的完整逐 epoch results.csv,以及最终验证指标。官方 YOLO26 检查点的曲线已发布在 Ultralytics Platform 上;你也可以将任何 .pt 文件拖放到项目中,以绘制相同的数据,文件中的元数据会自动解析。
每个检查点涵盖生成它的阶段,因此 COCO 曲线位于 yolo26s.pt 中,150 个 epoch 的 Objects365 曲线位于 yolo26s-objv1-150.pt 中。
检查代码修订版本#
ckpt["git"] 会记录生成该检查点的提交,这些提交位于 Ultralytics 仓库的公开实验分支中,因此你可以检出确切的训练代码:
from ultralytics import YOLO
print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849实验分支包含从未合并到 main 的工作,例如可配置的 o2m 和 cls_w。使用下方记录的超参数在 main 上训练不会做到逐位一致,但结果与已发布指标的差距可以忽略不计。
各模型尺寸的 YOLO26 训练超参数#
这些是阶段 2 的数值,应用在上述 Objects365 权重之上。下方表格按类别组织训练方案:优化器和计划、损失权重以及增强。每个数值都直接来自发布检查点中嵌入的 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 模型使用低得多的初始 LR 和更平缓的计划(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 和 scale),因为它们容量更大,并且能从更强的正则化中受益。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#
在自己的数据集上微调 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 - 使用显式优化器降低学习率:
optimizer=AdamW、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 - 如果光照条件与 COCO 差异显著,则调整
hsv_s和hsv_v
如需自动化超参数优化,请参阅超参数调优指南。
选择模型尺寸#
| 模型 | 最适用场景 | 批量大小指南 |
|---|---|---|
| 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键,或者通过 Ultralytics API 使用model.ckpt["train_args"]。完整示例请参阅 检查 YOLO26 检查点训练参数。每种尺寸都接受了相同的 150 个 epoch 的 Objects365 预训练,因此 COCO 的数量仅涵盖微调阶段。较大的模型在 COCO 上用更少的这些 epoch 就能收敛,X 为 40,N 为 245。这些数量并非严格单调递增(S 使用 70,M 使用 80),因为它们来自针对每种尺寸进行的超参数搜索。在你自己的数据集上微调时,最佳 epoch 数量取决于数据集的规模和复杂度,而不是模型尺寸。使用提前停止(
patience)自动找到合适的停止点。这些参数来自生成基础检查点的实验分支,并记录在
train_args中以确保可复现。它们不是default.yaml中可由用户配置的设置,将它们传递给model.train()会引发无效参数错误,因为发布的软件包不会读取这些参数。微调时无需设置它们;有关每种模型尺寸对应的值,请参阅 内部训练参数。不是。每个 COCO 检查点都是从相同尺寸的 Objects365v1 检查点微调而来,后者此前已经训练了 150 个 epoch,具体说明见 第 1 阶段:Objects365 预训练 和 YOLO26 论文。已发布指标并非基于 COCO 从头训练得出,因此将从头训练的结果与这些指标进行比较并不具有可比性。
它们位于检查点中,并已在 Ultralytics Platform 上绘制。每个检查点都会存储其运行过程的完整逐 epoch
results.csv,因此只需将一个.pt文件拖到 Platform 项目中,无需编写任何代码即可绘制损失、mAP 变化和学习率。请参阅 查看训练曲线。Objects365 阶段在yolo26*-objv1-150.pt检查点中有自己的日志。你得到的结果会接近已发布的指标,但不会完全相同。若要使用完全相同的设置,请检出检查点中记录的提交,并在该分支上训练。请参阅 检查代码修订版本。