Motion Feature Network: Fixed Motion Filter for Action Recognition

在商汤实习也有两个多月了,主要在做一些视频行为分析的工作。这段时间也看了不少的文章,但是由于一直没能把数据集的精度刷到足够高,所以也就一直懒得动笔写笔记。最近终于把两个主要的数据集精度提高了一些,有时间来写写最近看过的一些论文的笔记了。

简介

今天想要介绍的是一篇ECCV2018的论文,这篇论文的出发点是基于TSN的方法,在RGB分支的基础上融合光流分支总能提高最终的精度,但是光流需要预先进行计算,这就极大的限制了网络的实时性。这篇文章从另一个角度出发,即是否能只使用RGB的输入,都过某些空间上的预先定义好的shift操作获得类似于光流的运动特征,进而在只使用RGB分支的基础上提高分类精度。

方法

正如文章的标题,作者定义了一系列固定参数的shift模板(Fixed Motion Filter),然后在每一层的RGB特征的空间维度上施加这些shift操作,通过将shift后的特征与相邻帧特征作差,获得的残差特征可以看做是类似于光流的运动特征。

Motion Filter

作者定义了一个叫motion filter的结构来获得运动特征,它采用如下的公式计算运动特征

$$R_l(x,y,\Delta t)=F_l(x+\Delta x,y+\Delta y, t+\Delta t)-F_l(x,y,t)$$

其中$\Delta x, \Delta y$是作者预先定义的,一共有五种不同的取值,分别为(0,0),(1,0),(-1,0),(0,1),(0,-1),$t+\Delta t$和$t$表示网络输入的相邻的两帧。

Motion filter实现起来其实也比较简单,只需要使用五种卷积核weight不同的depth-wise卷积就可以实现。在网络的训练过程中,这五组参数都是固定的。

Motion Block

经过motion filter处理后的特征,channel数量是输入特征的5倍,为了能够保持在网络后续的传播中维度数保持不变,作者提出了两种融合方式,分别称为Element-wise sum和Concatenation。第一种是将得到的运动特征R使用1x1的卷积降到和输入特征一样的维度,然后进行相加。第二种是将输入特征和R拼接到一块后再用1x1的卷积进行降维到和输入特征相同的维度。

实验

实验使用了something-something和Jester这两个对时序建模要求比较强的数据集,因为数据集中的类别都是类似于“push something from left to right”,“push something from right to left”,因此不像kinetics,想要从单帧图像判断视频的类别是比较困难的。因此传统的C2D网络,比如ResNet-50在这类数据集上精度是比较低的。作者进行的实验是在baseline网络的基础上加上了motion block,因此整个网络虽然还是2D的,但是由于运动信息的引入,精度有了不小的提升。