【Paper Note】Video Swin Transformer

  • Post author:
  • Post category:其他


文章链接:

https://arxiv.org/abs/2106.13230

代码链接:

https://github.com/SwinTransformer/Video-Swin-Transformer



介绍

本文提出的Video Swin Transformer,严格遵循原始Swin Transformer的层次结构,但将局部注意力计算的范围从空间域扩展到时空域。由于局部注意力是在非重叠窗口上计算的,因此原始Swin Transformer的滑动窗口机制也被重新定义了,以适应时间和空间两个域的信息。


在时空距离上更接近的像素更有可能相关

,作者在网络结构中利用了这个假设偏置,所以达到了更高的建模效率。



架构

在这里插入图片描述

Video Swin Transformer的总体结构如上图所示。输入的视频数据为



T

×

H

×

W

×

3

T×H×W×3






T




×








H




×








W




×








3






的张量,由T帧的



H

×

W

×

3

H×W×3






H




×








W




×








3





的图片组成。在Video Swin Transformer中,作者用的3D patch的大小为$ 2×4×4×3$,因此就可以得到



T

/

2

×

H

/

4

×

W

/

4

×

3

T/2×H/4×W/4×3






T


/2




×








H


/4




×








W


/4




×








3





个 3D Patch,然后用线性embedding层将特征映射到维度为C的token embedding。

为了能够严格遵循Swin Transformer的层次结构,作者在时间维度上没有进行降采样,每个stage只在空间维度上进行了



2

×

2

2×2






2




×








2





的降采样。Patch合并层连接每组2×2个空间相邻patch的特征,并应用一个线性层将连接的特征投影到原来通道尺寸的一半。例如,第二阶段中的线性层将每个通道维度为4C的token映射为2C。

该体系结构的主要组件是 Video Swin Transformer block,这个模块就是

将Transformer中 multi-head self-attention (MSA)替换成了基于3D滑动窗口的MSA模块

。具体地说,一个

Video Transformer block

由一个基于

3D滑动窗口的MSA模块和一个前馈网络(FFN)

组成,其中

FFN由两层的MLP和激活函数GELU组成



Layer Normalization(LN)被用在每个MSA和FFN模块之前,残差连接被用在了每个模块之后



3.2 3D Shifted Window based MSA Module

与图像相比,视频需要更多的输入token来表示它们,因为视频另外有一个时间维度。因此,一个全局的自注意模块将不适合视频任务,因为这将导致巨大的计算和内存成本。在这里,作者遵循Swin Transformer的方法,在自注意模块中引入了一个局部感应偏置。



3.2.1 在不重叠的三维窗口上的MSA

在每个不重叠的二维窗口上的MSA机制已被证明对图像识别是有效并且高效的。在这里,作者直接扩展了这种设计到处理视频输入中。给定一个由



T

×

H

×

W

T’×H’×W’






T







×









H
























×









W

























个3D token组成的视频,3D窗口大小为



P

×

M

×

M

P×M×M






P




×








M




×








M





,这些窗口以不重叠的方式均匀地分割视频输入。这些token被分成了多个不重叠的3D窗口。

在这里插入图片描述

如上图(中)所示,对于输入大小为8×8×8的token和窗口大小为4×4×4,第

层中的窗口数将为2×2×2=8。



3.2.2 3D Shifted Windows

由于在每个不重叠的三维窗口中都应用了多头自注意机制,因此缺乏跨不同窗口的关系建模,这可能会限制特征的表示能力。因此,作者将Swin Transformer的移位二维窗口(shifted 2D window)机制扩展到3D窗口,以引入跨窗口连接,同时保持基于非重叠自注意的高效窗口计算。

对于Self-Attention模块的第一层,就如上面所示采用均匀分块的方式。对于第二层,窗口分区配置沿着来自上一层自注意模块的时间、高度和宽度方向分别移动



P

/

2

M

/

2

M

/

2

P/2、M/2、M/2






P


/2





M


/2





M


/2





个token的距离。

在这里插入图片描述

如上图(右)所示,输入大小为8×8×8,窗口大小为4×4×4。由于l层采用常规的窗口划分,l层中的窗口数为2×2×2=8。对于第l+1

层,当窗口会在三个方向上分别移动



P

/

2

M

/

2

M

/

2

=

2

,

2

,

2

(P/2,M/2,M/2) = (2,2,2)









P


/2





M


/2





M


/2







=











2


,




2


,




2








个token的距离,因此窗口数量为3×3×3=27。

采用滑动窗口划分的方法,两个连续的Video Swin Transformer块计算如下所示:

在这里插入图片描述

在这里插入图片描述



3.2.3. 3D Relative Position Bias

先前的工作已经表明,在

自注意计算中包含相对位置编码

对于performance的提升是有用的。因此作者在Video Swin Transformer也引入了3D相对位置编码,计算方式如下:





Attention

(

Q

,

K

,

V

)

=

SoftMax

(

Q

K

T

/

d

+

B

)

V

\text{Attention}(Q,K,V)=\text{SoftMax}(QK^T/\sqrt{d}+B)V







Attention



(


Q


,




K


,




V


)




=









SoftMax



(


Q



K










T









/










d


























+








B


)


V







3.3 Architecture Variants

基于上面的设计,作者提出了下面四种不同参数量和计算量的网络结构:

在这里插入图片描述



3.4 Initialization from Pre-trained Model

由于Video Swin Transformer改编于Swin Transformer,因此Video Swin Transformer可以用在大型图像数据集上预训练的模型参数进行初始化。与Swin Transformer相比,Video Swin Transformer中只有两个模块具有不同的形状,分别为:线性embedding层和相对位置编码。

输入token在时间维度上变成了2,因此线性embedding层的形状从Swin Transformer的48×C变为96×C。在这里,作者直接复制预训练过的模型中的参数两次,然后将整个矩阵乘以0.5,以保持输出的均值和方差不变。

相对位置编码矩阵的形状为



(

2

P

1

,

2

M

1

,

2

M

1

)

(2P-1,2M-1,2M-1)






(


2


P













1


,




2


M













1


,




2


M













1


)





,而原始Swin Transformer中的形状为



(

2

M

1

,

2

M

1

)

(2M-1,2M-1)






(


2


M













1


,




2


M













1


)





。为了使相对位置编码的矩阵一样,作者将原来的



(

2

M

1

,

2

M

1

)

(2M-1,2M-1)






(


2


M













1


,




2


M













1


)





相对位置编码矩阵复制了



2

P

1

2P-1






2


P













1





次。



总结

在本文中,作者提出了一种基于时空局部感应偏置的视频识别纯Transformer的结构。该模型从用于图像识别的Swin Transformer改变而来,因此它可以利用预训练的Swin Transformer模型进行参数的初始化。该方法在三个广泛使用的视频基准数据集上(Kinetics-400, Kinetics-600, Something-Something v2)测试,并且实现了SOTA的性能,



版权声明:本文为m0_51371693原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。