原论文地址: Two-Stream Convolutional Networks for Action Recognition in Videos-2014NIPS 双流法代码汇总

单词汇总

Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图1

本文贡献

本文贡献有三:首先,提出了一个two-stream卷积网络架构,这个架构由时间和空间网络构成。第二,我们验证了,在多帧稠密光流上训练的卷积网络,尽管是有限的训练数据集,但能够实现很好的性能。最后,我们展示出,应用于两个不同动作分类的数据集的多任务学习,可以同时用来增加训练数据集的数量和提高性能。

本文网络为两个通道:一个通过静态图片提取空间信息,另一个结合光流提取运动信息。网络将时空信息解耦,并且单独训练。例如提取空间信息的网络,本文先在ImageNet上进行训练。

Our proposed architecture is related to the two-streams hypothesis [9], according to which the human visual cortex contains two pathways: the ventral stream (which performs object recognition) and the dorsal stream (which recognises motion).

相关工作

文章对视频分类的总结做得挺好,尤其是对传统方法的总结,有时间可以学习一下
《Large-scale Video Classification with Convolutional Neural Networks》文章中,不同的网络结构貌似结果相差不大,其中的单帧模型亦是取得比较健壮的性能。基于此现象,作者认为局部动作因素可能并不是很重要。相反,本文作者认为,这可能表明学习的模型没有很好地捕获运动信息。基于此想法,本文作者在网络中引入一条利用 dense 光流提取运动信息的通道。

对于光流的计算,本文参考了《High Accuracy Optical Flow Estimation Based on a Theory for Warping》

网络架构

本文网络结构如下图所示。Spatial stream提取的是静态图像中特征,Temporal stream利用多帧图像的光流提取运动信息。在single frame中,本文单独计算每帧的类别概率,然后去平均值。
image.png

光流网络

光流网络的输入是由几个相邻帧之间叠加的光流位移场。光流位移场能够显式地表示运动信息,使得动作识别更为简单。下图是光流作为输入的几个变体:
image.png

网络输入

光流叠加:
一个密集光流可以看做是在连续的帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图4和帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图5之间的一个位移矢量场Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图6的集合。我们用Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图7表示第Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图8帧位置为Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图9的光流大小(就是说第Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图10帧的Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图11点将相对于第Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图12帧移动Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图13)。记矢量场的水平和垂直分量为Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图14,对于这两个分量可以按照图像的组织方式,将其组成两通道的“图像”(和之前毕设关键点组织方式相同)。为了综合多帧图像的光流,假设选取的为Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图15帧光流,我们将会按照channel维度将他们组合在一起,从而产生 Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图16 输入 channels。利用公式表示即:
Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图17,则有:
Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图18

注意一个输入Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图19是包括后面Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图20帧的,只是以第Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图21帧为起点!

轨迹叠加:
轨迹可以作为光流的一种替代物。仍旧假设输入为Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图22:
Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图23
其中Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图24是轨迹上的第Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图25个点,其起点为第Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图26帧的Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图27,并且用以下递归方式定义:
Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图28

根据公式可以看出来,轨迹也就是表示原图像中任意点运动的轨迹:初始位置不断加上光流(位移)。 轨迹叠加的话,每张图的同一个点都是表示同一个像素点在不同帧中的运动情况罗。

image.png

双向光流

光流表示1和2处理了前向光流,也就是帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图30的位移场Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图31指定了在下一帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图32处像素的位置。很自然地联想到可以将其扩展到双向光流,通过在相反的位置计算一个额外的位移场集合来获得。我们接着构建了输入“立方体”Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图33,通过叠加帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图34到帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图35之间共Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图36个前向流和帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图37到帧Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图38Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图39个后向流。输入Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图40因此与之前的通道(Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图41)有相同的数量。流可以使用方法1和方法2中其中任一个来表示。

此处的前向和后向含义:在Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图42之前的成为前向,之后的称为后向!

Mean flow subtraction

目的是使得输入以0为中心,使得模型更好地处理纠正非线性。对于任意的两帧图像,如果考虑到摄像机的移动,摄像机的移动造成的光流可能是最终计算光流的主要成分 Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图43 摄像机运动补偿:从密集光流中估计并减去全局运动分量!本文采用更简单的方法:每一个位移场Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图44中都减去它的均值矢量(感觉这样更合理!)。

每一个位移场(也即是每一帧)Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图45中都减去它的均值矢量实现摄像机的运动补偿貌似是更合理的方式!

在实际输入时Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图46Two-Stream Convolutional Networks for Action Recognition in Videos_2014NIPS - 图47

时空卷积核先前表示的联系

一言以蔽之:手工特征都可以在光流的基础上利用卷积网络获取。

多任务学习

本文在研究时,视频数据集比较小,所以希望结合UCF-101HMDB-51数据集来扩大数据集。但是考虑到,两个数据集交集部分难以处理,所以采用多任务学习的方式来同时利用多个数据集!

如果是我的话,可能就直接把两个数据集结合起来而不管交集罗……有些数据多参与学习,有些数据少参与学习,将会导致模型具有一定的偏向性!但是有时候这种偏向性也可以被利用,类比于人对于难的问题多学几遍,简单的少学几遍,从而使得平衡学习。

多任务学习中,多余的任务事实上充当了一个正则化器,从而使其能够利用额外的数据。为了适应多任务学习,本文修改网络结构使得它包括在最后一个全连接层后面两个softmax分类层:一个计算HMDB-51分类分数,另一个计算UCF-101的分数。这两个层都有自己的损失函数,只在各自数据集的视频数据上操作,总体的损失为两个独立任务损失之和。

实现细节

光流的计算:opencv提供。

结果展示

时空网络各自测试

本文尝试了各种不同的训练方式,以及参数选取方式,其结果如下表:
image.png
image.png

综合测试

结合网络的一个方法是,在两种网络的6层或7层后,训练一个全连接层共同的叠加。然而在本文的情境下这样是不可行的,会导致过拟合。因此,本文融合了softmax分数:使用或平均了一个线性SVM
下表展示了最终的结果,可以得出如下结论:

  • 时间和空间识别流是互补的,他们的融合明显的提高了性能(时间网络上提高了6%,空间网络上提高了14%);
  • 基于SVMsoftmax融合要比平均融合做的要好;
  • 使用双向流对于卷积网络的情况没有益处;
  • 使用多任务训练的时间卷积网络在单独以及融合空间网络时的性能都是最好的;

image.png
下表是同最先进方法的对比:
image.png