机器学习

《Temporal Pyramid Network for Ac

2021-08-08  本文已影响0人  ce0b74704937

文章地址:《Temporal Pyramid Network for Action Recognition》

代码地址:https://github.com/decisionforce/TPN

该文章发表于CVPR2020。文章认为在动作识别领域,视觉速度(visual tempo)是很重要的信息。现有网络主要是通过控制采样不同的输入来完成visual tempo信息的提取,但是这样做会导致需要多入输入来实现。

文章提出在feature层面来处理visual tempo信息,文章提出的结构不管是对于2D还是对于3D的backbone来说都可以做到即插即用。

下图展示了类内(intra class)和类间(inter class)之间的visual tempo差异。

1.png

一、网络结构

文章的网络结构如下图所示:

2.png

可以看出网络由backbone、spatial modulation、temporal modulation、information flow、final prediction这几个模块组成。

文章将提出的结构划分为两部分,一部分称为the feature source,顾名思义是feature的提取方法,该部分由spatial modulation、temporal modulation组成,另一部分称为the feature aggregation,表示feature的融合方法,该部分由information flow组成。

1.1 Feature Source of TPN

1.1.1 features的获取

当一段序列帧输入网络后,经过backbone可以得到许多features,TPN目的是为了更好的获取visual tempo,那么对于TPN获取多种时序维度特征作为输入可以通过如下两种方式:

  1. single-depth pyramid:该方式是一种简单的获取不同时序信息的方式。首先选择backbone输出的某个feature,记为F_{base},该feature的维度为C\times T\times W\times H,然后在时序维度进行不同的采样率\{r_1,...,r_M;r_1<r_2<...<r_M\}的采样操作,这样就可以获得在时序上不同维度的features,\{F^{(1)}_{base},...,F^{(M)}_{base}\},它们的维度分别为\{C\times\frac{T}{r_1}\times W\times H, ..., C\times\frac{T}{r_M}\times W\times H\}。但是这种操作得到的features,在空间维度时粗粒度的,可能效果不是很好。
  2. multi-depth pyramid:该方式通过利用backbone不同stage提取得到的features作为输入,这样就可以获得更丰富的空间维度的语义信息,本文选择这种方式。但是这种方式需要一些方法更好的处理features之间的融合。
1.1.2 spatial semantic modulation

为了对齐multi-depth pyramid方式获取的features,文章采用spatial semantic modulation。该模块其实就是将输入不同空间维度的features通过一系列堆叠的conv来获得与最顶层的相同空间维度的features。举例说明,加入backbone为resnet,输入的features为stage4和stage5的特征输出,即一个是空间维度相对输入缩小16倍的features,一个是空间维度相对输入缩小32倍的features,这两种features经过spatial semantic modulation后,空间维度都变为相对输入缩小32倍的features。

还有一点值得注意的是,在训练网络时,backbone中输入给spatial semantic modulation的那些features还会传给分类头来计算loss。例如上面例子中stage4和stage5的features输出会用于分类loss的计算。

1.1.3 Temporal Rate Modulation

该模块对于不同层的输入features采用不同的时序采样率的采样来获取visual tempo信息。(其实就是一个卷积层加上一个时序的pooling层)

1.2 Information Flow of TPN

上面backbone不同stage输出的features经过spatial modulation获取相同空间大小的features后有经过temporal modulation获取不同时间维度的features,最后是将输出的features进行信息融合。

融合特征方式有如下三种常见方法:

F'_i = \left \{ \begin{aligned} F_i, Isolation Flow \\ F_i \oplus g(F_{i-1}, T_i/T_{i-1}), Bottom-up Flow, \\ F_i \oplus g(F_{i+1}, T_i/T_{i+1}), Top-down Flow \end{aligned} \right.

上式中\oplus表示element-wise addition, g(F, \delta)是为了将特征能相加而引入的时间维度的down/up-sampling操作,其中F为特征,\delta为用于时间维度的参数。

将上述的操作结合起来,可以获得cascade flow和parallel flow这两种聚合方式,一种是bottom-up flow后接一个top-down flow即为cascade flow,另一种是同时应用top-down和bottom-up即为parallel flow。

top-down、bottom-up、cascade、parallel的操作方式如下图所示:

4.png

tips: 代码采用的是parallel方式

1.3 Implementation

文章采用resnet为基础改造的网络,网络结构如下图所示:

3.png

backbone中的res2,res3,res4,res5用于构建TPN。

在spatial semantic modulation中,对于M-level的特征的输入(这里为5),i-level的features采用stride为M-i的堆叠的conv处理(统一空间大小),并且输出的feature通道数为1024。

在temporal rate modulation中,每个feature都经过一个卷积和一个max-pooling层获得不同时序的feature。

最后利用information flow将各个feature聚合并送入全连接进行分类。

二、loss

loss采用的是交叉熵,但是与其他文章不太一样的是,1.1.2提到的,backbone输出的一些feature会参与loss计算。

所以loss为:

L_{total}=L_{CE,o}+\sum^{M-1}_{i=1}\lambda_i L_{CE,i}

L_{CE,o}为最终输出的交叉熵loss,L_{CE,i}为backbone不同i-level输出feature接auxiliray head后计算的交叉熵loss。\lambda_i为平衡参数。

其他具体的参数和实验结果详情可以看原文和代码。

上一篇下一篇

猜你喜欢

热点阅读