概述
视觉Transformer(ViT)的核心构建块是注意力机制,它能有效捕获数据中的长距离依赖性,但计算成本和内存占用高。
为了降低计算成本,此前的研究提出了一些稀疏注意力机制。这些稀疏注意力主要通过人工设定的局部注意力区域来实现,如Swim的局部窗口,还有的方法选择十字法,稀疏法,可变形等方法。
但是上述的这些方法都是人为的设定注意力区域,这些设定方法作为一种先验知识,并不一定能够很好地处理不同的图像内容。因此,此论文提出了一种新颖的动态稀疏注意力机制,通过两级路由(bi-level routing)来实现更灵活的计算分配,并具有内容感知能力。
论文摘要
作为视觉Transformer的核心模块,注意力是一种强大的工具,能够捕获长距离依赖性。然而,这种强大的能力是有代价的:由于计算所有空间位置之间的成对token交互,它带来了巨大的计算负担和沉重的内存占用。一系列工作尝试通过引入手工制作的、与内容无关的稀疏性来缓解这个问题,例如将注意力操作限制在局部窗口、轴向条纹或扩张窗口内。与这些方法相比,我们提出了一种新颖的通过两级路由实现的动态稀疏注意力,以实现更具灵活性的、具有内容感知能力的计算分配。具体来说,对于一个查询,首先在粗略的区域级别过滤掉不相关的键值对,然后在剩余候选区域(即路由区域)的并集中应用细粒度的token到token的注意力。我们提供了所提出的两级路由注意力的简单但有效的实现,它利用稀疏性来节省计算和内存,同时只涉及GPU友好的密集矩阵乘法。基于所提出的两级路由注意力,我们提出了一个新的通用视觉Transformer,名为BiFormer。由于BiFormer以查询自适应的方式关注查询中的一小部分相关标记,而不受其他不相关标记的干扰,它既具有良好的性能,又具有高计算效率,特别是在密集预测任务中。跨多个计算机视觉任务的实证结果,如图像分类、目标检测和语义分割,验证了我们设计的性能。
论文贡献
我们向传统的注意力机制引入了一种新颖的两级路由机制,它能够以查询自适应的方式启用内容感知的稀疏模式。使用两级路由注意力作为基本构建块,我们提出了一个名为BiFormer的通用视觉Transformer。在包括图像分类、目标检测和语义分割在内的各种计算机视觉任务上的实验结果表明,所提出的BiFormer在相似模型大小的情况下,相比于基线模型取得了显著更好的性能。
核心算法流程
首先作者基于提出的双级路由注意力,提出了BiFormer。采用了经典的4个Stage的架构。
注意力机制的实现就是QKV矩阵的计算。对于原始的视觉Transformer(ViT),它会计算所有图像块之间的QKV矩阵。
本文的双级路由((bi-level routing))注意力则是通过选取最相关的区域进行计算。
如下图所示,对于一个区域(图中蓝色),产生它的Q矩阵。然后通过计算不同区域之间的关联性,选出最关联的两个区域(图中的黄色),产生它们的K和V矩阵。最后通过注意力公式完成计算。
算法的细节流程如以下的描述所示:
-
特征pacth化
-
参数每个patch的QKV矩阵
-
通过平均值计算区域的Q和K
-
通过区域QK矩阵计算得到邻接矩阵A_r
-
通过筛选前k个最大值得到I_r,保存了每个patch最相关的patch的index
-
通过index聚集所有相关区域的K和V
-
计算Q和相关区域的K和V
-
反patch得到特征
实验结果
首先作者在COCO数据集上,对目标检测和实例分割任务和其他方法进行了对比