YOLO Vision 2026:

YOLO26 训练配方#

简介#

本指南记录了用于在 COCO 上生成官方 YOLO26 预训练检查点的确切训练方案。此处显示的每个超参数都已经嵌入在发布的 .pt 权重中,并且可以通过编程方式进行检查。

了解官方检查点背后的内容——不仅是架构,还有塑造其性能的学习率调度、数据增强流程和损失权重——有助于你在微调时做出更好的决策:保留哪些数据增强、调整哪些损失函数权重,以及哪种优化器设置最适合你的数据集大小。

训练概述#

所有 YOLO26 基础模型均在 640x640 分辨率的 COCO 数据集上进行训练,使用的是配备 batch size 128MuSGD 优化器。模型没有在单次运行中从随机权重开始,而是从中间预训练权重初始化,并使用通过演化搜索找到的超参数进行微调。每个模型大小的完整训练日志和指标都可在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 模型与其他模型有何不同:

设置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 模型使用低得多的初始学习率和更平缓的调度(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、复制粘贴和缩放),因为它们具有更大的容量并受益于更强的正则化。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

有关微调时这些参数含义的说明,请参阅关于这些参数的 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.5mixup=0.0copy_paste=0.0
  • 降低学习率:lr0=0.001
  • 减少带有耐心机制的周期数:epochs=50patience=20
  • 考虑冻结主干层:freeze=10

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

  • 更贴近预训练配方
  • 考虑将 optimizer=MuSGD 用于更长时间的运行
  • 增加增强:mosaic=1.0mixup=0.3scale=0.9

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

  • 如果垂直方向有所变化,请增加 flipud=0.5
  • 如果对象出现任意旋转,请增加 degrees
  • 如果光照条件与 COCO 有显着差异,请调整 hsv_shsv_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 软件包配合本页记录的超参数获得非常接近的结果,但要精确复现则需要内部分支。

评论