基于深度学习的Action Recognition(行为识别)【一】

本文也发表在: 知乎专栏

作为深度学习还未完全攻克的领域,越来越的研究者开始将目光投向视频。而Action Recognition,或者说Video Classification,作为最基本的问题,等同于图像分类。而目前深度学习方面最具代表性的方法之一,就是港中文在ECCV2016提出的Temporal Segment Networks(TSN),这也是目前的benchmark。
Website: Temporal Segment Networks - TSN

之前的模型有哪些问题?
1. 主流的CNN模型聚焦在appearance和 short-term motion,缺少学习长序列的能力。已提出的解决办法有dense temporal sampling,但是这种方法计算量很大,无法应用到大于预定length的长视频之中。
2. CNN网络训练需要大量的数据。而当时的数据集不够大,容易过拟合。

本文研究的问题:
1. 如何设计一种高效的、能够学习长序列的网络结构?
2. 如何在数据有限的情况下,让网络学习到有用的特征?

作者的观察:
连续帧的输入中,存在严重的冗余。(例如射箭的视频,其实完全可以仅根据其中几帧就能判断,而且冗余的帧也会引入更多的噪声,key-frame这块在去年已经有相关的论文了)。所以前面提到的密集采样其实是不必要的。

主要思路:
稀疏采样提取多个短视频序列,Segmental结构用来融合所以短视频序列的信息。(传统C3D网络,每次输入16帧,对应一个标签,而现在是整个视频输入,切割为多个短序列作为网络的输入,最后融合多个网络的结果作为最终输出。)因为是稀疏采样,所以虽然增加多个序列,但计算量仍然是可接受的。
网络结构如下,中间绿色+蓝色是传统的双流网络结构。
基于深度学习的Action Recognition(行为识别)【一】_第1张图片

细节讨论:
  1. 网络内部采用BN-Inception。(通常来说,Deeper is better,尤其是Resnet出来后,去年MSRA已经提出了199层的3D-Resnet,效果不错)
  2. 网络输入:传统采用RGB+optical flow形式。本文额外探索了RGB difference和warped optical flow fileds。
  3. 网络训练:
3.1 Spatial网络使用Image-net上预训练的结果作为初始化,Temporal网络先进行规格化至0-255之间,这样光流图就和RGB一样了,然后调整Spatial网络的第一层卷积。
3.2 Regularization。改进的Batch Normalization(BN),同时增加一层drop-out。
3.3 Data Augmentation。数据增强主要用来增加样本多样性,防止过拟合。传统双流网络采用了random cropping和horizontal flipping。本文探索了corner cropping和scale jittering。其中corner cropping是指crop的区域只从角点或者图像的中心点选取,scale jittering是一种multi-scale cropping的方法,固定初始RGB或光流图像size为256x340,crop的宽和高从{256,224,192,168}里选取,然后resize到224x224,作为网络输入。

个人讨论:
1. Data Augmentation:文中得出的最佳组合是Optical flow+Warped flow+RGB,但值得注意的是,如果再加上RGB difference,效果反而会下降一点,原因可能是RGB difference虽然包含了motion信息,但是在已经有更好的motion信息下,相当于引入了额外的噪声。
2. 最新挖坑文: On the Integration of Optical Flow and Action Recognition ,重新审视了光流的作用,或许光流并没有包含所谓的motion信息。使用Data Augmentation的结果替代光流仍然值得探索,例如边缘增强/分割图/颜色增强等。
3. 下一步发展个人觉得主要集中在模型(网络架构)、tricks(引入Res-net,新的loss函数,输入的形式等),新的数据集( Moments in time )。当然,最为重要还是特征,motion特征。

你可能感兴趣的:(计算机视觉,论文)