YOLO26目标检测网络结构

1.网络结构

这里就以nano模型的网络结构为例来说明一下YOLO26的基本结构,其他版本的模型和之前一样除了深度和宽度不一样外,其他都是一样的。

YOLO26还是继续沿袭YOLO的经典架构,Backbone-neck-head,这次改变最大的部分就是Head层,Backbone层可能就更新了两个模块C3K2和C2PSA,下面主要是围绕和YOLOv8的区别来介绍YOLO26的网络结构。

1.Backbone

1.C3K2

从yolo26.yaml中就可以看到C3K2有三种不同的设计,分别就是

  • -1, 2, C3k2, \[256, **False**, 0.25\]

  • -1, 2, C3k2, \[512, **True**\]

  • -1, 1, C3k2, \[1024, **True** , 0.5, **True**\]

其中第二个参数是指C3K是否为True,第四个参数是指Attn是否为True,下面就来看看这三个的区别,直接看例子就能看懂了

先看第一种C3K2,以Backbone第一个C3K2模块为例,-1, 2, C3k2, \[256, **False** , 0.25],即C3K=False,Attn=False的情况:

这种其实就退化成YOLOv8中的C2F模块,其中n通过yolo26.yaml中的Depth来控制,应该是-1, 2, C3k2, \[256, **False** , 0.25]中的2和Depth相乘得到,即2Depth=20.5=1,所以Bottleneck模块的个数是1,其他关于这个介绍可以直接去看YOLOv8中关于C2F模块的介绍。

另外补充一点,C3K2中第一个CBS模块的卷积核个数,也就是输出通道数2 *int*(c2 e)=2*64* 0.25=32,e是-1, 2, C3k2, \[256, **False**, 0.25]的0.25,而c2是输出通道数,需要通过yolo26.yaml中的Width来算,即0.25*256=64,这也是第二个CBS的输出通道数。

第二种情况的C3K2,以Backbone第三个C3K2模块为例,-1, 2, C3k2, \[512, **True** ],即C3K=False,Attn=False的情况:

这种明显复杂了很多,其实细看也就是Bottleneck改变了,至于为什么要这么设计我也不知道笑哭笑哭

我个人觉得关于网络结构这块大家知道个大概就好了,不用太关注网络是如何设计的,主要关注网络是如何解码如何进行训练的就好了。

第三种情况的C3K2,以Neck层的最后一个C3K2模块为例,-1, 1, C3k2, \[1024, **True** , 0.5, **True** ] ,即C3K=True,Attn=True的情况:

这种情况细看也是原本C2f中的Bottleneck模块改变了,可以看到在原本的Bottlneck模块后面加了一个PSABlock模块,然后将这两个作为完整的BottleNeck,PSABlock模块下一节会介绍。

2.C2PSA

这个模块放在SPPF后面,主要是对高维度的低分辨率特征图进行Self Attention,没错就是那个Transformer,先看下C2PSA的整体结构,是不是和前面的C3K2很像,其实不管是C3K2还是C2PSA模块都是YOLOv8中C2f的变体,区别就在于BottleNeck的设计,这里是直接插入了一个PSABlock,包含了Attention模块和FFN模块,其实这个就是Transformer中的结构。

如果对Transformer不是很熟悉,可以去看看我的这两篇博客

Vision Transformer网络结构-CSDN博客

如何理解Transformer的自注意力机制-CSDN博客

接下来就看看PSABlock模块了,分别是Attention的残差结构,再加上FFN的残差结构,看了前面两篇博客,应该也能看懂这个图了。

这里把20x20尺度这个特征图看成是400个token,每个token包含128维特征,并且拆分成了两个头,然后Position Encoder使用一个Conv+BN ,是对v.reshape(B, C, H, W)后的特征图进行卷积的,具体可以看代码E:\code\ultralytics-main\ultralytics\nn\modules\block.py,Line1271,Attention()类.

2.Head

可以看到26的Head层有两层输出,一个是one2one输出的boxes和scores,一个是one2many输出的boxes和scores,如下图所示,需要注意两点就好了,这些都是为了无NMS做的准备。

1.one2one分支只会根本更新head层,而不会更新backbone和neck层 2.one2many分支的head和one2one分支的head结构一模一样,可以理解为不共享权重的head

还有一个需要注意的就是,现在的Boxes层只有4个维度,和YOLOv8的64个维度有区别,说明26不再需要DFL解码来计算预测框的宽高和位置了。

具体head里面的具体卷积参数如下所示(以80x80尺度为例),Scores分支中第一个DWCBS的输出通道数和输入特征图的通道数保持一致,即64,并且DWCBS的groups和通道数相等,这是卷积最轻量化的方式了。

这里粗略介绍了YOLO26的网络结构,后面再更新下YOLO26的训练过程以及推理过程,希望大家多多支持。

相关推荐
fl17683121 小时前
电力场景配网耐张线夹绝缘保护套安装状态检测数据集VOC+YOLO格式2375张2类别
人工智能·yolo·机器学习
FriendshipT1 天前
Ultralytics:简要解读YOLOv8 → YOLO11 → YOLO26网络架构
人工智能·pytorch·python·深度学习·yolo·目标检测
jay神1 天前
基于YOLOv8行人车辆检测系统
深度学习·yolo·目标检测·计算机视觉·毕业设计
学到头秃的suhian2 天前
Super Mamba feature enhancement framework for small object detection
目标检测
探物 AI3 天前
yolo检测核心组件3:ECA 注意力机制
人工智能·深度学习·yolo
START_GAME3 天前
yolo模型笔记
笔记·yolo
老猿AI洞察3 天前
智能视觉检测平台——完整商业化项目全功能详解
人工智能·yolo·计算机视觉·视觉检测
m沐沐3 天前
【深度学习】YOLOv2目标检测算法——改进点、网络结构与聚类先验框解析
人工智能·pytorch·深度学习·算法·yolo·目标检测·transformer
生命涌现4 天前
生命涌现的小龙虾技能之【Human Pose Recognition Skill | 人体姿态识别技能】简介
人工智能·目标检测·计算机视觉·多模态大模型·openclaw小龙虾技能
深度学习lover4 天前
<数据集>yolo 小麦麦穗识别<目标检测>
人工智能·yolo·目标检测·计算机视觉·数据集·小麦麦穗识别