博客专栏

EEPW首页 > 博客 > Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法

Shunted Self-Attention | 源于 PvT又高于PvT,解决小目标问题的ViT方法

发布人:计算机视觉工坊 时间:2022-07-23 来源:工程师 发布文章
作者丨ChaucerG

来源丨集智书童图片

最近的 Vision Transformer (ViT) 模型在各种计算机视觉任务中都展示了不错的性能,这要归功于其通过Self-Attention对图像块或Token的远程依赖关系进行建模的能力。然而,这些模型通常指定每一层内每个Token特征的相似感受野。这种约束不可避免地限制了每个Self-Attention层捕获多尺度特征的能力,从而导致在处理具有不同尺度的多个对象的图像时性能下降。

为了解决这个问题,本文提出了一种新颖的通用策略,称为Shunted Self-Attention(SSA),它允许 ViT 在每个注意力层的混合尺度上对注意力进行建模。SSA 的关键思想是将异构感受野大小注入到Token中:在计算Self-Attention矩阵之前,它选择性地合并Token以表示更大的对象特征,同时保留某些Token以保留细粒度的特征。这种新颖的合并方案使Self-Attention能够学习不同大小目标之间的关系,同时减少Token数量和计算成本。

图片

各种任务的广泛实验证明了 SSA 的优越性。具体来说,基于 SSA 的 Transformer 实现了 84.0% 的 Top-1 准确率,并在 ImageNet 上以只有一半的模型大小和计算成本超过了最先进的 Focal Transformer,并且在 COCO 上以相似的参数和计算成本下超过了 Focal Transformer 1.3 mAP,ADE20K 超越了 2.9 mIOU。

1简介

最近的Vision Transformer (ViT) 模型在各种计算机视觉任务(例如分类、目标检测、语义分割和视频动作识别)中展示了卓越的性能。与专注于局部建模的卷积神经网络不同,ViT 将输入图像划分为一系列PatchToken),并通过全局 Self-Attention 逐步更新Token特征。Self-Attention 可以有效地模拟Token的长期依赖关系,并通过聚合来自其他Token的信息逐渐扩大其感受野的大小,这在很大程度上是 ViT 成功的原因。

然而,Self-Attention 机制也带来了昂贵的内存消耗成本。因此,最先进的 Transformer 模型具有采用各种下采样策略来减少特征大小和内存消耗。例如,ViT 在第一层进行 16×16 的下采样投影,并在生成的粗粒度和单尺度特征图上计算 Self-Attention;因此,所产生的特征信息丢失不可避免地会降低模型性能。其他方法努力计算高分辨率特征的 Self-Attention,并通过将TokenToken的空间缩减合并来降低成本。然而,这些方法往往会在一个Self-Attention中合并太多的Token,从而导致来自小物体和背景噪声的Token混合在一起。反过来,这种行为也使模型在捕获小目标方面的效率降低。

此外,先前的 Transformer 模型在很大程度上忽略了注意力层内场景目标的多尺度性质,使得它们在涉及不同大小目标的野外场景中变得脆难以检测。从技术上讲,这种低效率归因于它们潜在的注意力机制:现有方法仅依赖于Token的静态感受野和一个注意力层内的统一信息粒度,因此无法同时捕获不同尺度的特征。

为了解决这个限制,作者引入了一种新颖的通用Self-Attention方案,称为Shunted Self-Attention(SSA),它明确允许同一层内的Self-Attention Head分别解释粗粒度和细粒度特征。与合并太多Token或捕获失败的先前方法不同小物体,SSA 有效地在同一层内的不同注意力头上同时对各种尺度的物体进行建模,使其具有良好的计算效率以及保留细粒度细节的能力。

图片图 2

在图 2 中展示了标准 Self-Attention(来自 ViT)、下采样辅助注意力(来自 PVT)和提议的 SSA 之间的定性比较。当对相同大小的特征图应用不同的注意力时,ViT 可以捕获到细粒度的小目标,但计算成本非常高(图2(a));PVT 降低了计算成本,但它的注意力仅限于到粗粒度的较大目标(图2(b))。

相比之下,所提出的 SSA 保持了比较小的计算成本,但同时考虑了混合尺度的注意力(图2(c))。实际上,SSA 不仅可以精确地处理粗粒度的大物体(例如沙发),还可以精确地处理细粒度的小物体(例如灯和风扇),甚至一些位于角落的物体,不幸的是 PVT 错过了这些物体。

图片图 3

在图 3 中显示了注意力图的视觉比较,以突出 SSA 的学习尺度自适应注意力。

SSA 的多尺度注意力机制是通过将多个注意力头分成几组来实现的。每个组占一个专门的注意力粒度。对于细粒度的组,SSA 会聚合很少的Token并保留更多的局部细节。对于剩余的粗粒度头部组,SSA 学习聚合大量的Token,从而降低计算成本,同时保留捕获大目标的能力。多粒度组共同学习多粒度信息,使模型能够有效地建模多尺度目标。

主要贡献
  • 提出了Shunted Self-Attention (SSA),它通过多尺度Token聚合在一个Self-Attention层内统一多尺度特征提取。SSA 自适应地合并大目标上的Token以提高计算效率,并保留小目标的Token

  • 基于 SSA 构建了Shunted Transformer,它能够有效地捕获多尺度物体,尤其是小型和远程孤立物体。

  • 在包括分类、目标检测和分割在内的各种研究中评估了Shunted Transformer。实验结果表明,Shunted Transformer在相似的模型尺寸下始终优于以前的Vision Transformer

2本文方法

图片图 4 Shunted Transformer & SSA

本文提出的Shunted Transformer的整体架构如图 4 所示。它建立在Shunted Self-Attention (SSA) 块之上。SSA 模块与 ViT 中的传统Self-Attention模块有2个主要区别:

  1. SSA 为每个self-attention层引入了分流注意力机制,以捕获多粒度信息,更好地建模不同大小的目标,尤其是小目标;

  2. 它通过增强跨Token交互来增强在逐点前馈层中提取局部信息的能力。

此外,还在的Shunted Transformer部署了一种新的Patch Embedding方法,以便为第一个注意块获得更好的输入特征图。

2.1 Shunted Transformer Block

在所提出的Shunted Transformer的第 i 个Stage中,有  个Transformer Block。每个Transformer Block都包含一个Self-Attention层和一个前馈层。为了降低处理高分辨率特征图时的计算成本,PVT 引入了Spatial Reduction AttentionSRA)来代替原来的Multi-Head Self-AttentionMSA)。然而,SRA 倾向于在一个Self-Attention层中合并Token,并且只提供单一尺度的Token特征。这些限制阻碍了模型捕捉多尺度物体的能力,尤其是小尺寸物体。因此,本文引入了Shunted Self-Attention,可以在一个Self-Attention层内并行学习多粒度特征。

1、Shunted Self-Attention

首先将输入序列  投影到 query(Q)、key(K) 和 value(V) 张量中。然后Multi-Head Self-Attention采用H个独立的注意力Head并行计算Self-Attention。为了降低计算成本,遵循 PVT 的思想减少 K 和 V 的长度,而不是像 Swin Transformer 中那样将 {Q, K, V} 拆分为区域。图片图5如图 5 所示, SSA 与 PVT 的 SRA 不同之处在于,K、V 的长度在同一Self-Attention层的注意力Head上并不相同。取而代之的是,不同Head的长度不同,以捕获不同的粒度信息。这给出了Multi-scale Token Aggregation (MTA)。具体来说,对于由 i 索引的不同Head,Key K 和Value V 被下采样到不同的大小:图片这里的  是第 i 个Head中的多尺度Token聚合层,下采样率为 。在实践中,采用kernel-size和stride为  的卷积层来实现下采样。是第i个Head的线性投影的参数。在一层中存在变体  注意头。因此,key 和 value 可以在 Self-Attention 中捕获不同的尺度。LE(·) 是 MTA 通过深度卷积对Value V 进行的局部增强分量。与Spatial Reduction Attention相比,保留了更多细粒度和低层次的细节。那么shunted self-attention计算如下:图片其中  是维度。由于多尺度 key 和value,shunted self-attention在捕获多尺度目标方面更加强大。而计算成本的降低取决于 r 的值,因此,可以很好地定义模型和 r 来权衡计算成本和模型性能。当r变大时,K,V中更多的token被合并,K,V的长度更短,因此计算成本低,但仍然保留了捕获大目标的能力。相反,当 r 变小时,保留更多细节但带来更多计算成本。将各种 r 集成到一个Self-Attention层中,使其能够捕获多粒度特征。

2、Detail-specific Feedforward Layers

在传统的前馈层中,全连接层是逐点的,无法学习到交叉token信息。在这里通过指定前馈层中的细节来补充局部信息。图片图 6如图 6 所示,通过在前馈层的2个全连接层之间添加数据特定层来补充前馈层中的局部细节:图片其中 DS(·; θ) 是具有参数 θ 的细节特定层,在实践中通过深度卷积实现。

2.2 Patch Embedding

Transformer 最初是为处理顺序数据而设计的。如何将图像映射到序列对于模型的性能很重要。ViT 直接将输入图像分割成 16 × 16 的非重叠Patches。最近的一项研究发现,在Patch Embedding中使用卷积可提供更高质量的Token序列,并帮助Transformer比传统的大步幅非重叠Patch Embedding“看得更清楚”。因此,一些作品像使用 7×7 卷积一样进行重叠块Embedding。Shunted Transformer中,根据模型大小采用不同的卷积层重叠。将步长为 2 和零填充的 7×7 卷积层作为Patch Embedding的第1层,并根据模型大小添加额外的stride为 1 的 3×3 卷积层。最后,使用stride为 2 的非重叠投影层生成大小为 H/4×W/4 的输入序列。

2.3 模型架构与变体

给定尺寸为 H×W×3 的输入图像,采用上述Patch Embedding方案来获得长度为 H/4×W/4 和Token维度 C 的更多信息Token序列。按照之前的设计,模型中有4个阶段,每个阶段都包含几个Shunted Transformer blocks。在每个阶段,每个Block输出相同大小的特征图。采用步长为 2(线性嵌入)的卷积层来连接不同的阶段,特征图的大小在进入下一个阶段之前将减半,但维度将加倍。因此,有每个阶段输出的4个特征图 、、、 的大小为 图片表 1这里提出了3种不同的模型配置,以便在相似的参数和计算成本下进行公平比较。如表 1 所示,head 和  表示一个Block中的Head数和一个Stage中的Block数。变体仅来自不同阶段的层数。具体来说,每个block的head数设置为2,4,8,16。Patch Embedding中的卷积范围为 1 到 3。

3实验3.1 分类实验

图片

3.2 目标检测与实例分割

图片

3.3 语义分割

图片

4参考

[1].Shunted Self-Attention via Multi-Scale Token Aggregation

本文仅做学术分享,如有侵权,请联系删文。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词: AI

相关推荐

技术专区

关闭