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.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。每个检查点还包含生成该检查点的运行的完整逐轮 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 模型与其他模型的不同之处:
| 设置 | 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 和缩放),因为它们容量更大,也更能从更强的正则化中受益。只有 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 数量并设置 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检查点中。结果会接近已发布的指标,但不会完全相同。若要使用完全相同的设置,请检出检查点中记录的提交,并在该分支上训练。请参阅检查代码修订版本。