腾讯提出Shuffle Transformer:重新思考视觉Transforme

:for
标题&作者团队
本文是腾讯光影实验室俞刚团队在的的最新力作 , 他们创造性的将的置换思想与进行结合 。考虑到近期Swin为代表的非重叠窗口自注意力存在的问题 , 巧妙了借鉴了的置换思想 , 提出了空域置换并于组合得到了本文的。所提方案在分类、语义分割以及COCO实例分割等任务上均取得了SOTA性能 。原文链接:
最近 , 基于窗口的(即在非重叠局部窗口内计算自注意力)在图像分类、语义分割以及目标检测等任务上证实了其令人满意的性能 。然而 , 鲜少研究致力于跨窗口连接 , 而它会是提升表达能力的关键因素 , 
我们对空域置换( )进行了回顾并将其作为一种有效方式构建窗口连接 。更进一步 , 我们提出了一种称之为 的架构 , 它具有高度有效性 , 同时易于实现(仅需修改两行code!) 。与此同时 , 我们引入深度卷积对空域置换进行补充以增强近邻窗口连接 。所提方案在不同视觉任务(包含分类、检测以及语义分割)上均取得了卓越性能 。
接下来 , 我们从标准窗口多头自注意力出发 。为构建长距离跨窗口关系 , 提出了空域置换 , 近邻窗口连接模块用于增强近邻窗口之间的连接性 。然后 , 我们将空域置换与近邻窗口连接进行集成构建Block以构建丰富的跨窗口连接 。最后 , 我们提供了关于网络架构及其变种的信息 。
-based Multi-head Self-
为高效建模 , 有些研究对自注意力添加了局部约束以降低计算复杂度 。基于窗口的多头自注意力(WMSA)在局部窗口内计算自注意力 , 这些窗口采用均匀无重叠方式进行划分 。假设输入为  , 每个窗口包含 个词 , 全局MSA与WMSA的计算量分别是 。因此 , WMSA更为高效 , 与HW成线性关系 。
相比全局MSA , WMSA需要在计算自注意力之前进行窗口划分 , 在完成计算之后再进行窗口到图像的变换 。然而 , 实际应用时额外的操作的计算复杂度是不能忽视的 。除了窗口划分外 , WMSA具有与全局MSA相同的架构 。
for Cross-
尽管WMSA具有计算友好性 , 然而 , 图像被拆分成了无重叠子窗口 。如果存在多个WMSA进行了堆叠 , 那么就会出现单边效应:感受野会受限于窗口而不利于分割类任务 。下图a给出了堆叠两个WMSA的示意图 , 很明显:特定窗口的输出仅与对应窗口的输入相关 。该属性会限制窗口间的信息流动 , 弱化表达能力 。有没有感觉这个图跟中的图非常相似呢???
为解决该问题 , 最直接的一种方案是:第二个WMSA能接收来自不同窗口的输入 , 见上图b 。受启发于 , 我们可以铜鼓空域置换操作对上述方案进行优雅而高效实现 , 见上图c 。
不失一般性 , 假设输入为1D序列 , WMSA的窗口尺寸为M , 输入包含N个词 。我们首先输出空域维度为  , 然后并平展后送入到下一层 。这种类型的操作将来自不同窗口的输入打包 , 有助于构建长距离跨窗口连接 。不同于通道置换 , 空域置换需要进行空域对齐操作调整空域词到原始的位置以确保特征与图像内容在空间上对齐 。空域对齐操作首先将输入空域维度为 然后并平展 , 它是空域置换的逆过程 。
考虑到在计算自注意力之前与之后总是有窗口划分和窗口转图像的操作 , 我们可以将窗口划分与空域置换操作进行合并 , 窗口转图像与空域对齐进行合并 。因此 , 空域置换与空域对齐不会带来额外的计算 , 且仅需修改两行code即可实现 。更重要的是 , 空域置换是可微的 , 这意味着它空域嵌入到网络中进行端到端训练 。