【CV-Action Recognition】two stream阅读笔记

原论文链接:Two-Stream Convolutional Networks for Action Recognition in Videos

motivation

13年的iDT算法(improved Dense Trajectories)是深度学习进入行为识别领域前效果最好,稳定性最好,可靠性最高的算法,不过算法速度较慢。

cnn从ILSVRC2012 ImageNet一举成名,在action recognition其实也有一些尝试,比如Arizona State University的《3D Convolutional Neural Networks for Human Action Recognition》,但效果不好,直到14年nips 的本篇论文,two stream的论文出现颠覆这个领域。直到17年,大多数算法还是基于two stream。

Architecture

论文主要有以下贡献: (1)提出基于two-stream结构的CNN,由空间和时间两个维度的网络组成。

(2)验证了即使在较小规模的训练数据集上,在多帧稠密光流上训练的卷积神经网络可以获得非常好的性能。

(3)展示了多任务学习(multiple learning),应用于不同的运动分类数据集,可以同时提升数据集的规模和检测性能。

UCF-101和HMDB-51两个数据集上取得state-of-the-art效果,也是深度学习进入行为识别的转折点。

作者提出的框架来源于1992年的一个假说(论文Separate visual pathways for perception and action):人类的视觉皮层包含两个路径,ventral stream用于目识别物体,dorsal stream识别运动。

作者提出的two stream基于两个独立识别stream(空间和时间),The spatial stream从静止视频帧执行动作识别,the temporal stream从密集动作光流中识别行为,两个不同的stream都通过CNN实现,最后进行信息融合。通过分解时间流和空间流,作者通过预训练ImageNet数据集,提高网络的泛化能力。



上图所示作者提出的two stream网络结构,两个stream就是两个独立的CNN架构(类似ZFNet)。视频可以分成空间与时间两个部分,空间部分指独立帧的表面信息,关于物体、场景等;而时间部分信息指帧间的光流,携带着帧之间的运动信息。相应的,所提出的网络结构由两个深度网络组成,分别处理时间与空间的维度。

每个stream网络都会输出一个softmax层,作者最后使用两种融合方法:求平均值和在一个叠放的L2正则化的softmax上训练一个多类的线性SVM。

Optical flow ConvNets 模型的输入是几个相邻帧的堆叠的光流位移。这些输入能够描述出视频帧的运动信息。

multi-task learning

multi-task learning来克服数据量不足的问题。其实就是CNN的最后一层连到多个softmax的层上,对应不同的数据集,这样就可以在多个数据集上进行multi-task learning。

Testing和Training都是普通CNN相关的tricking.论文的网络模型在ImageNet ILSVRC-2012与训练。

Multi-GPU training 单一时间维度的ConvNet, 论文在 4 NVIDIA Titan cards训练一天时间。

Optical flow

论文的Optical flow是预先训练,方法来自于《High accuracy optical flow estimation based on a theory for warping》,方式是OpenCV toolbox. 通过预处理,UCF-101数据集1.5TB减小到27GB.

Experiment

略,笔记重要的是论文的motivation。

Conclusion

论文是two stream的奠基之作,但是Optical flow是与训练好的,不是end-to-end的实现。


返回CV-Action Recognition目录

返回CV总目录

编辑于 2017-12-08

文章被以下专栏收录