点击上方“计算机视觉工坊”,选择“星标”
干货第一时间送达
作者丨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
将输入图像划分为一系列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 中展示了标准 Self-Attention
(来自 ViT)、下采样辅助注意力
(来自 PVT
)和提议的 SSA
之间的定性比较。当对相同大小的特征图应用不同的注意力时,ViT
可以捕获到细粒度的小目标,但计算成本非常高(图2(a));PVT
降低了计算成本,但它的注意力仅限于到粗粒度的较大目标(图2(b))。
相比之下,所提出的 SSA
保持了比较小的计算成本,但同时考虑了混合尺度的注意力(图2(c))。实际上,SSA
不仅可以精确地处理粗粒度的大物体(例如沙发),还可以精确地处理细粒度的小物体(例如灯和风扇),甚至一些位于角落的物体,不幸的是 PVT
错过了这些物体。
在图 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本文方法
本文提出的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
在所提出的Shunted Transformer
的第 i 个Stage中,有 个Transformer Block
。每个Transformer Block
都包含一个Self-Attention
层和一个前馈层。为了降低处理高分辨率特征图时的计算成本,PVT
引入了Spatial Reduction Attention
(SRA
)来代替原来的Multi-Head Self-Attention
(MSA
)。然而,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 所示, 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 所示,通过在前馈层的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个特征图 、、、, 的大小为 。
这里提出了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
本文仅做学术分享,如有侵权,请联系删文。
干货下载与学习
后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
计算机视觉工坊精品课程官网:3dcver.com
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
重磅!计算机视觉工坊-学习交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~