YOLOv26原理分析及训练评估实战代码

YOLOv26原理分析及训练实战代码

一、YOLOv26性能比较

1.1简介

YOLOv26,也称YOLO26,是由ultralytics团队在2025年9月发布,而在2026年1月公开源码。也许是出于版本号冲突的考虑,ultralytics团队发布的这一版YOLO版本号并没有延续之前的v11、v12、v13系列,而是以年份26命名。

Github源码地址为:https://github.com/ultralytics/ultralytics

与ultralytics团队提出的上一个YOLO版本YOLOv11不同,此次的YOLOv26有相应的论文介绍,论文地址为:https://arxiv.org/abs/2509.25164

1.2MSCOCO数据集表现

YOLOv26同样有n/s/m/l/x五种规模的模型,参数量以及在MSCOCO数据集上的表现如下:

1.3对比YOLOv11、v12、v13

1.3.1mAP50-95

在MSCOCO数据集上的mAP50-95,对比如下表:

模型规模 YOLOv11 YOLOv12 YOLOv13 YOLOv26 YOLOv26(e2e)
n 39.5 40.4 41.6 40.9 40.1
s 47.0 47.6 48.0 48.6 47.8
m 51.5 52.5 ------ 53.1 52.5
l 53.4 53.8 53.4 55.0 54.4
x 54.7 55.4 54.8 57.5 56.9

可以看到,在不使用e2e模式即不移除NMS的情况下,除了n规模下v26性能低于v13,其余4种规模相对于v11、v12、v13都有了一个比较大的提升幅度。

而在使用e2e模式即移除NMS的情况下,v26在5种规模下都优于v11。在n、s、m三种规模下接近或低于v12与v13,而在l、x规模下,对比v12、v13精度有明显的提升。

1.3.2参数量与计算浮点数

参数量(M)对比如下表:

模型规模 YOLOv11 YOLOv12 YOLOv13 YOLOv26
n 2.6 2.5 2.5 2.4
s 9.4 9.1 9.0 9.5
m 20.1 19.6 ------ 20.4
l 25.3 26.5 27.6 24.8
x 56.9 59.3 64.0 55.7

计算浮点数(GFLOPs)对比如下表:

模型规模 YOLOv11 YOLOv12 YOLOv13 YOLOv26
n 6.5 6.0 6.4 5.4
s 21.5 19.4 20.8 20.7
m 68.0 59.8 ------ 68.2
l 86.9 82.4 88.4 86.4
x 194.9 184.6 199.2 193.9

从表中可看出,n、s、m规模下v26参数量接近或略高于v11~v13,而l和x规模的v26参数量略低于v11,明显低于v12 ~ v13。

计算浮点数,v26整体略低于v11,介于v12与v13之间。

二、YOLOv26训练与评估

2.1模型安装

根据Github页面说明,v26要求python≥3.8,pytorch≥1.8,要求与v11一致,没有其他特殊的依赖包要求。

推荐使用如下命令,将源码下载到本地,然后执行训练代码,根据提示缺少哪些依赖包,然后进行安装:

bash 复制代码
git clone https://github.com/ultralytics/ultralytics.git

2.2模型训练

2.2.1训练代码

训练示例代码如下,读者可进行安装环境测试,也可以对coco.yaml修改,添加自己的数据集进行训练:

python 复制代码
from ultralytics import YOLO

if __name__ == '__main__':
	model = YOLO('yolo26n.yaml')
	
	# Train the model
	results = model.train(
	  data='coco.yaml',
	  epochs=50, 
	  batch=32, 
	  imgsz=256,
	  optimizer='SGD',
	  scale=0.5,
	  mosaic=1.0,
	  mixup=0.0,
	  copy_paste=0.1,
	  device="0",
	)

上述代码指定:使用sgd优化器,批次大小32,图像统一调整到256×256,训练50个迭代。

scale、mosaic、mixup、copy_paste参数是数据增强的一些设置,device指定使用的显卡id,如只有一块显卡,则为0。

2.2.2训练参数

coco.yaml设置了使用数据集的路径,文件位于ultralytics\ultralytics\cfg\datasets\coco.yaml,如果使用其他数据集,要进行修改。

需要注意的是上述代码中模型配置文件yolo26n.yaml文件其实是yolo26.yaml文件,n是指定使用的模型规模,文件位于ultralytics\ultralytics\cfg\models\26,内容如下:

yaml 复制代码
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Ultralytics YOLO26 object detection model with P3/8 - P5/32 outputs
# Model docs: https://docs.ultralytics.com/models/yolo26
# Task docs: https://docs.ultralytics.com/tasks/detect

# Parameters
nc: 80 # number of classes
end2end: True # whether to use end-to-end mode
reg_max: 1 # DFL bins
scales: # model compound scaling constants, i.e. 'model=yolo26n.yaml' will call yolo26.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.50, 0.25, 1024] # summary: 260 layers, 2,572,280 parameters, 2,572,280 gradients, 6.1 GFLOPs
  s: [0.50, 0.50, 1024] # summary: 260 layers, 10,009,784 parameters, 10,009,784 gradients, 22.8 GFLOPs
  m: [0.50, 1.00, 512] # summary: 280 layers, 21,896,248 parameters, 21,896,248 gradients, 75.4 GFLOPs
  l: [1.00, 1.00, 512] # summary: 392 layers, 26,299,704 parameters, 26,299,704 gradients, 93.8 GFLOPs
  x: [1.00, 1.50, 512] # summary: 392 layers, 58,993,368 parameters, 58,993,368 gradients, 209.5 GFLOPs

# YOLO26n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
  - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
  - [-1, 2, C3k2, [256, False, 0.25]]
  - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
  - [-1, 2, C3k2, [512, False, 0.25]]
  - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
  - [-1, 2, C3k2, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
  - [-1, 2, C3k2, [1024, True]]
  - [-1, 1, SPPF, [1024, 5, 3, True]] # 9
  - [-1, 2, C2PSA, [1024]] # 10

# YOLO26n head
head:
  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 6], 1, Concat, [1]] # cat backbone P4
  - [-1, 2, C3k2, [512, True]] # 13

  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 4], 1, Concat, [1]] # cat backbone P3
  - [-1, 2, C3k2, [256, True]] # 16 (P3/8-small)

  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 13], 1, Concat, [1]] # cat head P4
  - [-1, 2, C3k2, [512, True]] # 19 (P4/16-medium)

  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 10], 1, Concat, [1]] # cat head P5
  - [-1, 1, C3k2, [1024, True, 0.5, True]] # 22 (P5/32-large)

  - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)

模型配置文件中相较以往yolo模型多出了两个参数,分别为end2end和reg_max。
end2end可设置为True和False,设置为True时不使用NMS进行后处理,即端到端模式,此时会明显提高模型预测速度,但会造成精度下降,具体影响程度读者可进行测试。

reg_max设置为1时,表示禁用 DFL。

2.2.3预训练文件与Arial字体文件

首次训练,yolov26会尝试下载预训练文件与Arial字体文件,如果网络存在问题,建议手动下载,然后复制到对应文件夹。

例如yolo26n.pt,应复制到代码同目录下。

而Arial.ttf字体文件,windows系统中应复制到%APPDATA%\Ultralytics,Linux系统中应复制到/root/.config/Ultralytics

2.3模型评估

模型评估示例代码如下:

python 复制代码
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO("best.pt")

    metrics = model.val(
        data="custom.yaml",
        #imgsz=640,
        batch=128,
        iou=0.45,
        plots=True
    )

评估代码中几个重要参数如下:

  1. data参数指定评估的数据集配置文件,一般与训练时使用的数据集配置文件相同;
  2. imgsz指定评估的图片尺寸,当不设置该参数时,模型会使用训练时输入的图片尺寸进行评估;
  3. iou指定预测框重叠的iou阈值,一般该值越小模型性能会更优,而训练时默认iou值为0.7,当评估时设置iou低于0.7时会发现模型性能较训练时有所提升,这是在使用NMS的情况下。

三、YOLOv26原理与结构分析

3.1概述

YOLOv26与之前的YOLO系列有所不同,它将模型改进的方向从模块的改进转向了检测流程、损失函数及优化器的改进,并且将改进的重心放在了推理预测速率的提高上,针对边缘低功耗低算力设备,简化部署和提高推理速度。

具体来说YOLOv26有四大改进:

  1. 去除DFL(Distribution Focal Loss);
  2. 取消NMS(非极大值抑制),直接输出最终结果;
  3. 使用ProgLoss (Progressive Loss Balancing)和STAL(Small-Target-Aware Label Assignment),使训练更稳定,提高小目标检测能力;
  4. 提出MuSGD优化器,融合了SGD与Muon两个优化器的优势,能够达到更快更稳定的收敛。

3.2去除DFL

DFL模块,是使用离散概率分布表示边界框坐标,首先预测坐标位于16个区间的概率,然后对16个概率值进行归一化处理,最后计算期望值作为预测的坐标。

DFL的引入提高了目标框的预测精度,但也带来了计算成本和模型导出困难。

YOLOv26去除了DFL模块,采用直接回归的方式,从而提高了推理速度,降低了模型部署的难度。

而根据对比结果,YOLOv26实现了相近甚至更优的正确率。

3.3端到端推理取消NMS

以往的YOLO系列模型,模型预测输出要经过NMS进行后处理,才能得到最终输出,后处理约占据总预测时间的1/3到2/3,而且需要调整超参数如IoU阈值才能获得理想的结果。

YOLOv26重新设计了预测head,使模型直接输出无冗余的预测框,从而也就不需要NMS进行预测框过滤,减少了预测时间,当然也带来了些许的精度损失。

3.4ProgLoss+STAL

ProgLoss (Progressive Loss Balancing),渐进式损失平衡策略,能够动态调整不同损失分量的权重,确保模型不会过拟合于训练样本数量多的目标类别,也不会忽视样本数量少的目标类别。

这种渐近式损失平衡策略,能够提高模型泛化性和预防训练后期的不稳定性。

STAL(Small-Target-Aware Label Assignment),小目标感知标签分配策略,能够优先小目标的标签分配,避免小目标因有限像素表征和被遮挡导致检测困难。

ProgLoss+STAL,使得YOLOv26在包含小目标或被遮挡的目标的数据集上,正确率有明显的提高。

3.5MuSGD优化器

MuSGD优化器是SGD与Muon优化器结合而来。

SGD(Stochastic Gradient Descent)优化器,核心思想是随机梯度下降算法,在以往的YOLO系列以及计算机视觉领域中较为常见。

而Muon(Momentum Orthogonalized by Newton-Schulz)优化器,核心思想是利用牛顿--舒尔茨迭代对梯度动量进行正交化处理,是用在LLM(large language model)训练中,即自然语言处理领域。

Muon优化器专门针对神经网络隐藏层的二维权重参数设计,在每次参数更新前,对梯度更新矩阵进行近似正交化处理,从而改善优化动力学,加速训练收敛。

据论文中所说,两者结合使得YOLOv26在更少的训练迭代获得了具有竞争力的正确率,从而减少了训练时间和计算成本。

相关推荐
CoovallyAIHub8 小时前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub8 小时前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub8 小时前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub8 小时前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub9 小时前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
用户1474853079741 天前
AI-动手深度学习环境搭建-d2l
深度学习
OpenBayes贝式计算1 天前
解决视频模型痛点,TurboDiffusion 高效视频扩散生成系统;Google Streetview 涵盖多个国家的街景图像数据集
人工智能·深度学习·机器学习
OpenBayes贝式计算1 天前
OCR教程汇总丨DeepSeek/百度飞桨/华中科大等开源创新技术,实现OCR高精度、本地化部署
人工智能·深度学习·机器学习
在人间耕耘2 天前
HarmonyOS Vision Kit 视觉AI实战:把官方 Demo 改造成一套能长期复用的组件库
人工智能·深度学习·harmonyos
homelook2 天前
Transformer与电池管理系统(BMS)的结合是当前 智能电池管理 的前沿研究方向
人工智能·深度学习·transformer