Two-Stream Convolutional Networks for Action Recognition in Videos
将单帧的图像信息和帧与帧之间的变化信息进行融合,单帧的图像可以形成对空间的描述,而通过光流法等方法形成的时间的描述(差分),从而达到时间和空间互补的目的。而本篇文章重点在讲述光流部分,考虑了几种不同的基于光流的输入。
Two-stream architecture
视频可以分解为空间和时间组成部分。空间部分,以独立的帧形式存在,有着关于场景、对象等信息;时间部分,以帧与帧之间的运动形式存在,传递着观察者和场景的相对运动。本文设计的视频识别架构分为两种流,如图1所示。
每一种stream都是用深度卷积网络构造的,最后再将两者softmax分数融合。文章考虑了两种融合方法:averaging and training a multi-class linear SVM [6] on stacked L2-normalised softmax scores as features. 另外从输入可以看出,一个是单帧图像,一个是多帧之间的光流(optical flow),这两个都是提前提取好的(可用OpenCV里面的方法)。
Spatial stream ConvNet 的输入是独立的视频帧,因为很多动作都是特定的场景,所以单纯的静态帧也是有很强的识别能力。这篇文章主要是介绍光流的内容。
Optical flow ConvNets
与一般的ConvNet模型不同,该模型的输入是通过在几个连续帧之间叠加光流位移场来形成的。这种输入显式地描述了视频帧之间的运动,这使得识别更容易,因为网络不需要隐式地估计运动。文章考虑了几种不同的基于光流的输入,如下所述:
ConvNet input configurations 卷积网络的输入配置,也就是不同形式的光流
光流叠加(Optical flow stacking)。在一对连续帧(t和t+1))之间光流可以看做一组位移向量场,用
表示在t帧的点(u,v)的位移向量,并且可以分为水平和垂直的两个分量
和
,可以看做是图像的通道很适合卷积网络,如图2所示。我们将L个连续帧的
流通道堆叠起来,形成总共2L个输入通道(x分量 + y分量)。
双向光流Bi-directional optical flow 光流叠加(1)和轨迹叠加(2)处理的是正向光流,即帧t的位移场dt指定其像素在下一帧t + 1中的位置。文章提出双向光流,通过额外计算反方向上的位移场得到,在
帧之间叠加L/2前向光流和在
帧之间 叠加L/2后向光流,合起来构造出输入量
。这种光流可以通过前面的任意一种方法表示。
平均流差集Mean flow subtraction. 相当于对输入数据0-中心化(即均值为0,对标准差无要求,中心化是原始分数减去平均数)。主要处理的问题就是,例如由相机运动引起的位移。摄像机运动补偿通常是估计整体运动分量并从密集流中减去了该分量。在文章中,提出一个更简单的方法:从每个位移场d中减去它的平均向量。
以上是不同的光流输入,虽然方法不同,但输入维度都是一样的
实验评估
为了比较空间流和时间流识别上的表现差异,训练时先使用其中一种来训练识别。
spatial stream ConvNets对各个视频帧进行操作,有效地从静止图像中执行动作识别。文中通过三种方法评价空间流CNN的表现。1)在UCF-101上从头开始训练;2)该空间流CNN在ILSVRC-2012上进行预训练,然后对UCF-101进行微调;3)保留预训练的网络参数,仅仅训练最后一层(分类层)。结果如下:
Temporal ConvNets 在UCF-101上从头开始训练。实验结果发现:
1)多层堆叠向量场(stacking multiple displacement fields, L>1)比单帧光流的效果有明显提高(73.9% --> 80.4%);2)mean subtraction对结果提升很大,它能减少两帧之间全局动作的影响;3)光流堆叠(optical flow stacking )和轨迹堆叠(trajectory stacking)的效果差不多。
对比以上使用spatial ConvNets 和 temporal ConvNets 训练的情况,空间流的识别准确率远远比不上时间流,由此得出多帧信息非常重要的。除了这些就是双流合并实验,调试结果。。。。