BiFormer 解读和代码使用示例

概述

视觉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矩阵。最后通过注意力公式完成计算。

算法的细节流程如以下的描述所示:

  1. 特征pacth化

  2. 参数每个patch的QKV矩阵

  3. 通过平均值计算区域的Q和K

  4. 通过区域QK矩阵计算得到邻接矩阵A_r

  5. 通过筛选前k个最大值得到I_r,保存了每个patch最相关的patch的index

  6. 通过index聚集所有相关区域的K和V

  7. 计算Q和相关区域的K和V

  8. 反patch得到特征

实验结果

首先作者在COCO数据集上,对目标检测和实例分割任务和其他方法进行了对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值