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不是很熟悉,可以去看看我的这两篇博客
接下来就看看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的训练过程以及推理过程,希望大家多多支持。