一 写在前面
未经允许,不得转载,谢谢~
本篇文章是对视频分类方法的一点总结与概括,主要参考论文:
Deep Learning for Video Classification and Captioning
知道它的过去和现在,才能更好的把握它的未来
这里概括了文章中对于视频分类任务的一些内容,主要包括:
- 视频分类常用模型;
- 视频分类常用方法;
- 视频分类常用数据集;
二 视频分类常用模型
2.1 CNN网络
文中提到的常用的一些经典CNN网络包括:
- AlexNet
- VGGNet
- GoogleNet
- ResNet
当然还有最近也很火热的SqueezeNet、DenseNet都可以被用来做特征提取等。
2.2 RNN网络
- 通用的RNN网络:
- 但是通用RNN网络在训练过程中会碰到梯度消失或者梯度爆炸的问题。
- 用到更多其实的RNN里面的LSTM长短时记忆网络:
三 视频分类常用方法
3.1 image_based video classification
- 最显著的特征就是这种方法是基于图像帧进行的。
- 把视频看成是a collection of frames,简单的看成帧的集合来处理。
- 通常这类方法会直接用在ImageNet上预训练好的网络(2.1节)来提取图像特征,然后叠加图像特征作为视频特征。
3.2 end to end CNN architectures
- 与3.1中的方法很不一样的地方就是会把特征提取的部分直接放到网络中训练,整个过程是端到端进行的。
- 比较经典的有用3D CNN学习视频的时空特征。
- 但是完全用3D CNN会比较耗时、并且3D kernels 不能很好的学习到空间信息,所以也会有一些底层用2D卷积,高层用3D卷积的做法。
- 另外由于视频本身可以很清楚的分成空间和时间2个维度,所以又有了很经典的two-stream模型:
- 上面
Spatial stream CNN
是在raw images上做的空间卷积操作,目的是为了得到视频的空间信息。 - 下面
Motion stream CNN
是在stacked optical flow上做的时间卷积,目的是为了得到视频的时间信息。 - 最后对两个流得到的结果做一个融合,作为最终判别得到的视频类别。
- 再这个two-stream的基础上又做了很多的改进工作,具体可以看看参考资料的论文。
3.3 modeling long-term temporal dynamics
- 3.1与3.2用的都是CNN模型来做的。
- 但也有一些为了提取视频的时序信息,采用RNN来建模的,通常用的都是LSTM;
- 相对来说LSTM在视频描述、自然语言翻译这样的场景下使用的比较多。
- 在视频分类上也有相应的应用,例:
- 该结构中就用CNN提取视频帧的特征,然后用两个LSTM来探索各帧之间的时序关系,最后得到分类值。
3.4 Incorporating Visual Attention
- 视频往往有很多帧构成,而通常很多帧可能是冗余的,甚至有的时候只需要几个key frames就可以推断出视频类别了。
- 所以就可以在LSTM中加入注意力机制;
- Sharma等人提出了第一个attention LSTM;
- 最近又有VideoLSTM结构的提出。
3.5 Unsupervised Video Feature Learning
- 我们注意到以上提到的4种方法都是监督学习,也就是需要有标注数据对网络进行训练的。
- 由于视频标注需要的人力比较多,所以最近也兴起了对视频特征的无监督学习;
- 我还没有具体学习做无监督这一个方向的,就不再瞎概括了,欢迎有大佬补充指导。
四 视频分类常用数据集
4.1 常用数据集
-
主要有以下几个:
- 相对比较常用的: UCF101、 HMDB51、Sports-1M、 FCVID
4.2 state-of-art
-
该文中统计了对UCF101以及HMDB51这两个数据集的一些方法精度,供我们参考。
- 到现在应该又很很多突破了。
网友评论