原文链接: https://openaccess.thecvf.com/content_ECCV_2018/html/Bolei_Zhou_Temporal_Relational_Reasoning_ECCV_2018_paper.html
简介
TRN方法旨在学习和推理视频帧之间在多尺度上的时间段(temporal)独立性,进而理解视频时间片段之间的关系,最终得到理解视频语义的目的。
动作识别是计算机视觉领域核心课题之一,视频片段间的关系对于动作识别至关重要。动作识别的难点在于选择合适的时间尺度来描述动作,而此前许多技术都是使用静态帧和光流法等来实现动作识别。TRN是一个即插即用型的模块,可以用于任何CNN网络,作者构建基于TRN的模型,在三个动作识别数据集(Something-Something, Jester, and Charades)上进行了测试,都取得了很好的结果。
相关工作
CNN用于动作识别的工作:
- 基于RGB图像帧的模型
- 双流法,基于RGB图像和光流图
- 3D卷积网络,使用3D卷积核提取视频信息
- TSN方法(前一篇文章),基于双流法,采用分割时间段的方法提取视频长程信息
- CNN+LSTM模型
- I3D网络,结合3D卷积和双流法,在Kinetics数据集上取得了sota
现有CNN方法存在两方面不足:
- 需要获取光流图,降低了效率
- 3D卷积的输入是稠密的帧,计算复杂度高
- 难以获取更长程的信息
鉴于以上原因,TRN使用稀疏帧输入,推理帧之间的因果关系。
动作识别数据集:
当前的动作识别数据集大多通过“大众外包”获得。包括本文使用的Something-Something, Jester, and Charades三个数据集。
TRN模型
定义时间关系
输入是视频V,其中包括n个选中的有序帧,即:V = {
f
1
,
f
2
,
.
.
.
,
f
n
f_1, f_2, ..., f_n
f1,f2,...,fn}, 其中的
f
i
f_i
fi是视频第i帧的表示,例如:某个CNN网络的输出。
h
ϕ
h_{\phi}
hϕ和
g
θ
g_{\theta}
gθ函数融合不同帧的特征,这里是使用简单的MLP。帧的采样采用均匀采样,简化计算。
可从两帧拓展到三帧:
多尺度时间关系
每个
T
d
T_d
Td所有独立的
h
ϕ
h_{\phi}
hϕ和
g
θ
g_{\theta}
gθ,其中对于每个
T
i
T_i
Ti,其都是可微的。
高效训练和测试
对于d<N的情况,如果每个d片段都采样的话,数据量和计算量会非常大,为了减少计算量,本文采取了如下采样步骤:
- 首先从视频中均匀选出N个帧, V N ∗ ⊃ V V_N^* \supset V VN∗⊃V,然后使用 V N ∗ V_N^* VN∗来计算 T N ( V ) T_N(V) TN(V);
- 对于每个d<N, 随机选择k个长度为d的子集,
V
k
d
∗
⊃
V
N
∗
V_{kd}^* \supset V_N^*
Vkd∗⊃VN∗,这些数据被用于计算
T
d
(
V
)
T_d(V)
Td(V)
测试阶段,将带TRN的网络与队列结合,来处理视频流。队列用于缓存从视频流中等距取样得到的CNN特征,之后这些特征被进一步组合到不同的关系组(即 T i T_i Ti)中。由于每个CNN特征在视频流中只需要提取一次,因ICTRN网络很容易应用于实时视频处理。
实验
数据集:
网络结构和训练
采用在ImageNet上预训练的BN-Inception网络作为基础框架,保持TRN模块的结构和超参数在三个数据集中都相同,设置k=3(是每个关系中的采样次数)。 g ϕ g_\phi gϕ函数是一个双层MLP,每层256节点。 h θ h_\theta hθ是单层MLP,节点数和每个数据集的类别数相同。CNN特征取自BN-Inception网络的倒数第二层。TRN模块的分组从2帧到8帧,更高的帧数意味着性能的边际改善和效率的降低。
结果
S-S数据集
Jester数据集
Charades数据集:
例子:
TRN中视觉常识性知识的解释
TRN相对于其他视频分类模型更具可解释性。以下从四个方面来探究。
(1)代表性帧
(2)时间段对齐
(3)时间片段顺序对于动作识别的重要性
(4)早期动作识别
总结
本文构建的TRN模型,只需要离散的视频帧这一输入数据,就可以得出有效的视频语义,可用于视频动作识别。