一、本文介绍
本文记录的是利用BiFormer
双级路由注意力机制优化YOLOv11
的目标检测网络模型。传统的多头自注意力(MHSA)
复杂度高,随着输入空间分辨率增加,计算量呈平方增长,导致严重的可扩展性问题。==而本文所使用的BiFormer
在获取全局信息的同时,通过区域到区域路由和令牌到令牌注意力的合理设计,减少了不必要的计算量。==
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、BiFormer介绍
BiFormer: Vision Transformer with Bi-Level Routing Attention
2.1 出发点
- 解决MHSA的可扩展性问题:传统的多head自注意力(MHSA)复杂度高,随着输入空间分辨率增加,计算量呈平方增长,导致严重的可扩展性问题。例如,在图像识别任务中,高分辨率图像会使MHSA的计算负担过重。
- 实现动态、查询感知的稀疏注意力:现有的稀疏注意力机制要么使用手工制作的静态模式,要么在所有查询中共享采样的键值对子集。而实际中不同查询在不同语义区域应关注不同的键值对,所以需要一种能根据查询动态确定关注的键值对的机制。
2.2 原理
2.2.1 区域到区域路由(Region-to-Region Routing)
- 粗粒度区域过滤:首先在粗粒度区域级别过滤掉最不相关的键值对。对于给定的二维输入特征图$X\in\mathbb{R}^{H\times W\times C}$,将其划分为$S\times S$个非重叠区域,通过计算区域级别的查询和键的邻接矩阵$A^{r}$,并保留每个区域的前$k$个连接,得到路由索引矩阵$I^{r}$。
- 确定关注区域:通过上述步骤,每个区域只需要关注前$k$个路由区域,从而减少了需要计算的区域数量,实现了初步的稀疏化。
2.2.2 令牌到令牌注意力(Token-to-Token Attention)
- 收集键值对:在确定了关注区域后,由于这些区域可能在整个特征图中是分散的,直接进行稀疏矩阵乘法在现代GPU上效率低下。所以先收集这些区域对应的键和值张量$K^{g}=gather(K, I^{r})$,$V^{g}=gather(V, I^{r})$。
- 计算注意力:然后对收集到的键值对应用注意力机制$O = Attention(Q, K^{g}, V^{g})+LCE(V)$,其中还引入了局部上下文增强项$LCE(V)$,它是用深度卷积参数化的。
2.3 结构
2.3.1 整体架构
BiFormer
采用四阶段金字塔结构,与一些先进的视觉Transformer类似。在每个阶段,首先使用重叠的补丁嵌入(在第一阶段)或补丁合并模块(在第二到第四阶段)来降低输入空间分辨率同时增加通道数,然后使用$N_{i}$个连续的BiFormer块来转换特征。2.3.1 BiFormer块内部
在每个BiFormer块
中,首先使用$3\times3$深度卷积来隐式编码相对位置信息,然后依次应用Bi - Level Routing Attention(BRA)模块
和2层MLP模块
,分别用于跨位置关系建模和逐位置嵌入。
2.4 优势
- 计算复杂度降低:与普通注意力的$O((H W)^{2})$复杂度和准全局轴向注意力的$O((H W)^{\frac{3}{2}})$复杂度相比,
BRA
在适当的区域划分下具有$O((H W)^{\frac{4}{3}})$的复杂度。通过区域到区域路由和令牌到令牌注意力的合理设计,减少了不必要的计算量。 - 性能优越
- 图像分类:在ImageNet - 1K数据集上进行图像分类实验,不同计算量组的模型中,BiFormer - T、BiFormer - S和BiFormer - B分别取得了优异的成绩,超过了很多相关方法和现有技术水平。例如BiFormer - S在不使用额外训练数据或训练技巧的情况下,取得了83.8%的top - 1准确率,使用标记标记技术后可进一步提高到84.3%。
- 目标检测和实例分割:在COCO 2017数据集上,使用RetinaNet进行目标检测和Mask R - CNN进行实例分割,BiFormer在小物体检测上表现突出,整体性能也与一些先进方法相当,在实例分割的各项指标上有明显优势。
- 语义分割:在ADE20K数据集上进行语义分割实验,在Semantic FPN和UperNet框架下,BiFormer - S和BiFormer - B分别取得了较好的成绩,相比一些现有方法提高了mIoU值。
论文:https://arxiv.org/pdf/2303.08810
源码: https://github.com/rayleizhu/BiFormer
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: