最近的
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
将输入图像划分为一系列Patch
(Token
),并通过全局 Self-Attention
逐步更新Token
特征。Self-Attention
可以有效地模拟Token
的长期依赖关系,并通过聚合来自其他Token
的信息逐渐扩大其感受野的大小,这在很大程度上是 ViT
成功的原因。
然而,Self-Attention
机制也带来了昂贵的内存消耗成本。因此,最先进的 Transformer
模型具有采用各种下采样策略来减少特征大小和内存消耗。例如,ViT
在第一层进行 16×16 的下采样投影,并在生成的粗粒度和单尺度特征图上计算 Self-Attention
;因此,所产生的特征信息丢失不可避免地会降低模型性能。其他方法努力计算高分辨率特征的 Self-Attention
,并通过将Token
与Token
的空间缩减合并来降低成本。然而,这些方法往往会在一个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个主要区别:
SSA
为每个self-attention
层引入了分流注意力机制,以捕获多粒度信息,更好地建模不同大小的目标,尤其是小目标;- 它通过增强跨
Token
交互来增强在逐点前馈层中提取局部信息的能力。
此外,还在的Shunted Transformer
部署了一种新的Patch Embedding
方法,以便为第一个注意块获得更好的输入特征图。
2.1 Shunted Transformer Block
1、Shunted Self-Attention
图5
如图 5 所示, SSA
与 PVT
的 SRA
不同之处在于,K、V 的长度在同一Self-Attention
层的注意力Head上并不相同。取而代之的是,不同Head的长度不同,以捕获不同的粒度信息。这给出了Multi-scale Token Aggregation
(MTA)。具体来说,对于由 i 索引的不同Head,Key K 和Value V 被下采样到不同的大小:
2、Detail-specific Feedforward Layers
在传统的前馈层中,全连接层是逐点的,无法学习到交叉token
信息。在这里通过指定前馈层中的细节来补充局部信息。
图 6
如图 6 所示,通过在前馈层的2个全连接层之间添加数据特定层来补充前馈层中的局部细节:
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 模型架构与变体
3实验
3.1 分类实验
3.2 目标检测与实例分割
3.3 语义分割
原文:集智书童
作者:ChaucerG
推荐阅读
- 改进Yolov5 | 用 GSConv+Slim Neck 一步步把 Yolov5 提升到极致!!!
- 苹果手机实时推理的Transformer模型,登顶轻量化Backbone之巅
- DDQ改进Sparse RCNN让ResNet50在coco上来到了49.8的AP
更多嵌入式AI相关技术干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。