YOLO26 目标检测原理
Ultralytics YOLO26 是一个统一的实时视觉模型系列。它引入了原生端到端推理、更轻量的检测头、更新的训练方案,以及针对检测、分割、姿态估计、分类和定向检测的特定任务头。
在五个检测尺度上,YOLO26 在 COCO 上达到了 40.9-57.5 mAP,且 T4 TensorRT 延迟仅为 1.7-11.8 毫秒。与 YOLO11n 相比,YOLO26n 在 Intel Xeon CPU @ 2.00 GHz 上的 CPU ONNX 推理速度提升了高达 43%。
image
YOLO26 模型系列围绕四个设计领域构建:
原生端到端推理: 默认的一对一检测头无需非极大值抑制(NMS)即可生成预测,简化了部署并减少了后处理工作。
更轻量的框回归: YOLO26 移除了分布焦点损失(DFL),在保持无约束回归范围的同时降低了检测头的复杂度。
训练配方更新: 训练流水线结合了 MuSGD、Progressive Loss 和 STAL,旨在改进优化,将监督重点转向推理时的头部,并保持对小目标的正面标签覆盖。
特定任务的头部和损失函数: YOLO26 增加了针对实例分割、语义分割变体、姿态估计和定向检测的专项设计,同时在不同任务间保持统一的模型流水线。
总而言之,这些更新优化了各模型尺度和部署目标在准确率与延迟之间的权衡。
yolo26 的创新点:
架构简化:移除分布焦点损失(DFL),简化边界框回归,提升导出兼容性。
端到端推理:采用无NMS设计,直接输出检测结果,降低延迟与部署复杂度。
训练增强:引入渐进损失平衡(ProgLoss)与小目标感知标签分配(STAL),提升小目标检测稳定性。
优化器创新:使用MuSGD优化器,结合SGD与Muon优势,加速模型收敛。
多任务支持:统一框架支持检测、实例分割、姿态估计、定向检测与分类。
边缘优化:支持FP16/INT8量化,在Jetson等设备上实现低延迟实时推理。
性能表现:在COCO等基准上达到高精度,CPU推理速度较前代提升最高43%
image
yolo26 的网络结构简化可以表示为:
image
yolo26 在保证yolo系列标准框架下做出了一些列创新优化。yolo系列的网格划分,三个预测分支,每个网格一个预测结果等这些基础逻辑都没有变化。
和之前版本的网络结构有所不同的是,yolo26中head存在两个,用于无NMS的实现。两者的功能会在后续详细介绍。
image
- Backbone 主干(特征提取,与YOLOv11近似)
输入图像 → 多层CBS卷积 + C3k2残差块 + SPPF + C2PSA自注意力
输出3个多尺度特征图:
P3(stride=8,80×80):小目标浅层特征
P4(stride=16,40×40):中等目标
P5(stride=32,20×20):大目标深层语义
2. Neck 颈部FPN+PAN(多尺度融合)
自上而下上采样融合高层语义,自下而上下采样融合底层定位,最终输出融合后的P3/P4/P5送入检测头,主干、neck在O2M/O2O间完全共享权重。
- Detect Head(核心创新:双分支并行输出)
三层特征图分别送入两组独立解耦头:
One2Many(一对多)分支:传统稠密预测头,仅训练使用;网络结构上类似于yolov8,包括输入输出
One2One(一对一)分支:端到端无NMS头,训练+推理默认主分支;
两者卷积结构一致,但权重不共享;且O2O分支梯度会做detach,避免稀疏监督破坏主干特征学习。
4. 关键结构改动:彻底移除DFL
Box分支直接输出x/y/w/h4维坐标,无分布Softmax计算,轻量化、量化友好。
一、前向传播
图像 —> Backbone + Neck,得到共享P3/P4/P5多尺度特征
O2M(一对多)分支:直接用原始特征做预测
image
O2O(一对一)分支:对输入特征先执行截断梯度(影响反向传播),再做预测
image
二、损失计算
Loss计算(两者都参与,ProgLoss动态加权求和)
O2M Loss:TAL一对多匹配损失;
O2O Loss:STAL一对一匹配损失 + 重复框一致性惩罚损失;
总的损失:
:::info
Loss = w_o2m * Loss_o2m + w_o2o * Loss_o2o
:::
其中 w_o2m 和 w_o2o 是权重调节参数,训练前期w_o2m=0.8,后期逐步降到0.1;w_o2o同步从0.2升到0.9。
三、反向传播
O2M梯度:完整回传 Backbone / Neck / O2M 全部网络结构
O2M无detach截断,它的损失梯度一路向前传播,全部主干、颈部网络权重由O2M梯度主导更新,保证充足稠密监督,避免稀疏梯度震荡。
O2O梯度:仅更新O2O自身卷积头,不会回传到Backbone/Neck
因为输入特征做了detach(),梯度到此截断,O2O分支只能更新自己专属的分类/框卷积,完全不参与主干网络参数更新。
总结训练梯度:
image
Backbone、Neck 只靠 O2M 的梯度更新;O2M头、O2O头各自用自身分支梯度独立更新。
O2O 相较于O2M最大的特点是再反向传播时做了阻隔,O2O 分支前面加了 detach():
image
detach() 相当于在这里砌了一堵墙:
O2O Head 自己的权重可以改,但 O2O 的误差传不过去 Backbone 和 Neck,Backbone、Neck 完全不受 O2O 分支影响。这就叫:截断 O2O 分支对主干网络的梯度传播。目的是让O2O 只改自己的头,不改前面的特征提取部分。
为什么要这么做?(核心原因)
O2O 是一对一稀疏监督:一张图只有几十个正样本,梯度很少、很不稳定。如果让它去改主干,Backbone 会学偏、学震荡、收敛很差
O2M 是一对多稠密监督:正样本多,梯度稳,适合训练主干。O2M前期负责稳定特征的学习,O2O后期负责无NMS的特征学习。
推理流程
在输入尺寸为 640 * 640 时,3个检测头输出特征图为:
20 * 20
40 * 40
80 * 80
每一个网格输出一个预测结果,总计 8400 个结果
全图8400个网格预测全部候选;
全局按置信度 TopK 筛选前300个最高分网格(max_det=300人为上限,平衡速度与稠密场景承载);
输出固定张量[B,300,nc+4],不存在同物体重复预测框;
仅需置信度阈值过滤低分占位框,全程无IoU计算、无NMS。
导出
训练完成后、推理/导出阶段行为:
模型导出ONNX/TensorRT等部署文件、执行model.fuse()推理优化时,自动裁剪、永久移除O2M整个分支,只保留O2O一对一推理头;
推理前向仅走:Backbone+Neck → O2O头 → 全局TopK取前300 → 输出[B,300,nc+4];
仅需置信度过滤,全程无NMS;
若手动设置end2end=False,推理才启用O2M分支,需要NMS后处理。
训推完整流程
训练阶段O2M、O2O双分支同时前向,两者损失加权求和参与反向传播;
仅O2M梯度回传更新Backbone与Neck,O2O梯度仅更新自身检测头;
训练导出模型时自动移除O2M分支,推理全程只使用O2O一对一检测头。
STAL 全称:Small-Target-Aware Label Assignment 小目标感知标签分配(训练阶段核心,无推理逻辑)
传统TAL固定IoU阈值匹配,极小物体易丢失正样本:8像素以内小GT,锚点很难落在框内、IoU极低,直接被划为背景,全程无监督导致严重漏检。
- 动态自适应IoU阈值
物体尺寸越小,匹配IoU门槛自动降低;大目标维持高IoU保证匹配精准度。
- 强制小目标候选扩容
极小GT强制分配至少4个候选锚点,仅允许在浅层P3(8倍下采样)匹配,锁定小目标最优特征层;临时扩张GT搜索范围,避免锚点完全脱离目标。
可参考:https://blog.csdn.net/qq_39697468/article/details/161798744
- 双层TopK一对一冲突消解(支撑无NMS的关键)
○ 第一层:每个GT选出代价最低7个候选网格;
○ 第二层:全局匈牙利二分图冲突消解,保证1个GT仅分配1个最优网格作为正样本,1个网格最多归属1个GT;(无NMS的关键)
○ 所有重叠候选网格全部标记为背景,训练持续压低其置信度,从根源杜绝“同一物体多个高分框
image
- 小目标损失加权
微小物体分类损失权重放大,强制模型重点学习微小特征。
作用定位
● 只为One-to-One一对一检测头提供合规训练标签;
● 兼顾无NMS所需的一对一匹配约束 + 小目标防漏检双重目标;
● 推理阶段不参与计算,仅影响模型收敛权重。
采用One-to-Many一对多头,8400网格每个GT匹配多个锚点,输出大量重叠重复框,必须依赖NMS后处理:存在延迟波动、IoU阈值调参、嵌入式部署需额外后处理代码、DFL算子量化报错等问题。
双头协同训练,推理仅启用One-to-One分支
更多推荐

所有评论(0)