Ultralytics YOLO27:
Get Started

YOLO26 训练方案#

简介#

本指南记录了用于生成官方 YOLO26 预训练权重并在 COCO 上训练的确切训练方案。这里列出的每个超参数都已包含在发布的 .pt 权重中,同时还包含逐 epoch 训练日志和本次运行的代码修订版本;所有这些内容都可以通过程序检查。

了解官方权重中使用的设置——不仅是架构,还包括影响模型性能的学习率计划、数据增强流程和损失权重——能帮助你在微调时做出更好的决策:保留哪些数据增强、调整哪些损失函数权重,以及哪些优化器设置最适合你的数据集规模。

阅读论文,全面了解

本页面介绍发布的权重中记录的超参数。要了解这些参数背后的依据,包括架构、损失和标签分配方面的改动,以及消融实验,请阅读 Ultralytics YOLO26:统一的实时端到端视觉模型。

训练概览#

所有 YOLO26 基础模型都分两个阶段训练:先进行 150 个 epoch 的 Objects365v1 预训练,再进行 COCO 微调。两个阶段都使用 640x640 分辨率、MuSGD 优化器和 批次大小 128。没有任何 YOLO26 权重是从随机权重开始在 COCO 上训练的,因此除最大尺寸外,COCO 阶段的训练时间都较短;COCO 阶段的超参数通过进化搜索确定。每种模型尺寸的完整训练日志和指标都存储在发布的权重中,并以图表形式呈现在 Ultralytics Platform 上。

所有尺寸模型的关键设计选择:

  • 在 COCO 阶段之前,每种尺寸的模型都进行 Objects365 预训练
  • 采用双检测头训练,同时使用 one-to-many 和 one-to-one 监督;默认推理时使用 NMS,使用 nms=False 可选择无 NMS 检测头
  • MuSGD 优化器将 SGD 与 Muon 风格的正交化更新相结合,用于权重矩阵(二维线性权重和四维卷积滤波器,后者会重塑为二维)
  • 强 Mosaic 数据增强(概率约为 ~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

预训练主要使用默认设置,而非搜索得到的值。lr0、lrf、momentum、weight_decay、box 和 cls 与 default.yaml 相同,而 warmup_epochs、close_mosaic 和 dfl 则经过覆盖修改。除 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_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。每个检查点还包含生成该检查点的运行的完整逐轮 results.csv,以及最终验证指标。官方 YOLO26 检查点的曲线发布在 Ultralytics Platform 上;你也可以将任何 .pt 文件拖放到项目中,以图表形式查看相同数据,系统会自动解析文件中的元数据。

每个检查点对应生成它的阶段,因此 COCO 曲线位于 yolo26s.pt 中,而 150 轮 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 模型与其他模型的不同之处:

设置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 和缩放),因为它们容量更大,也更能从更强的正则化中受益。只有 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.5、mixup=0.0、copy_paste=0.0
  • 使用明确指定的优化器降低学习率:optimizer=AdamW、lr0=0.001
  • 减少 epoch 数量并设置 patience: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 检查点训练参数。

  • 所有尺寸的模型都使用 Objects365 进行了相同的 150 轮预训练,因此 COCO 的轮数只涵盖微调阶段。大型模型在 COCO 上收敛所需的轮数更少:X 为 40 轮,而 N 为 245 轮。轮数并非严格单调递增(S 使用了 70 轮,M 使用了 80 轮),因为这些数值来自针对各尺寸模型进行的超参数搜索。在自己的数据集上微调时,最佳轮数取决于数据集的规模和复杂度,而不是模型尺寸。使用提前停止(patience)即可自动找到合适的停止时机。

  • 这些参数来自生成基础检查点的实验分支,并记录在 train_args 中以确保可复现。它们不是 default.yaml 中可由用户配置的设置,传入 model.train() 会引发无效参数错误,因为已发布的软件包不会读取这些参数。微调时无需设置这些参数;有关各模型尺寸对应的参数值,请参阅内部训练参数。

  • 不是。每个 COCO 检查点都是从相同尺寸的 Objects365v1 检查点微调而来,后者此前已经训练了 150 轮,具体说明见阶段 1:Objects365 预训练和 YOLO26 论文。已发布的数值并非来自任何从头开始的 COCO 训练,因此,将从头训练的结果与这些数值进行比较并非同类比较。

  • 日志保存在检查点中,图表则展示在 Ultralytics Platform 上。每个检查点都会保存其运行的完整逐轮 results.csv,因此只需将 .pt 文件拖到 Platform 项目中,无需编写代码即可绘制损失、mAP 变化和学习率曲线。请参阅查看训练曲线。Objects365 阶段的日志则保存在对应的 yolo26*-objv1-150.pt 检查点中。

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

评论