【Paper Note】Video Swin Transformer

文章链接: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/2M/2M/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/2M/2M/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(QKT/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) (2P1,2M1,2M1),而原始Swin Transformer中的形状为 ( 2 M − 1 , 2 M − 1 ) (2M-1,2M-1) (2M1,2M1)。为了使相对位置编码的矩阵一样,作者将原来的 ( 2 M − 1 , 2 M − 1 ) (2M-1,2M-1) (2M1,2M1)相对位置编码矩阵复制了 2 P − 1 2P-1 2P1次。

总结

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

猜你喜欢

转载自blog.csdn.net/m0_51371693/article/details/130245670