Paperhttps://arxiv.org/abs/2103.15691
解决怎么把Transformer结构从Image迁移到Video上。对于Video数据,要满足时序和空间特征的计算,所以要改进Transformer结构。
图1:我们提出了一个用于视频分类的纯变换器架构,灵感来自最近成功的图像模型(Transformers for image recognition at scale. In ICLR, 2021)。为了有效地处理大量的时空令牌,我们开发了几个模型变量,这些模型变量在空间和时间维度上分解Transformer编码器的不同组件。如右图所示,这些factorisations分别对应于不同时间和空间的注意力模式。
方法
Overview of Vision Transformers (ViT)
ViT提取N个不重叠的图像块(patches),执行线性投影,然后将其展位1D tokens
。输入到以下Transformer编码器的令牌序列为
其中E的投影相当于2D卷积。
如图1所示,可选的学习分类令牌被预先添加到该序列中,并且其在编码器的最后一层的表示用作分类层使用的最终表示。此外,a learned positional embedding,
,被添加到tokens以保留位置信息,因为Transformer中的后续自注意操作是置换不变的。然后,令牌通过由L个Transformer层序列组成的编码器。每个层
都包括多头自注意,层归一化(LN)和MLP块,如下所示:
MLP由两个由GELU非线性分离的线性投影组成,并且令牌维度d在所有层中保持固定。最后,如果线性分类器被前置到输入,则基于对编码器的输入进行分类,否则使用所有令牌的全局平均池化
来对编码输入进行分类。
Embedding video clips
我们考虑将视频映射为一系列token序列
。然后,我们将位置embedding并reshape为
,即Transformer的输入z。
Uniform frame sampling(均匀帧采样):如图2所示,对输入视频进行令牌化的一种简单方法是从输入视频剪辑中均匀采样nt帧,使用与ViT相同的方法独立嵌入每个2D帧,并将所有这些令牌连接在一起。具体地说,如果从每个帧中提取nh · nw个不重叠的图像块,则总共将通过Transformer编码器处理nt·nh·nw个令牌。
Tubelet embedding:如图3所示,另一种方法是从输入体中提取不重叠的时空“管”,并将其线性投影到。该方法是ViT的embedding到3D的扩展,并且对应于3D卷积。对于维度为t × h ×w的tubelet,
,
,
,分别从时间、高度和宽度维度提取标记。因此,较小的tubelet尺寸导致更多的tokens,增加计算。直观地说,该方法在tokenisation标记化期间融合时空信息,这与“均匀帧采样”形成对比,在“均匀帧采样”中,来自不同帧的时间信息由Transformer融合。
Transformer Models for Video
如图1所示,我们提出了多个transformer-based架构。
模型1:Spatio-temporal attention(时空注意力):
该模型通过Transformer编码器简单地转发从视频z0提取的所有时空令牌。与CNN架构相比,其中感受野随层数线性增长,每个Transformer层对所有时空令牌之间的所有成对交互进行建模,因此它对来自第一层的视频中的长距离交互进行建模。然而,由于它对所有成对交互进行建模,因此多头自注意(MSA)具有关于令牌数量的二次复杂度。这种复杂性与视频相关,因为令牌的数量随着输入帧的数量线性增加,并且促使下一步开发更高效的架构。
模型2:Factorised encoder
如图4所示,该模型由两个独立的Transformer编码器组成。第一个是空间编码器,它只对从同一个时间索引中提取的标记之间的交互进行建模。在Ls层之后获得每个时间索引的表示hi ∈ Rd:(等式2)如果它被前置到输入,则为编码的分类令牌,$$z_{cls}^L$$,否则是来自空间编码器输出的令牌的全局平均池化。帧级表示hi被连接成H ∈
,然后通过由Lt个Transformer层组成的时间编码器处理,以对来自不同时间索引的令牌之间的交互进行建模。最后对这个编码器的输出标记进行分类。
图4:该模型由两个串联的Transformer编码器组成:第一个对从同一时间索引中提取的令牌之间的交互进行建模,以产生每个时间索引的潜在表示。第二个Transformer对时间步之间的交互进行建模。因此,它相当于空间和时间信息的“后期融合”。
尽管该模型比模型1具有更多的Transformer层(即更多的参数),但它需要更少的浮点运算(FLOP),复杂度更低。
模型3:Factorised self-attention
此模型包含与模型1相同数量的Transformer层。不是在第l层处对所有tokens对计算多头自注意力,而是将操作分解为首先仅在空间上(在从相同时间索引提取的所有标记之间)计算自注意,然后在时间上(在从相同空间索引提取的所有标记之间)计算自注意,如图5所示。
通过将z从reshape为
(用zs表示)来计算空间自我注意力。类似地,时间自我注意的输入zt被reshape为
。
我们观察到,模型参数按照先空间后时间或先时间后空间自我注意的顺序不会产生差异。然而,与模型1相比,参数的数量增加了,因为存在额外的自注意层。在这个模型中我们不使用分类标记,以避免在空间和时间维度之间重新整形输入标记时的歧义。
模型4:Factorised dot-product attention
具有与模型2和3相同的计算复杂度,同时保留了与未分解模型1相同的参数数量。空间维度和时间维度的因式分解在精神上与模型3相似,但我们将多头点积注意力操作进行因式分解(图6)。
计算注意力权重时为每个token分别在空间和时间维度使用不同的头。每个头的注意力操作定义为
在自注意中,查询Q = XW_q,键K = XW_k,值V = XW_v是输入X的线性投影,其中X,Q,K,V ∈ R^{N×d}。注意,在未因式分解的情况下(模型1),空间和时间维度合并为N = n_t · n_h · n_w。
对于一半的注意力头,计算Ys = Attention(Q,Ks,Vs)从空间维度关注令牌,对于其余的注意力头部,我们通过计算Yt = Attention(Q,Kt,Vt)关注时间维度。Ys,Yt ∈ RN × d。然后通过连接它们并使用线性投影,Y = Concat(Ys,Yt)WO来组合多个头的输出。
利用预训练模型进行初始化
ViT仅在大规模数据集上训练时才有效,因为transformers缺乏卷积网络的一些归纳偏差。然而,即使是最大的视频数据集,如Kinetics与其图像对应物相比也很少。因此,从零开始训练大型模型到高精度是非常具有挑战性的。为了避免这个问题,并实现更有效的训练,我们从预训练的图像模型初始化我们的视频模型。然而,这提出了几个实际问题,特别是关于如何初始化不存在或与图像模型不兼容的参数。
Positional embeddings:位置嵌入p被添加到每个输入令牌,然而,视频模型比预训练的图像模型具有nt倍多的标记。因此,我们通过在时间上从到
“重复”位置嵌入来初始化位置嵌入。因此,在初始化时,具有相同空间索引的所有令牌具有相同的嵌入,然后对该嵌入进行微调。
Embedding weights, E:当使用“tubelet embedding”标记化方法时,E是3D张量。用于从用于视频分类的2D滤波器初始化3D卷积滤波器的常见方法是通过沿时间维度复制滤波器并取平均,
我们考虑一种额外的策略,我们将其表示为“中心帧初始化”,其中E沿着沿着所有时间位置初始化为零,除了在中心处,
因此,3D卷积滤波器有效地表现得像“均匀帧采样”,在初始化时,同时还使模型能够随着训练的进行学习从多个帧聚合时间信息。
Transformer weights for Model 3:模型3中的Transformer块与预训练的ViT模型不同,因为它包含两个多头自我注意(MSA)模块。在这种情况下,我们从预训练的模块初始化空间MSA模块,并将时间MSA的所有权重初始化为零,使得等式5在初始化时表现为残差连接。