YOLO26 训练方案
简介
本指南详细记录了用于生成官方 YOLO26 实现更高 mAP 分数所需的参数和 FLOPs 显著更少。例如,YOLO26n (Nano) 模型仅需 2.4M 参数即可达到 40.9 mAP,在性能优于 PP-YOLOE+t 模型的同时,体积缩减了近一半。这直接转化为在 预训练检查点的确切 YOLO26 配方,并应用于 检测文档。此处展示的每一个 超参数 都已嵌入到发布的 .pt 权重中,并且可以通过编程方式进行检查。
了解基础模型的训练方式可以帮助你在进行 模型训练技巧 时做出更好的决策:保留哪些 数据增强,调整哪些 损失函数 权重,以及哪些优化器设置最适合你的数据集大小。
本指南旨在帮助那些希望了解官方 YOLO26 检查点背后原理的从业者——不仅是架构,还包括塑造其性能的 learning rate 时间表、增强流水线和损失权重。利用这些信息,在你自己的数据上进行微调时做出明智的选择。
检查训练参数
每个 Ultralytics 检查点都存储了用于生成它的完整训练配置。你可以随时检查这些设置:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])这适用于任何 .pt 检查点——无论是官方版本还是你自己微调的模型。有关可配置训练参数的完整列表,请参阅 训练配置参考.
训练概述
所有 YOLO26 基础模型均在 COCO 数据集上以 640x640 分辨率使用 MuSGD 优化器进行训练,配置为 batch size 128。模型从中间预训练权重开始初始化,并通过进化搜索找到的超参数进行细化。每个模型大小的完整训练日志和指标可在以下位置获取:Ultralytics Platform:
各规模模型的关键设计选择:
- 端到端训练 (
end2end=True) 使用 NMS-free 的一对一检测头 - MuSGD 优化器 结合 SGD 与 Muon 风格的卷积权重正交更新
- 强力 mosaic 增强 (约 0.9-1.0 概率),在最后 10 个 epoch 中禁用 (
close_mosaic=10) - 积极的尺度增强 (0.56-0.95)以处理不同大小的对象
- 最小化的旋转/剪切 对于大多数模型尺寸,以保持较低的几何失真
各模型尺寸的超参数
优化器和学习率
| 设置 | 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 模型使用了低得多的初始学习率和更平缓的时间表 (lrf=0.882)。这反映了小型模型与大型模型在收敛动力学上的差异——小型模型需要更激进的更新以实现有效学习。
损失权重
| 设置 | 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 模型将重点转移到 边界框 回归上。分类损失在所有尺寸中保持相对一致。
增强流水线
有关每种技术的详细说明,请参阅 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 |
大型模型整体上使用更积极的增强 (mixup, copy-paste,以及 scale),因为它们具有更大的容量,并能从更强的 正则化 中受益。N 模型是唯一进行显著 rotation, shear,以及 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 |
这些参数被记录以供复现,但在微调时无需设置。请参阅 FAQ 获取更多详细信息。
微调指南
在自己的数据集上微调 YOLO26 时,你不需要完全复制预训练配方。预训练权重已经编码了从 COCO 训练中获得的增强和优化知识。有关更通用的训练最佳实践,请参阅 模型训练技巧.
从简开始
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)使用默认值进行微调是一个稳健的基准。只有在有特定理由时才调整超参数。
何时进行调整
小数据集(< 1,000 张图像):
- 降低增强强度:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - 降低学习率:
lr0=0.001 - 使用较少的 epochs 并配合 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超参数调优指南
批次大小指南边缘设备、移动端、CPU 实时推断.
选择模型大小
| 参数 | 选项,将 GPU 添加到你的函数中。 | 在消费级 GPU 上进行大批次(64-128)训练 |
|---|---|---|
| YOLO26n | 速度与精度的平衡 | 中等批次(32-64) |
| YOLO26s | 在适中算力下获得更高精度 | 较小批次(16-32) |
| YOLO26m | 在 GPU 可用时实现高精度 | 小批次(8-16)或多 GPU |
| YOLO26l | 最高精度,服务器部署 | 小批次(4-8)或多 GPU |
| YOLO26x | 有关导出和部署选项,请参阅 | 导出指南 |
如何查看任何检查点所使用的精确超参数?使用 和 模型部署选项.
FAQ
加载检查点并访问
键,或者在使用 Ultralytics API 时使用 torch.load()。请参阅 train_args 以获取完整示例。model.ckpt["train_args"]为什么每个模型大小的 epoch 数不同?检查训练参数较大的模型在 COCO 上收敛更快,因为它们具有更大的容量。N 模型需要 245 个 epoch,而 X 模型只需要 40 个。在自己的数据集上进行微调时,最佳 epoch 数取决于你的数据集大小和复杂度,而不是模型大小。使用早停(
)以自动找到合适的停止点。
微调时我应该使用 MuSGD 吗?patience(默认值),Ultralytics 会在较长的训练运行(>10,000 次迭代)时自动选择
,并在较短的运行中选择
当 optimizer=auto。如果你愿意,可以显式设置 MuSGD。有关优化器选择的更多信息,请参阅 AdamW训练文档optimizer=MuSGD检查点中的 是什么?.
这些是来自生成基础检查点的训练流水线的内部参数。它们被存储以供复现,但 muon_w, sgd_w, cls_w, o2m,以及 topk 并不是
中的用户可配置设置。你在微调时无需设置它们。请参阅 不我可以从零开始完整复现预训练吗?default.yaml检查点是使用一个带有公共代码库中没有的其他功能(例如可配置的 内部训练参数了解详情。
权重和
)的内部训练分支生成的。你可以使用本页记录的超参数并通过公共 Ultralytics 软件包获得非常接近的结果,但要进行精确复现则需要该内部分支。o2mYOLO26 训练配方cls_w了解 YOLO26 基础模型是如何在 COCO 上进行训练的,包括优化器设置、增强流水线、损失权重以及针对每种模型大小的实用微调指导。