MViT:性能杠杠的多尺度ViT | ICCV 2021

论文提出了多尺度视觉Transformer模型MViT,将多尺度层级特征的基本概念与Transformer模型联系起来,在逐层扩展特征复杂度同时降低特征的分辨率。在视频识别和图像分类的任务中,MViT均优于单尺度的ViT

来源:晓飞的算法工程笔记 公众号

论文: Multiscale Vision Transformers

Introduction


  论文提出了用于视频和图像识别的多尺度ViT(MViT),将FPN的多尺度层级特征结构与Transformer联系起来。MViT包含几个不同分辨率和通道数的stage,从小通道的输入分辨率开始,逐层地扩大通道数以及降低分辨率,形成多尺度的特征金字塔。

  在视频识别任务上,不使用任何外部预训练数据,MViT比视频Transformer模型有显着的性能提升。而在ImageNet图像分类任务上,简单地删除一些时间相关的通道后,MViT比用于图像识别的单尺度ViT的显着增益。

Multiscale Vision Transformer (MViT)


  通用多尺度Transformer架构的核心在于多stage的设计,每个stage由多个具有特定分辨率和通道数的Transformer block组成。多尺度Transformers逐步扩大通道容量,同时逐步池化从输入到输出的分辨率。

Multi Head Pooling Attention

  多头池化注意(MHPA)是一种自注意操作,可以在Transformer block中实现分辨率灵活的建模,使得多尺度Transformer可在逐渐变化的分辨率下运行。与通道和分辨率固定的原始多头注意(MHA)操作相比,MHPA池化通过降低张量的分辨率来缩减输入的整体序列长度。

  对于序列长度为 L L L D D D 维输入张量 X X X X ∈ R L × D X \in \mathbb{R}^{L\times D} XRL×D,根据MHA的定义先通过线性运算将输入 X X X映射为Query张量 Q ^ ∈ R L × D \hat{Q} \in \mathbb{R}^{L\times D} Q^RL×DKey张量 K ^ ∈ R L × D \hat{K} \in \mathbb{R}^{L\times D} K^RL×DValue张量 V ^ ∈ R L × D \hat{V} \in \mathbb{R}^{L\times D} V^RL×D

  然后通过池化操作 P \mathcal{P} P将上述张量缩减到特定长度。

  • Pooling Operator

  在进行计算之前,中间张量 Q ^ \hat{Q} Q^ K ^ \hat{K} K^ V ^ \hat{V} V^需要经过池化运算 P ( ⋅ ; Θ ) \mathcal{P}(·; \Theta) P(⋅;Θ)的池化,这是的MHPAMViT的基石。

  运算符 P ( ⋅ ; Θ ) \mathcal{P}(·; \Theta) P(⋅;Θ)沿每个通道对输入张量执行池化核计算。将 Θ \Theta Θ分解为 Θ : = ( k , s , p ) \Theta := (k, s, p) Θ:=(k,s,p),运算符使用维度 k k k k T × k H × k W k_T\times k_H\times k_W kT×kH×kW、步幅 s s s s T × s H × s W s_T\times s_H \times s_W sT×sH×sW、填充 p p p p T × p H × p W p_T\times p_H\times p_W pT×pH×pW的池化核 k k k,将维度为 L = T × H × W L = T\times H\times W L=T×H×W的输入张量减少到 L ~ \tilde{L} L~

  通过坐标公式计算,将池化的张量展开得到输出KaTeX parse error: Got function '\tilde' with no arguments as superscript at position 39: …\in \mathbb{R}^\̲t̲i̲l̲d̲e̲{L}\times D,序列长度减少为 L ~ = T ~ × H ~ × W ~ \tilde{L}= \tilde{T}\times \tilde{H}\times \tilde{W} L~=T~×H~×W~

  默认情况下,MPHA的重叠内核 k k k会选择保持形状的填充值 p p p,因此输出张量 P ( Y ; Θ ) \mathcal{P}(Y ; \Theta) P(Y;Θ)的序列长度能够降低 L ~ \tilde{L} L~整体减少 s T s H s W s_{T}s_{H}s_{W} sTsHsW倍。

  • Pooling Attention.

  池化运算符 P ( ⋅ ; Θ ) \mathcal{P}(\cdot; \Theta) P(;Θ)在所有 Q ^ \hat{Q} Q^ K ^ \hat{K} K^ V ^ \hat{V} V^中间张量中是独立的,使用不同的池化核 k k k、不同的步长 s s s以及不同的填充 p p p。定义 θ \theta θ产生的池化后pre-attention向量为 Q = P ( Q ^ ; Θ Q ) Q = P(\hat{Q}; \Theta_Q) Q=P(Q^;ΘQ), K = P ( K ^ ; Θ K ) K = P(\hat{K}; \Theta_K) K=P(K^;ΘK) V = P ( V ^ ; Θ V ) V = P(\hat{V}; \Theta_V) V=P(V^;ΘV),随后在这些向量上进行注意力计算:

  根据矩阵乘积可知,上述公式会引入 S K = S V S_K=S_V SK=SV的约束。总体而言,池化注意力的完整计算如下:

d \sqrt{d} d 用于按行归一化内积矩阵。池化注意力计算的输出序列长度的缩减跟 P ( ⋅ ) \mathcal{P}(\cdot) P()中的 Q Q Q向量一样,为步长相关的 s T Q S H Q S W Q s^Q_TS^Q_HS^Q_W sTQSHQSWQ倍。

  • Multiple heads.

  与常规的注意力操作一样,MHPA可通过 h h h个头来并行化计算,将 D D D维输入张量 X X X的平均分成 h h h个非重叠子集,分别执行注意力计算。

  • Computational Analysis.

QKV张量的长度缩减对多尺度Transformer模型的基本计算和内存需求具有显着的好处,序列长度缩减可表示为:

  考虑到 P ( ⋅ ; Θ ) \mathcal{P}(·; \Theta) P(⋅;Θ)的输入张量具有通道 D × T × H × W D\times T\times H\times W D×T×H×WMHPA的每个头的运行时复杂度为 O ( T H W D / h ( D + T H W / f Q f K ) ) O(T HW D/h(D + T HW/f_Q f_K)) O(THWD/h(D+THW/fQfK))和内存复杂度为 O ( T H W h ( D / h + T H W / f Q f K ) ) O(T HW h(D/h + T HW/f_Q f_K)) O(THWh(D/h+THW/fQfK))

  另外,通过对通道数 D D D和序列长度项 T H W / f Q f K THW/f_Q f_K THW/fQfK之间的权衡,可指导架构参数的设计选择,例如头数和层宽。

Multiscale Transformer Networks

  • Preliminaries: Vision Transformer (ViT)

ViT T × H × W T\times H\times W T×H×W的输入切分成 1 × 16 × 16 1\times 16\times 16 1×16×16的不重叠小方块,通过point-wise的线性变换映射成 D D D维向量。

  随后将positional embedding E ∈ R L × D E\in \mathbb{R}^{L\times D} ERL×D添加到长度为 L L L、通道为 D D D的投影序列中,对位置信息进行编码以及打破平移不变性。最后,将可学习的class embedding附加到投影序列中。

  得到的长度为 L + 1 L + 1 L+1的序列由 N N NTransformer block依次处理,每个Transformer block都包含MHAMLPLN操作。定义 X X X视为输入,单个Transformer block的输出 B l o c k ( X ) Block(X) Block(X)的计算如下:

N N N个连续block处理后的结果序列会被层归一化,随后将class embedding提取并通过线性层预测所需的输出。默认情况下,MLP的隐藏层通道是 4 D 4D 4D。另外,需要注意的是,ViT在所有块中保持恒定的通道数和空间分辨率。

  • Multiscale Vision Transformers (MViT).

MViT的关键是逐步提高通道通道以及降低空间分辨率,整体结构如表2所示。

  • Scale stages

  每个scale stage包含 N N NTransformer blockstage内的block输出相同通道数和分辨率的特征。在网络输入处(表2中的cube1),通过三维映射将图像处理为通道数较小(比典型的ViT模型小8倍),但长度很长(比典型的ViT模型高16倍)图像块序列。

  在scale stage之间转移时,需要上采样处理序列的通道数以及下采样处理序列的长度。这样的做法能够有效地降低视觉数据的空间分辨率,使得网络能够在更复杂的特征中理解被处理的信息。

  • Channel expansion

  在stage转移时,通过增加最后一个MLP层的输出来增加通道数。通道数的增加与空间分辨率的缩减相关,假设空间分倍率下采样4倍,那通道数则增加2倍。这样的设计能够在一定程度上保持stage之间的计算复杂度,跟卷积网络的设计理念类似。

  • Query pooling

  由MPHA公式可知,Q张量可控制输出的序列长度,通过步长为 s ≡ ( s T Q , s H Q , s W Q ) s\equiv (s^Q_T, s^Q_H, s^Q_W) s(sTQ,sHQ,sWQ) P ( Q ; k ; p ; s ) \mathcal{P}(Q;k;p;s) P(Q;k;p;s)池化操作将序列长度缩减 s T Q ⋅ s H Q ⋅ s W Q s^Q_T\cdot s^Q_H\cdot s^Q_W sTQsHQsWQ倍。在每个stage中,仅需在开头中减少分辨率,剩余部分均保持分辨率,所以仅设置stage的首个MHPA操作的步长` S Q > 1 S^Q > 1 SQ>1,其余的约束为 s Q ≡ ( 1 , 1 , 1 ) s^Q\equiv (1,1,1) sQ(1,1,1)

  • Key-Value pooling

  与Q张量不同,改变KV张量的序列长度不会改变输出序列长度,但在降低池化操作的的整体计算复杂度中起着关键作用。

  因此,对KVQ池化的使用进行解耦,Q池化用于每个stage的第一层,KV池化用于剩余的层。由MPHA公式可知,KV张量的序列长度需要相同才能计算注意力权重,因此KV张量池化的步长需要相同。在默认设置中,约束同一stage的池化参数 ( k ; p ; s ) (k; p; s) (k;p;s)为相同,即 Θ K ≡ Θ V \Theta_K ≡ \Theta_V ΘKΘV,但可自适应地改变stage之间的s缩放参数。

  • Skip connections

  如图3所示,由于通道数和序列长度在residual block内发生变化,需要在skip connection中添加 P ( ⋅ ; Θ Q ) \mathcal{P}(\cdot; {\Theta}_{Q}) P(;ΘQ)池化来适应其两端之间的通道不匹配。

  同样地,为了处理stage之间的通道数不匹配,采用一个额外的线性层对MHPA操作的layer-normalized输出进行升维处理。

Network instantiation details

  表3展示了ViTMViT的基本模型的具体结构:

  • ViT-Base(表 3a):将输入映射成尺寸为 1 × 16 × 16 1\times 16\times 16 1×16×16且通道为 D = 768 D = 768 D=768的不重叠图像块,然后使用 N = 12 N = 12 N=12Transformer block进行处理。对于 8 × 224 × 224 8\times 224\times 224 8×224×224的输入,所有层的分辨率固定为 768 × 8 × 14 × 14 768\times 8\times 14\times 14 768×8×14×14,序列长度为 8 × 14 × 14 + 1 = 1569 8\times 14\times 14 + 1=1569 8×14×14+1=1569
  • MViT-Base(表 3b):由4个scale stage组成,每个stage都有几个输出尺寸一致的Transformer blockMViT-B通过形状为 3 × 7 × 7 3\times 7\times 7 3×7×7的立方体(类似卷积操作)将输入映射且通道为 D = 96 D = 96 D=96的重叠图像块序列,序列长度为 8 × 56 × 56 + 1 = 25089 8\times 56\times 56 + 1 = 25089 8×56×56+1=25089。该序列每经过一个stage,序列长度都会减少4倍,最终输出的序列长度为 8 × 7 × 7 + 1 = 393 8\times 7\times 7 + 1 = 393 8×7×7+1=393。同时,通道数也会被上采样2倍,最终增加到768。需要注意,所有池化操作以及分辨率下采样仅在数据序列上执行,不涉及class token embedding

  在scale1 stageMHPA的头数量设置为 h = 1 h = 1 h=1,随着通道数增加头数量(保持 D / h = 96 D/h=96 D/h=96)。在stage转移时,通过MLP前一stage的输出通道增加2倍,并且在下一stage开头对Q执行MHPA池化,其中 s Q = ( 1 , 2 , 2 ) s^{Q} = (1, 2, 2) sQ=(1,2,2)

  在MHPA block中使用 Θ K ≡ Θ V \Theta_K \equiv \Theta_V ΘKΘVKV池化,其中,scale1的步长为 s K = ( 1 , 8 , 8 ) s^{K}=(1,8,8) sK=(1,8,8)。步长随着stage的分辨率缩小而减少,使得KVblock间保持恒定的缩放比例。

Experiments


Video Recognition

  在五个视频识别数据集上的主要结果对比,MViT均有不错的性能提升。

Image Recognition


  在ImageNet上对比图像分类效果。

Conclusion


  论文提出了多尺度视觉Transformer模型MViT,将多尺度层级特征的基本概念与Transformer模型联系起来,在逐层扩展特征复杂度同时降低特征的分辨率。在视频识别和图像分类的任务中,MViT均优于单尺度的ViT



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值