YOLO26 训练配方
简介
本指南详细记录了 训练 用于制作官方版本的配方 YOLO26 预训练检查点在 COCO. 每个 超参数 此处所示的内容已包含在已发布的版本中 .pt 权重,并且可以通过编程方式进行检查。
了解基础模型的训练过程,有助于你在微调时做出更明智的决策:决定保留哪些数据增强方法、调整哪些损失函数权重,以及哪种优化器设置最适合你的数据集规模。
本指南适合哪些人?
本指南面向希望深入了解 YOLO26 官方检查点具体内容的实践者——不仅包括其架构,还涵盖了影响其性能的学习率曲线、数据增强流程以及损失权重。您可以利用这些信息,在基于自身数据进行微调时做出明智的选择。
检查训练参数
每个Ultralytics 都会存储生成该检查点时使用的完整训练配置。您可以随时查看这些设置:
检查检查点训练参数
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])
import torch
# Load any official checkpoint
ckpt = torch.load("yolo26n.pt", map_location="cpu", weights_only=False)
# Print all training arguments
for k, v in sorted(ckpt["train_args"].items()):
print(f"{k}: {v}")
这适用于任何 .pt 检查点——无论是官方版本还是您自己微调过的模型。有关可配置训练参数的完整列表,请参阅 培训配置参考.
培训概述
所有 YOLO26 基础模型均在COCO 640×640分辨率进行训练,采用MuSGD优化器,批量大小为128。模型基于预训练的中间权重进行初始化,并通过进化搜索获得的超参数进行微调。所有模型尺寸的完整训练日志和评估指标均可在Ultralytics 获取:
所有尺寸的共同设计要点:
- 端到端训练 (
end2end=True) 配备NMS的一对一主机 - MuSGD 优化器:将SGD 针对卷积权重的 Muon 风格正交化更新相结合
- 大量马赛克增强 (概率约为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型号则采用了更低的初始LR值,并采用更平缓的调整方案(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 |
较大的模型总体上采用更激进的增生策略(更高的混合度、复制 粘贴和缩放),因为它们具有更大的容量,且能从更强的正则化中获益。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 进行微调时,无需完全复制预训练流程。预训练权重中已经包含了COCO 积累的数据增强和优化经验。有关更通用的训练最佳实践,请参阅《模型训练技巧》。
从简单开始
使用默认设置进行微调
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
yolo train model=yolo26n.pt data=your-dataset.yaml epochs=100 imgsz=640
使用默认值进行微调是一个可靠的基准。除非有具体原因,否则不要调整超参数。
何时进行调整
Small datasets (< 1,000 images):
- 降低增强强度:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - 降低学习率:
lr0=0.001 - 少用一点 个 epoch 耐心:
epochs=50,patience=20 - 考虑冻结基础层:
freeze=10
大型数据集(> 50,000 张图像):
- 更紧密地匹配预训练配方
- 请考虑
optimizer=MuSGD适用于长距离跑步 - 增加增强:
mosaic=1.0,mixup=0.3,scale=0.9
特定领域的影像(航拍、医疗、水下):
- 增加
flipud=0.5如果垂直方向发生变化 - 增加
degrees如果物体以任意角度旋转出现 - 调整
hsv_s和hsv_v如果光照条件与COCO有显著差异
有关自动超参数优化,请参阅《超参数调优指南》。
选择模型尺寸
| 模型 | 最适合 | 批量大小指南 |
|---|---|---|
| YOLO26n | 边缘设备、移动设备、CPU上的实时处理 | 在消费级GPU上处理大批量数据(64-128) |
| YOLO26s | 速度与精度的完美平衡 | 中等批次(32-64) |
| YOLO26m | 以适度的计算量实现更高的精度 | 较小批次(16-32) |
| YOLO26l | GPU 可用时,精度很高 | 小批量(8-16)或GPU |
| YOLO26x | 最高精度,服务器部署 | 小批量(4-8)或GPU |
常见问题
如何查看某个检查点所使用的确切超参数?
使用以下命令加载检查点: torch.load() 并访问 train_args 键,或使用 model.ckpt["train_args"] 使用Ultralytics 。请参阅 检查训练参数 查看完整示例。
为什么不同模型尺寸的 epoch 计数会有所不同?
COCO 上,模型规模越大,收敛速度越快COCO 它们具有更大的容量。N模型需要245个 epoch,而X模型仅需40个。在针对您自己的数据集进行微调时,最佳的 epoch 数量取决于数据集的大小和复杂程度,而非模型规模。请使用早停法(patience) 以自动找到合适的停止点。
我应该使用 MuSGD 进行微调吗?
何时 optimizer=auto (默认),Ultralytics 选择 MuSGD 对于较长的训练运行(>10,000次迭代)以及 AdamW 对于较短的。您可以显式设置 optimizer=MuSGD 如果您愿意的话。有关优化器选择的更多信息,请参阅 培训资料.
什么是 muon_w, sgd_w, cls_w, o2m和 topk 在检查站吗?
这些是生成基础检查点的训练管道中的内部参数。它们被保存下来以确保可重复性,但 不 用户可配置的设置在 default.yaml. 在进行微调时,您无需设置这些选项。参见 内部培训参数 详情请见。
我能从头开始完全复现相同的预训练过程吗?
这些检查点是使用一个内部培训分支生成的,该分支包含公开代码库中没有的额外功能(例如可配置的 o2m 权重和 cls_w). 如果您使用公开的Ultralytics 并采用本页面中记录的超参数,可以得到非常接近的结果,但要完全复现结果,则需要使用内部分支。