Abstract
时域建模在视频动作识别任务中,对于时空结构的获取非常重要。由于各种因素,如相机移动、速度差异,视频数据在时间维度上非常复杂。为了有效获取这些运动的模式,本文提出了一个新的时域自适应模块(TAM),基于特征图产生具体视频的卷积核。TAM提出了一个独特的双层级自适应建模机制,将动态的卷积核解耦为一个位置不敏感重要程度图,和一个位置不变聚合权重。重要程度图是在一个局部时域窗口内学习的,获取短时间内的信息,而聚合权重是从全局的角度生成的,关注在长时间的结构上。TAM 可以用在2D CNN中,得到一个非常强的视频网络结构(TANet),增加了一点点的计算成本。有了自适应建模策略,在Kinetics-400上进行的实验表明,TAM超越了其它的时域建模方法。在Something-Something 数据集上,TANet 与其它方法相比,取得了不错的性能表现。代码很快就会放在https://github.com/liu-zhy/TANet。
1. Introduction
深度学习在许多识别任务上(如图像分类、目标检测、实例分割)取得了巨大的进展。取得这些成功的关键是,设计出灵活而有效的网络结构,能从大规模数据集中学到强劲的视觉特征。但是,在视频理解任务上,深度学习的研究相对滞后,部分原因是视频数据的复杂度很高。视频理解的核心技术问题就是,设计出有效的时域模块,能够获取复杂的时域结构并具有高度的灵活性,但是计算量也要比较低,高效地处理高维度视频数据。
图1:时域模块对比:标准的时域卷积在各视频间共享权重,对于各类视频的差异,它缺乏灵活性。时域注意力则对那些具有判别力的特征以自适应的方式来赋予较高的重要度,学习位置敏感权重,但可能会忽略掉长时间依赖。本文的时域自适应模块TAM提出了一个双层级机制,为了自适应地增强位置信息,它学习了一个局部重要度权重;为了自适应地聚合视频信息,它学习了一个全局重要度权重。其中 ⊙ \odot ⊙代表注意力操作, ⊗ \otimes ⊗代表卷积操作。
3D卷积网络是视频建模模型里的主流方法。3D卷积是在2D卷积的基础上扩展而来,给视频识别提供了一个可学习的算子。但是该扩展比较简单,缺乏对视频数据时域属性的考虑,可能导致算力消耗过高。因此最近的一些方法则试图从两个不同的方面来改进3D CNN,在2D CNN基础上加上一个轻量的时域模块来提升效率,如TSN和TSM,或是设计一个时域模块来更好地获取时域关系,如Nonlocal Net和ARTNet与STM。但是在视频识别任务上,如何设计一个高效率、灵活的时域模块仍然是一个有待解决的问题。因此,本文就是在这个方向上努力,改进当前的视频模型结构。
本文中,作者试图以一种更加灵活的方式设计一个自适应模块来获取时域信息。通常因为可能发生的相机运动和变化速率等,我们会发现视频数据在时域维度上是非常复杂的。因而只通过固定数量的video invariant 卷积核,3D卷积(时域卷积)可能缺乏足够的特征表示能力去描述运动的多样性。为了解决这些复杂的时域变化,作者认为要想描述清楚视频中动作的模式,自适应的时域卷积核是非常有效而必须的。至此,如图1所示,作者提出了一个双层级的自适应建模机制,将视频具体的时域卷积核解耦为一个位置敏感重要度图和一个位置不变聚合卷积核。这项独特的设计使得位置敏感重要度图可以从一个局部的视角,关注于如何增强具有判别力的时域信息;从一个全局的视角使得位置不变聚合权重可以获取输入视频序列中时域的关系。
该TAM设计严格地遵循了2个原则:高效率与极强的灵活性。为了确保TAM的计算成本比较低,作者首先利用全局空间池化对特征图进行压缩,然后以逐通道的方式来构建TAM,确保效率。TAM由两个分支构成:一个局部分支 L L L和一个全局分支 g g g。如图2所示,TAM的实现效率很高。局部分支使用了时域卷积算子,产生一个位置敏感重要度图,进而产生具有判别力的特征,而全局分支则使用时域全连接层来产生位置不变的聚合权重。局部时域窗口产生的重要度图关注于对短期运动进行建模,全局视角产生的聚合权重则关注在长期的时域信息。而且,TAM可以很灵活地加在现有的2D CNN中,进而得到一个非常高效的视频识别模型,称作 TANet。
作者是动作分类视频数据集上测试了TANet。特别地,作者首先在 Kinetics-400数据集上研究了TANet的性能表现,证明了TANet要比其它的方法能更好地捕捉时域信息,如 temporal pooling, temporal convolution, TSM和Non-local block。TANet的准确率非常高,而其FLOPs接近于2D CNN。在Something-Something 数据集上,作者也测试了TANet,实现了 state of the art 的性能。
2. Related Work
视频理解是计算机视觉领域的一个核心课题。在早期阶段,人们设计了各种传统方法的人工特征来对视频数据进行编码。在这些方法中,iDT 使用密集轨迹特征,取得了很好的表现。不幸的是,这些人工方法非常不灵活,很难迁移到其它的视频任务上。最近视频理解受益于深度学习方法,取得了突飞猛进。尤其是在视频识别任务上,人们提出了一系列的关注在时空特征表示上深度学习方法,通常可以分为两类:
1). 2D CNN方法和 2). 3D CNN方法。此外,本文也涉及到了CNN的注意力机制。
动作识别的2D CNN方法。因为深度学习方法被广泛使用在静态图片上,人们就提出了一些方法,尝试将基于2D CNN的方法用于视频建模。由于原始的2D 卷积无法处理时域关系,Two-stream方法利用动作特征中的光流信息来学习时域特征。TSN 从整个视频中进行稀疏的帧采样,学习视频的长期关系,在第一个全连接层后将得分聚合起来。TSM 以非常高效的方式,沿着时域维度将通道进行 shift,基于2D CNN也取得了不错的性能提升。与前面所有方法不同,本文的基于2D CNN的方法试图使用一个双层级自适应的建模机制,将视频具体的卷积核解耦为一个位置敏感激活图和一个位置不变聚合权重。由于提取光流信息过于昂贵,TANet在实验中只用了RGB值作为输入数据。
用于动作识别的3D CNN 方法。从空间域扩展到时空域,人们提出了3D卷积来获取视频片段中的动作信息。因为大规模数据集Kinetics的提出,3D CNN在动作识别中被广泛使用。它的各种变体将3D卷积解耦为一个空间2D卷积和一个时域的1D卷积,进而学习时空特征。ARTNet和SlowFast则设计了一个双路径的网络,学习时空特征。与P3D或 R ( 2 + 1 ) D R(2+1)D R(2+1)D不同,本文在时域维度内,使用视频具体聚合卷积核来进行逐通道的1D卷积,每个视频片段都有它独一的卷积核。
注意力机制。TAM的局部分支主要与SENet相关。但是SENet对特征图的每个通道都学习一个可调节的权重,在图像识别任务上进行特征的再调整。STC模块旨在学习动作识别任务中的时空通道关系。与这些方法不同,本文的局部分支将空间特征进行压缩,但是保留了时域信息,学习位置敏感重要度图。Non-local 网络有一个non-local均值,可以看作为一个自注意力单元,学习长期的关系。TANet 简单地将多个TAM堆叠起来,学习长期的关系,保证主干网络的效率。
3. Method
这一章中,作者首先详细介绍了TAM模块,然后介绍了TANet进行视频识别的示例。
3.1 时域自适应模块的概述
如第一章中所述,视频数据在时域范围内极其复杂,主要因素有相机运动和速率变化等。因而,作者通过引入时域自适应模块TAM来解决这个问题,它有着特殊的卷积核,这与3D CNN中的共享的卷积核不同。TAM以一个灵活而高效的方式,基于视频的特征,产生一个动态的时域卷积核,因此就能根据动作的内容而自适应地聚合时域信息。TAM可以很容易地加到2D CNN(如ResNet)中去,产生一个视频网络模型,如图2所示。
形式上,用 X ∈ R C × T × H × W X\in \mathbb{R}^{C\times T\times H\times W} X∈RC×T×H×W表示特征图,其中 C C C是通道的数量, T , H , W T,H,W T,H,W表示时空的维度。为了推理更高效,TAM只关注在时域建模上,空间的模式可以通过2D卷积获取。所以,作者首先使用一个全局空间平均池化操作来压缩特征图:
X ^ c , t = ϕ ( X ) c , t = 1 H × W ∑ i , j X c , t , j , i \hat{X}_{c,t} = \phi(X)_{c,t} = \frac{1}{H\times W}\sum_{i,j}X_{c,t,j,i} X^c,t=ϕ(X)c,t=H×W1i,j∑Xc,t,j,i
其中 c , t , j , i c,t,j,i c,t,j,i是各个维度的索引(通道、时间、高度、宽度), X ^ ∈ R C × T \hat{X}\in \mathbb{R}^{C\times T} X^∈RC×T将 X X X空间信息聚合起来。出于简洁性考虑,作者使用 ϕ \phi ϕ表示聚合空间信息的函数。为了实现高效率,作者在这个压缩后的1D时域卷积基础上构建了该时域自适应模块。
TAM由两个分支构成:局部分支和全局分支,旨在学习一个位置敏感重要度图来增强具有判别力的特征,然后以卷积的方式输出位置不变的权重来聚合时域信息。更具体点,TAM的公式如下:
Y = g ( X ^ ) ⊗ ( L ( X ^ ) ⊙ X ) Y = g(\hat X) \otimes (L(\hat X) \odot X) Y=g(X^)⊗(L(X^)⊙X)
其中 ⊗ \otimes ⊗表示卷积操作, ⊙ \odot ⊙表示逐元素的相乘。 g g g表示全局分支, L L L表示局部分支。这两个分支都在压缩特征图 X ^ \hat X X^上操作, g g g和 L L L的输出大小是 K × C K\times C K×C和 T × C × H × W T\times C\times H\times W T×C×H×W。注意,这两个分支都关注在时域信息的不同方面上,其中局部分支使用时域卷积操作,试图获取短期信息中的重要特征;而全局分支则融入了长期时域结构,利用全连接层来自适应地完成聚合。在实验中,作者证明了将卷积核学习过程拆分为局部和全局分支,是一个非常有效的方式。
3.2 TAM的局部分支
如上所述,局部分支目的是利用短期时域信息,帮助输出视频具体的卷积核。作者观察发现,这些短期信息在时域维度上不断变化,我们就需要学习一个位置敏感重要度图来获取局部时域结构。
如图2所示,作者用一组时域卷积层和ReLU非线性运算构建了TAM的局部分支:
V = L ( X ^ ) = Sigmoid ( Conv1D ( δ ( Conv1D ( X ^ , K , C β ) , 1 , C ) ) ) V = L(\hat X) = \text{Sigmoid}( \text{Conv1D}(\delta ( \text{Conv1D}(\hat X, K, \frac{C}{\beta}), 1, C))) V=L(X^)=Sigmoid(Conv1D(δ(Conv1D(X^,K,βC),1,C)))
其中 V V V是学到的重要度图, C C C是输入张量的通道个数, δ \delta δ是ReLU函数。Conv1D是一个时域卷积,它的参数包含一个输入张量、卷积核大小、输出通道个数。局部分支的目的是获取短期信息,作者将卷积核大小 K K K设为3,只基于局部时域窗口来学习重要度图。为了控制模型的复杂度,第一个Conv1D后面跟着一个BN,将通道的数量从 C C C降低为 C β \frac{C}{\beta} βC。然后,第二个Conv1D和sigmoid激活函数则输出重要度权重 V ∈ R C × T V\in \mathbb{R}^{C\times T} V∈RC×T。为了匹配 X X X的大小,作者通过复制空间的维度,将 V V V重新缩放为 V ^ ∈ R C × T × H × W \hat V\in \mathbb{R}^{C\times T\times H\times W} V^∈RC×T×H×W:
V ^ c , t , j , i = V c , t \hat V_{c,t,j,i} = V_{c,t} V^c,t,j,i=Vc,t
其中 c , t , j , i c,t,j,i c,t,j,i是通道、时间、高度、宽度各维度的索引。最终,时域激活可以表示为:
Z = V ^ ⊙ X = L ( X ^ ) ⊗ X Z=\hat V \odot X = L(\hat X)\otimes X Z=V^⊙X=L(X^)⊗X
其中, Z ∈ R C × T × H × W Z\in \mathbb{R}^{C\times T\times H\times W} Z∈RC×T×H×W 是激活特征图, ⊙ \odot ⊙表示逐元素的相乘。
3.3 TAM的全局分支
对于TAM的全局分支,作者关注在基于长期的时域信息,如何产生一个自适应的卷积核。它在TAM中加入了全局信息,为聚合操作学习位置共享权重。我们需要一个全局视角来产生视频具体的卷积核。
学习自适应卷积核。在全局分支中,作者为每个视频片段都产生一个动态的卷积核,以卷积的方式将时域信息聚合起来。为了简化动态卷积核的聚合过程,保证其高效率,作者提出以逐通道的方式学习自适应卷积核。作者希望该自适应卷积核只考虑了时域关系建模,而不将通道关系纳入考虑范畴。因而,该TAM不会改变输入特征的通道个数,然后以逐通道的方式,学到的自适应卷积核会与输入特征图做卷积操作。对于第 c c c个通道,所学到的自适应卷积核表示如下:
Θ c = g ( X ^ ) c = softmax ( F ( W 2 , σ ( F ( W 1 , X ^ c ) ) ) ) \Theta_c = g(\hat X)_c = \text{softmax}(F(W_2, \sigma(F(W_1, \hat X_c)))) Θc=g(X^)c=softmax(F(W2,σ(F(W1,X^c))))
其中, Θ c ∈ R K \Theta_c\in \mathbb{R}^K Θc∈RK是第 c c c个通道的自适应卷积核(聚合权重), K K K是自适应卷积核的大小, δ \delta δ是ReLU激活函数。与局部分支的重要度图相似,自适应卷积核也是基于压缩特征图 X ^ c ∈ R T \hat X_c \in \mathbb{R}^T X^c∈RT 学到的,出于模型效率考量,没有考虑空间结构信息。与局部分支不同,作者利用长期信息,使用全连接层 F F F来学习自适应卷积核。作为局部分支上重要度图的补充,作者希望自适应卷积核可以具有全局感受野,这样就能根据全局上下文信息来聚合时域特征。为了增强全局分支的建模能力,作者堆叠了两个全连接层,用softmax函数对学到的卷积核做归一化,从而产生一个正的聚合权重。聚合权重 Θ = Θ 1 , Θ 2 , . . . , Θ C \Theta = {\Theta_1, \Theta_2, ..., \Theta_C} Θ=Θ1,Θ2,...,ΘC 会以卷积的方式使用,获取特征在时域范围内的影响。
时域自适应聚合
在引入这两个分支结构后,我们就需要将时域信息和自适应卷积核聚合起来了。如等式3所述,位置敏感重要度图 V V V是特征激活,位置共享聚合权重 Θ \Theta Θ则是时域卷积:
Y c , t , j , i = g ( X ^ ) ⊗ Z = Θ ⊗ Z = ∑ k Θ c , k ⋅ Z c , t + k , j , i Y_{c,t,j,i} = g(\hat X) \otimes Z = \Theta \otimes Z = \sum_k \Theta_{c,k} \cdot Z_{c,t+k,j,i} Yc,t,j,i=g(X^)⊗Z=Θ⊗Z=k∑Θc,k⋅Zc,t+k,j,i
其中 ⋅ \cdot ⋅表示标量相乘, Y ∈ R C × T × H × W Y\in \mathbb{R}^{C\times T\times H\times W} Y∈RC×T×H×W是时域卷积后的特征图, Z Z Z是局部分支的输出。
总之,TAM是一个自适应模块加一个特殊的双步骤聚合机制,其中局部激活和全局聚合都是从当前的特征图上来的,但是关注在捕捉不同的时域结构上(即短期和长期时域结构)。如实验中所说的,TAM是一个非常高效而有用的时域自适应机制。
3.4 示例:TANet
这里作者介绍了如何实例化TANet。时域自适应模块作为一个创新的时域建模方法,使得现有的2D CNN可以去对视频片段中不同的时域结构进行强有力的建模。实际操作中,TAM只会带来少量的算力开支,但在不同类型的数据集上,会明显地提升模型的表现。
作者用 ResNet 作为主干网络来验证TAM的有效性。如图2所示,在第一个Conv2D后,TAM嵌入在 ResNet-Block 中,很容易就将原来的 ResNet-Block转换为 TA-Block。这个方式不会过分地改变网络的拓扑结构,能够重复利用ResNet-Block的权重。假设我们从一个视频片段中采样了 T T T帧,在全连接层后,这 T T T帧的分数会通过平均池化操作聚合起来,得到clip-level的分数。在全连接层之前,不会有时域下采样操作。事实上,该方法对于TA-Blocks的个数和插入的位置没有限制。这些点会在后面进行详细介绍。这些方法充分展现了TANet的灵活性和效率。在4.2节中,作者进行了大量的试验,证明TANet的效率。
4. Experiments
Pls read paper for more details.