文章来源 | 恒源云社区
原文地址 | 可变形视频Transformer
原文作者 |
hi,大家好!窗外的树。 绿色,楼下桃花 春天就这样过去了。……
啊啊啊啊啊,我的春游完全没有希望了! 说这么多有什么用?你不必顺从地处理社区文章!毕竟,社区合作伙伴发帖太勤奋了!Respect!
正文开始
摘要
- 主题介绍:视频分类领域Transformer最近作为卷积网络的有效替代品出现。
- 现存问题:大多数以前的视频Transformer使用手动定义的策略来比较帧内和帧间patch。这些固定注意力计划不仅计算成本高,而且通过比较预定位置patch,视频中忽略了运动力学。
- 解决方案:本文介绍了可变形视频Transformer(DVT),根据运动信息动态预测每个查询位置的一小部分视频Patch,允许模型根据帧间的对应关系确定视频中查看的位置。关键是,这些基于运动的对应关系是从以压缩格式存储的视频信息中以零成本获得的。
- 实验结果:四个大型视频基准(Kinetics-400、Something-Something-V2、EPIC-KITCHENS和Diving-48)实验表明,论文模型在相同或更低的计算成本下实现了更高的精度,并在这四个数据集中获得了最佳结果。
算法
视频TRANSFORMER
视频数据的输入一般可以表示为 X ∈ R H × W × 3 × T X\in R^{H×W×3×T} X∈RH×W×3×T ,T表示帧数,3表示每帧是RGB图像
因为使用的是Transformer因此,首先需要将输入数据转换为一个架构 S ? T S \cdot T S?T tokens,S在每一帧中表示patch个数,每个token可以表示为 x s t ∈ R D x_s^t \in R^D xst∈RD 。整个过程可以表示如下:
- 将每一帧图像进行非重叠分割,生成S个patch。
- 将每个patch投影到D个通道维度上。
- 添加空间位置编码 e s e_s es和时间编码 e t e^t et
最终得到 z s t = x s t + e s + e t z_s^t = x_s^t + e_s + e^t zst=xst+es+et
然后通过多头自注意力,layer norm(LN)和MLP计算,可以表示如下: 其中具体的自注意力可以表示如下(使用单头进行简化说明)
根据以往的视频Transformer算法,自注意力机制可以分为Global space-time attention和Divided space-time attention
简单来说就是将时空联合起来进行注意力计算,公式如下:
其中注意力权重计算公式如下:
整个计算过程的计算复杂度为 ( S 2 T 2 ) (S^2T^2) (S2T2),最大的问题就是计算量很大。
顾名思义,就是将时间和空间的注意力进行分开计算,用来减少计算量
空间注意力计算公式如下: 计算复杂度为 O ( S 2 T ) O(S^2T) O(S2T)对应的时间注意力计算公式如下:
计算复杂度为 O ( S T 2 ) O(ST^2) O(ST2) 需要注意的是,时间注意力只对不同时间帧上的同一个空间位置进行注意力计算!这就是其最大的问题,因为其没有考虑到不同帧之间目标的运动。
可变形视频TRANSFORMER
主要分为以下三个部分(创新点)
这个注意力机制和上文Divided space-time attention中的时间注意力机制很相似,但是有两个主要不同点:
- 对于每个查询 q s t q_s^t qst ,使用不同帧上的N个空间位置 s ( n ) ∣ n = 1 , … s(n)|n=1,… s(n)∣n=1,…进行相似度计算,而不是一个固定位置,这虽然带来相对较大的计算量,但会获取更大空间上的特征信息,性能会提高很多。文中使用N=8。
- 这N个位置是数据驱动的,而不是人为定义的,这在后面进行细说。
该注意力机制的数学表达式如下:
其中每一帧上的N个空间位置是如何计算的呢?
——是根据查询点特征和运动嵌入特征经过投影生成的相对偏置计算的,公式如下:
其中运动嵌入 m s t , t ′ m_s^{t, t^\prime} mst,t′是根据存储在压缩视频中的运动位移和RGB residuals确定的,详细步骤可以查看论文。
其中的相似度矩阵 α s t , t ′ ∈ R N {\boldsymbol{\alpha}}_{s}^{t, t^{\prime}} \in R^N αst,t′∈RN与之前的计算方式不同,而是根据查询点特征和运动嵌入特征计算而来的,公式如下:
上述D-ST-A是一个时间上的注意力机制,而D-MS-A是一个空间上的注意力机制,用于编码同一帧上的注意力。
但对于每一帧图像,这里引入了多尺度注意力——计算F个不同分辨率下的空间信息,不同分辨率图像中采样 N ′ N^\prime N′个patch进行注意力计算,多分辨率可以通过不同步长的3D卷积层来实现,数学表达式如下:
其中不同分辨率图像中的patch采样也是通过根据其中对应查询点特征计算偏置得到的,计算公式如下:
可以仅使用可变形时空注意(D-ST-A)、仅使用可变形多尺度注意(D-MS-A)以及两者的组合(D-ST+MS-A)。
在最后一种情况下,将由这两种注意策略独立计算出的两个token z s S T t z_s^{ST^t} zsSTt和 z s M S t z_s^{MS^t} zsMSt馈送到一个注意力融合层u()进行信息融合, Z s t = u ( Z s S T t , Z s M S t ) \mathbf{Z}_{s}^{t}=u\left(\mathbf{Z}_s^{S T^{t}}, \mathbf{Z}_s^{M S^{t}}\right) Zst=u(ZsSTt,ZsMSt)。
论文给出了两种形式的注意力融合方式,一种基于简单的线性投影,另一种基于MLP-Mixer模型。
实验
在四个标准视频分类基准上评估DVT:Kinetics-400(K400)、Something-Something-V2(SSv2)、EPIC-KITCHENS-100(EK100)和Diving-48(D48)
消融实验