原文:《Temporal Pyramid Network for Action Recognition》
CUHK+SenseTime 的组合还是强。初看标题的时候,想到图片分类的金字塔池化(Spatial Pyramid Pooling)。金字塔池化解决大小,TPN解决快慢问题。
Abstrct
本文提出TPN(Temporal Pyramid Network)网络结构,特点是金字塔。起源于对视频动作快慢得研究,在多个数据集上取得优秀得结果。
Introduction
现实中视频动作的速度(visual tempos)往往是不同的,如果我们不考虑速度的话,walking, jogging 和 running三个在形态上很相似的动作也很难被识别出来。而现有的视频模型设计时往往忽视了视觉速度这一个至关重要的点。因此本文首先在K400数据上做分析,做了一个可视化。
图1 类内与类间的差异
图1上部分 展示了Moving SomeThing Down 动作的两种速度,Slow中动作贯穿全程。类内之间差异也很大。下部分是类间之间的差异,例子中剪羊毛动作最慢,变化最小。
Related Work
与本文思想相似的是Facebook 提出的SlowFast网络,本文认为虽然该网络在建模时候,考虑了视觉上速度的差异,但输入是固定的,只能是4/32帧,同时计算花费依旧比较大。
Temporal Pyramid Network
为了得到金字塔式的不同速率的特征,传统的方法就是直接在帧采样上采取措施,根据不同的间隔 去采样,建立多个分支去提取表示不同速率的特征。但这样的方法增加多个分支会带来计算量的提升。
本文启发于在一个深度网络中,不同深度的输出特征已经涵盖了各种视觉速度。如特征维度 的变化,也就是对应着不同间隔的采样帧。这样的话就可以运用网络本身,而不需要建立额外的分支去计算。基于此, 提出,其由两个重要的部分组成,特征来源, 特征聚合:
{the feature source, the feature aggregation}
Feature Source of TPN
Collection of Hierarchical Features 第一部分介绍不同层次特征的提取。
第一种方法想法很简单,直接规定网络某一层的输出为我们想要的特征。随后直接在帧取样上做文章:
如上,根据M个不同的采样帧率采样,分别送到特征提取网络中,得到:
这样,对应的大小如下,因为我们规定了网络的输出层位置,因此,输出特征的在空间H,W维度上是相同的,这样的特征提取方法好处就是不同帧率的特征便于融合,但是缺点在于缺少视频的语义信息。相对来说通过网络下采样减少T维度其对应原始更多的视频帧,会对应更多的视频信息。
第二种方法就是上述提到的,直接提取网络不同的层次的输出特征。
对应的大小分别是{ },其满足
这种多深度金字塔的方式在空间维度上包含了更丰富的语义信息,因此在特征融合中需要进行细致的处理。
第二部分介绍,由于网络不同层次的输出,其空间与时间的大小不一致,信息不能很好的融合。
Spatial Semantic Modulation 空间语义的调整。
由于网络的不同深度的输出大小不一致,为了便于融合,就是需要调整空间大小,本文直接使用卷积去调整大小一致。另一方面,本文的损失函数是使用中间层监督的方法,即每一层都加入一个交叉熵损失的约束。当然这样做的一个细节就是网络的初始层,梯度来源多源,变动比较大。
Temporal Rate Modulation 时序的对齐调整
空间shape对齐了,时间维度需要调整采样模拟出不同帧率输入。方法很简单就是直接定义一些超参 直接去下采样。这里需要注意,除了最后的池化层外,本文的网络在时间维度T上不进行减小。下文的网络介绍也验证了这一点。
Information Flow of TPN
在经过上述的特征提取以及数据提取以后,接下来要做的就是特征的融合。信息流的融合有下面三种方式。 是上采样或下采样。
具体如下图所示:
图2 信息流
在图2中展示的就是信息的融合,融合方式见上述公式,图中的示例从蓝色到黄色到绿色数量变化是4-2-1。与电路很相似,可以形成串联和并联的形式。(这个的并联有两个out,我的理解就是类似于电路直接相加合在一起。)
至此,每一层的特征都得到了处理,接下来就是将多个层次融合在一起得到最终得表示。
图3 Framework of TPN
如上图3所示,展示了TPN的整体框架,简单的来说分成以下几个步骤 1.通过backbone得到不同层次的输出特征,2.通过上述的Spatial/Temporal的调整,3.最后在Information Flow层进行特征的一些融合。4.最后通过maxpooling 得到不同层次的特征,在C维度上连接起来,作为最后的预测。图中的特征颜色,大小以及数量的变化也就是TPN的实现过程每一部分作用得体现。
Implementation
表1 3D backbone
3D_backbone使用得还是常用得膨胀的3D模型。细节就是在T上不下降,这样做的目的是后续下采样模拟不同帧率的采样。当然我想还有一个原因就是TPN本身就是2D/3D兼容的,这样直接兼容2D网络。不过TPN这样做在输入帧比较多时(32/64)会对显存需求比较高。
Experiments
表2 result of K400
表3 result of Epic-Kitchen
Per-class performance gain vs. per-class variance of visual tempos
图1 展示了类内与类间的方差。这里重点介绍了下是怎么计算得到的。作者采用一个Full
Width at Half Maximum (FWHM)[1]曲线图。
图4 FWHM
本文使用2D 网络输出每一帧对应的类别分类概率,构建对应的分布,计算FWHM=X2-X1。如果一个视频比较慢,那么帧之间的差异比较小,那么每一帧的对应类别分类概率大致相同,比较平缓。因此,直觉上来说,FWHM越大,速度越慢,反之亦然。
Conclusion
本文的特点是整合不同的层次的信息,其次引入中间层约束,更强的监督。最后信息流的流动,进行特征的融合,这种方式与LGD也有一定的相似性。