【论文阅读】Motion Feature Network: Fixed Motion Filter for Action Recognition
背景
连续帧之间的spatio-temporal表征对动作识别任务至关重要,之前的方法是利用光流作为temporal信息,再结合一系列的包含spatial信息的RGB帧来做动作识别任务。这一方法在动作识别任务上确实表现不错。然而,计算光流需要非常大的计算消耗,并且还需要双流架构,无法对spatio-temoral特征进行端到端的训练。(3D卷积神经网络虽然能够端到端的训练spatio-temporal特征,但是其计算量也非常之大)因此本文就提出了MFNet,该网络包含了能够对连续帧之间的spatio-temporal特征进行建模的block,并且能够实现端到端的训练。
MFNet模型
该模型的结构是基于TSN,包括两个部分,一个是appearance block,一个是motion block,其网络结构图如下所示。顾名思义,appearance block是对空间信息进行建模,本文使用的是ResNet作为backbone,这个比较好理解,重点是其motion block。
我们知道之前为了抓取motion信息,使用的是光流作为CNN的输入。而在本文中,作者的目标是基于光流算法来表示去寻找能够帮助分类动作识别任务的temporal特征,而不是去寻找光流的最优解。
motion filter
为了逐层的对特征级别的光流进行估计,作者提出了motion filter模块。首先光流的通用公式如下:
作者将上述公式拓展到特征空间,即将图像I(x,y,t)换成特征图F(x,y,t),因此得到了这个新的公式:
其中,l表示在卷积层的第几层,而R则是所谓的“残差特征”(residual features)。从上面公式可以看出,R是由两个连续时间间隔的特征图相减得来。其结构图如下所示:
上图还有一点需要说明的是,作者先对t+Δt时间的特征图进行shift操作,这个操作是将其输入张量的每个通道沿不同的空间方向移动,以此来模拟计算光流的过程,当然为了便于实现,作者先预定义了九个方向,因此这个操作可以通过3x3的深度卷积来实现。
motion block
如何将两个block的特征结合在一起想深层传递呢?作者设计了两种方式,一种是Element-wise Sum,一种是Concatenation。下面是其结构图,一目了然
实验
数据集
本文选用的数据集有两个,一个是 Jester,一个是Something-Something,之所以选用这两个数据集是因为作者认为,这两个数据集里的数据不能仅仅通过看单帧就能够识别出来。
结果
需要说明的是,baseline是TSN,MFNet-C50代表motion block使用的是Element-wise Sum,同理,另外一个则是使用Concatenation。
由于MFNet选用TSN作为网络设计的模板,因此,超参数K的选择尤其重要,上表真是了不同模型在不同K的取值下的性能。可以看出,当K取7时,MFNet的性能最好,并且当K从3升到5时,性能有非常大的提升。
上图则是MFNet与SOAT模型的对比结果,可以看出MFNet的性能确实不错。还有其他的实验就不一一列举了。
结论
MFNet网络包含了 appearance blocks以及 motion blocks来分别对空间和时间特征进行表征,更重要的是能够实现端到端的训练方式。并且论文提出的motion filter能够很方便的添加到其他任何CNNs中。至于会带来多少额外的计算开销,论文里说是比较少的。这篇论文和19年的Representation Flow for Action Recognition非常像,都是根据光流算法来设计卷积模块进而代替抓取motion特征。不同的应该是Representation Flow for Action Recognition这篇论文在设计卷积模块抓取motion信息时用到了迭代优化的思想吧。