跳转至内容

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)以适应不同尺寸的对象
  • 大多数尺寸的旋转/剪切量极小,从而将几何变形控制在较低水平

不同模型规模下的超参数

优化器和学习率

设置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). 这反映了较小模型与较大模型在收敛动态上的差异——较小的模型需要更激进的更新才能有效学习。

损失权重

设置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 模型则将重点转向边界框回归。分类损失在所有尺寸下保持相对一致。

增强管道

有关每种技术的详细说明,请参阅《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

较大的模型总体上采用更激进的增生策略(更高的混合度复制 粘贴和缩放),因为它们具有更大的容量,且能从更强的正则化中获益。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 进行微调时,无需完全复制预训练流程。预训练权重中已经包含了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_shsv_v 如果光照条件与COCO有显著差异

有关自动超参数优化,请参阅《超参数调优指南》。

选择模型尺寸

模型最适合批量大小指南
YOLO26n边缘设备、移动设备、CPU上的实时处理在消费级GPU上处理大批量数据(64-128)
YOLO26s速度与精度的完美平衡中等批次(32-64)
YOLO26m以适度的计算量实现更高的精度较小批次(16-32)
YOLO26lGPU 可用时,精度很高小批量(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, o2mtopk 在检查站吗?

这些是生成基础检查点的训练管道中的内部参数。它们被保存下来以确保可重复性,但 用户可配置的设置在 default.yaml. 在进行微调时,您无需设置这些选项。参见 内部培训参数 详情请见。

我能从头开始完全复现相同的预训练过程吗?

这些检查点是使用一个内部培训分支生成的,该分支包含公开代码库中没有的额外功能(例如可配置的 o2m 权重和 cls_w). 如果您使用公开的Ultralytics 并采用本页面中记录的超参数,可以得到非常接近的结果,但要完全复现结果,则需要使用内部分支。



📅 创建于 0 天前 ✏️ 更新于 0 天前
raimbekovm

评论