YOLO Vision 2026:

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.ptyolo26n-objv1-150.pt
yolo26s.ptyolo26s-objv1-150.pt
yolo26m.ptyolo26m-objv1-150.pt
yolo26l.ptyolo26l-objv1-150.pt
yolo26x.ptyolo26x-objv1-150.pt

预训练主要使用默认设置,而不是搜索得到的值。lr0lrfmomentumweight_decayboxclsdefault.yaml 相同,而 warmup_epochsclose_mosaicdfl 被覆盖。除 X 使用的 warmup_epochs、增强强度以及表格后列出的内部 MuSGD 和检测头权重外,各尺寸共享相同的设置:

设置
dataObjects365v1
epochs150
imgsz640
batch128
optimizerMuSGD
lr0 / lrf0.01 / 0.01
momentum0.937
weight_decay0.0005
warmup_epochs1(X 为 2)
close_mosaic8
box / cls / dfl7.5 / 0.5 / 6.0
增强NSMLX
mosaic1.01.01.01.01.0
mixup0.00.050.150.150.2
copy_paste0.10.150.40.50.6
scale0.50.90.90.90.9

这些表格涵盖了影响预训练的设置,而不是完整配置。检查点记录了 100 多个参数,因此请按照下方所示打印 train_args,以获取权威列表。

高级:内部预训练参数

预训练还改变了内部训练参数中所述的同类实验分支参数。cls_w 对每种尺寸均为 1.0:

设置NSMLX
muon_w0.450.50.450.450.5
sgd_w0.550.50.550.550.6
o2m0.10.10.11.01.0
从 Objects365 权重开始

你不需要 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_momentumwarmup_bias_lrperspectiveflipudcutmix,因此请从检查点打印 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 的工作,例如可配置的 o2mcls_w。使用下方记录的超参数在 main 上训练不会做到逐位一致,但结果与已发布指标的差距可以忽略不计。

各模型尺寸的 YOLO26 训练超参数#

这些是阶段 2 的数值,应用在上述 Objects365 权重之上。下方表格按类别组织训练方案:优化器和计划、损失权重以及增强。每个数值都直接来自发布检查点中嵌入的 train_args

优化器和学习率#

这些优化器和计划设置驱动了每种尺寸的 COCO 微调;请注意 N 模型与其他模型的不同之处:

设置NSMLX
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.00540.000380.000380.000380.00038
lrf0.04950.8820.8820.8820.882
momentum0.9470.9480.9480.9480.948
weight_decay0.000640.000270.000270.000270.00027
warmup_epochs0.980.990.990.990.99
epochs24570806040
batch128128128128128
imgsz640640640640640
学习率策略

N 模型使用更高的初始学习率和陡峭的衰减(lrf=0.0495),而 S/M/L/X 模型使用低得多的初始 LR 和更平缓的计划(lrf=0.882)。这反映了较小模型与较大模型不同的收敛动态——较小模型需要更激进的更新才能有效学习。

损失权重#

损失权重用于平衡检测损失的三个组成部分——边界框 IoU 回归(box)、分类(cls)以及框距离回归项(dfl)。请注意,无 DFL 的 YOLO26 会重新利用 dfl 增益,在归一化框距离上加权 L1 损失,而不是分布焦点损失:

设置NSMLX
box5.639.839.839.839.83
cls0.560.650.650.650.65
dfl9.040.960.960.960.96

N 模型优先使用 dfl 距离回归项,而 S/M/L/X 模型则将重点转向基于 IoU 的框回归。所有尺寸的分类损失都保持相对一致。

增强流程#

有关每种技术的详细说明,请参阅 YOLO 数据增强指南

设置NSMLX
mosaic0.9090.9920.9920.9920.992
mixup0.0120.050.4270.4270.427
copy_paste0.0750.4040.3040.4040.404
scale0.5620.90.950.950.95
fliplr0.6060.3040.3040.3040.304
degrees1.11~0~0~0~0
shear1.46~0~0~0~0
translate0.0710.2750.2750.2750.275
hsv_h0.0140.0130.0130.0130.013
hsv_s0.6450.3530.3530.3530.353
hsv_v0.5660.1940.1940.1940.194
bgr0.1060.00.00.00.0

实际检查点中显示为 ~0 的值都低于 0.01(例如 S 模型的 degrees=0.00012),因此该增强实际上处于禁用状态。

较大模型总体上使用更激进的增强(更高的 mixup 和 scale),因为它们容量更大,并且能从更强的正则化中受益。N 模型是唯一使用明显旋转、剪切和 BGR 增强的尺寸。

内部训练参数#

高级:内部流程参数

检查点还包含实验训练分支中使用的参数,但这些参数在 default.yaml不会作为用户可配置设置公开

设置描述NSMLX
muon_wMuSGD 中的 Muon 更新权重0.5280.4360.4360.4360.436
sgd_wMuSGD 中的 SGD 更新权重0.6740.4790.4790.4790.479
cls_w内部分类权重2.743.483.483.483.48
o2m一对多检测头损失权重1.00.7050.7050.7050.705
topkTop-k 标签分配85555

有关这些参数在微调时含义的说明,请参阅相关常见问题

在自己的数据集上微调 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.5mixup=0.0copy_paste=0.0
  • 使用显式优化器降低学习率:optimizer=AdamWlr0=0.001
  • 使用更少的epoch并设置耐心值:epochs=50patience=20
  • 考虑冻结骨干网络层:freeze=10

大型数据集(> 50,000 张图像):

  • 更接近地匹配预训练方案
  • 考虑使用 optimizer=MuSGD 进行更长时间的运行
  • 增加增强:mosaic=1.0mixup=0.3scale=0.9

特定领域的图像(航空、医疗、水下):

  • 如果垂直方向有所变化,则增加 flipud=0.5
  • 如果目标可能以任意角度旋转出现,则增加 degrees
  • 如果光照条件与 COCO 差异显著,则调整 hsv_shsv_v

如需自动化超参数优化,请参阅超参数调优指南

选择模型尺寸#

模型最适用场景批量大小指南
YOLO26n边缘设备、移动设备、CPU 上的实时应用在消费级 GPU 上使用大批量(64-128)
YOLO26s速度与准确率的平衡中等批量(32-64)
YOLO26m中等计算资源下获得更高准确率较小批量(16-32)
YOLO26lGPU 可用时的高精度小批量(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 检查点中有自己的日志。

  • 你得到的结果会接近已发布的指标,但不会完全相同。若要使用完全相同的设置,请检出检查点中记录的提交,并在该分支上训练。请参阅 检查代码修订版本

评论