您的位置:首页 > 理论基础

[行为识别] Two –Stream CNN for Action Recognition in Videos

2018-01-17 19:15 357 查看
这篇文章发表于2014 NIPS。也是牛津大学产出的。在这篇文章出来之前其实也有人尝试用深度学习来处理行为识别,例如李飞飞团队【Large-scale video classification with】通过叠加视频多帧输入到网络中进行学习,但是不幸的是这种方法比手动提取特征更加糟糕。当这篇文章出来以后才意味着深度学习在行为识别中迈出了重大的一步。

一、前言

这里主要阐述了论文的三个主要贡献点。

首先,论文提出了two-stream结构的CNN,由空间和时间两个维度的网络组成。

其次,作者提出了利用网络训练多帧密度光流,以此作为输入,能在有限训练数据的情况下取得不错的结果。

最后,采用多任务训练的方法将两个行为分类的数据集联合起来,增加训练数据,最终在两个数据集上都取得了更好的效果。(作者提到,联合训练也可以去除过拟合的可能)

二、网络结构

视频天生的可以分为空间和时间两个部分。空间部分,每一帧代表的是表面信息,比如物体、场景等等。而时间部分信息是指帧之间的运动,包括摄像机的运动或者目标物体的运动信息。所以网络相应的由两个深度网络组成,分别处理时间与空间的维度。

每个网络都是由CNN和最后softmax 打分组成。最后的softmax的fusion主要考虑了两种方法:平均,在堆叠的softmax上训练一个SVM。网络结构图如下所示。



三、光流卷积网络

在网络中,时间部分,以连续多帧之间光流场作为输入。因为这种输入能有效的描述视频帧之间的运动,所以会让识别更加容易。

3.1 卷积网络输入方式

作者在这里讨论了几种输入方式,虽然都是计算多帧之间光流场。

3.1.1 光流栈(Optical flow stacking

光流栈(Optical flow stacking),或者叫做光流的简单叠加。简单的来说就是计算每两帧之间的光流,然后简单的stacking。

我们假设考虑做动作的分类(行为识别主要包含两个方向,一个是动作分类,给出一个视频截断,判断视频的动作类别,或者称为offline。 另一个就是动作识别,给出一个自然视频,没有进行任何的裁剪,这个时候需要先知道动作的开始时间和结束时间,然后还要知道动作的类别)。 考虑对一小段视频进行编码,假设起始帧为T,连续L帧(不包含T帧)。计算两帧之间的光流,最终可以得到L张光流场,每张光流场是2通道的(因为每个像素点有x和y方向的移动)。



最后,我们将这些光流场输入,得到相应的特征图。

3.1.2 轨迹叠加(Trajectory stacking)

顾名思义,轨迹叠加就是假设第一帧的某个像素点,我们可以通过光流来追踪它在视频中的轨迹。而简单的光流场叠加并没有追踪,每个都是计算的某帧T+1中某个像素点P相对于T帧中对应像素点q的位移,如下图所示,光流场叠加最终得到的是每个像素点的两帧之间的光流图。如下图所示。



3.1.3 双向光流

上述两个方法其实考虑的都是前馈光流,我们都是依靠后一帧计算相对于前一帧的光流。当我们考虑T帧时,我们不再一直往后堆L帧,而是计算T帧之前L/2和T帧之后的L/2帧。

3.1.4 减去平均光流

摄像机的运动将导致负面影响。

第4章 多任务学习

对于空间卷积网络来说,我们可以用大型的数据集(比如ImageNet来预训练)。但是时间卷积网络需要输入视频数据,目前的视频数据量还非常小。所以作者提出能不能把多个数据集(这里就是,UCF101和HMDB-51)联合起来,这样还能避免过拟合的现象。由此作者提出了两种方法。

第一种就是简单的将两个数据集融合,提取出两个数据集不同的视频组成一个新的数据集,然后在这上面进行训练。但是这样会有一个问题就是需要大量的人工去判断。

第二种方法就是多任务学习,最终作者采取了这种方法。这种方法改变了之前的网络结构,在最后全连接层之后,作者增加了一个softmax层输出,这两就有两个softmax层输出,可以给两个数据集打分。每个softmax有自己独立的loss,最终的loss就是两个Loss的叠加。然后回传更新参数。所以这里的重点就是:网络全卷积层是不变的,或者说对于两个数据集是共享参数的。只是改变了最终的loss。

第6章 实验结果

6.1 数据集和评价标准

作者实验的数据集主要是UCF-101和HMDB-51。



6.2 空间卷积

作者在这里考虑了三种方法。

从零开始在UCF101上训练

在ILSVRC-2012预训练然后在UCF101上finetuning

保持pre-trained模型,然后只训练最后一层(classification)



由上图可以看出,Pre-trained + fine-tuning 和 Pre-trained + last layer效果差不多。都远远的比From Scratch好。

6.3 时间卷积

由上图可以看出,直接采用Optical Flow stacking效果更佳好。配合Mean subtraction效果更佳。

6.4 多任务学习

作者试验了以下几个,考虑HMDB数据集。

直接在HMDB上训练

Pre-trained On UCF-101,然后fine-tuning在HMDB

在HMDB-51上增加78个类别(来自于UCF-101)

多任务学习



6.5 Two-Stream ConvNet



6.6 对比算法



参考文献

[1] Two –Stream CNN for Action Recognition in Videos

[2] Large-scale Video Classification with Convolutional Neural Networks

<个人网页blog已经上线,一大波干货即将来袭:https://faiculty.com/>

/* 版权声明:公开学习资源,只供线上学习,不可转载,如需转载请联系本人 .*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐