视频理解学习笔记(一):双流卷积神经网络
- 两句话总结双流卷积神经网络
- 论文概览
- 方法详解
- Spatial stream ConvNet
- Temporal stream ConvNet
- 测试方法
- 光流
- 什么是光流
- 怎么预处理光流
- 数据集
- UCF101(已被刷爆)
- HMDB51
- Experiments
- References
两句话总结双流卷积神经网络
- 两个神经网络,一个学习空间信息,一个学习时序信息。
- 在学习时序信息的网络中,传统方法提取运动特征(光流信息作为先验),其后接上CNN学习这些特征。
论文概览
论文标题:Two-Stream Convolutional Networks for Action Recognition in Videos
论文地址:https://arxiv.org/abs/1406.2199
作者团队:Karen Simonyan and Andrew Zisserman from 牛津大学的VGG组,也是VGGNet的两个作者。
任务:视频动作识别
背景:在双流卷积之前,也有工作尝试将卷积神经网络应用到视频动作识别任务(DeepVideo_Large-scale Video Classification with Convolutional Neural Networks_CVPR’14),但是效果却没有之前那些手工设计浅层特征的方法好。
贡献:第一个将CNN在Video上的表现提升到和手工设计特征方法媲美的深度学习神经网络。神经网络在视频理解领域的开山之作。
- 证明将深度学习应用于视频理解是可行的
- 证明motion信息(可以理解成时序信息)对视频理解是至关重要的
双流:两个神经网络
- 空间流神经网络(Spatial stream ConvNet)
- 输入:单帧图片(single frame)
- 输出:分类概率
- 时间流神经网络(Temporal stream ConvNet)
- 输入:多帧光流(multi-frame optical flow)
- 输出:分类概率
- 最终输出(late fusion):将两个CNN输出的概率取加权平均,得到最终的分类概率。
Late fusion:在logits层面去做合并
值得一提的是,在人脑内,也有两条路来做视觉处理,一条路叫做ventral stream,用来做物体识别;一条路叫做dorsal stream,用来做运动识别。
问题:CNN擅长学习局部特征,而难以学习基于时序的移动规律(即motion information)。
解决:既然CNN难以学习motion information,那就教CNN学会motion information。
- 首先将motion information提前抽取好,也就是得到光流信息(multi-frame optical flow),然后让CNN学习光流和label之间的映射关系。
事实上,在时序流网络分支中,先抽取光流信息作为运动特征是inspired by传统方法,只是说双流卷积用CNN代替了传统卷积的特征学习。
- 相当于并没有让CNN直接去学习运动特征,而是将运动特征,也就是光流信息抽取出来后,再去让CNN学习这个抽取好的运动特征。
方法详解
Spatial stream ConvNet
- 网络结构:5 Convs + 2 FCs + softmax (其实就是AlexNet)
- 输入:将视频一帧一帧的喂进去,相当于一个图像分类
- 输出:分类概率
Temporal stream ConvNet
- 网络结构:5 Convs + 2 FCs + softmax (其实就是AlexNet)
- 输入:11帧,即10个光流图
- 每两帧能得到一个光流
- 可以得到很多光流图
- 如何利用这些光流图:叠加
- 怎么叠加:
- stack(实验证明,该方法效果更好)
- trajectory stack,根据光流的轨迹,在轨迹上去进行光流数值的叠加
测试方法
- 不管视频有多长,只从里面等间隔取25帧,对这25帧采用10 crop(从原帧取4个corners + 1 center,翻转后再取4个corners + 1 center)的方法,可以得到总共250个crop,送到spatial网络。spaital最后的预测结果是这25帧的预测结果取平均。
- 对于光流,依旧是等间隔提取25帧,然后以取的每一帧为起点,取其后面的连续10帧,共11帧,得到10个光流图,送到temporal网络。temporal最后的预测结果是这10个光流图的预测结果取平均。
- 最终预测结果是两个网络的最终预测结果取加权平均(或者SVM)。
光流
上面提到了光流和提取光流信息,那么什么是光流?该篇论文是怎么预处理和提取光流信息的?
- 主要挑战:expensive time and space
什么是光流
光流是一种能够有效描述物体运动特征的物理表示。
怎么预处理光流
将光流scale到[0, 255]之间的整数,将其存储为JPEG格式。(但仍然expensive)
数据集
论文中在两个数据集上进行了实验,它们是UCF101和HMDB-51。
补充:其他视频理解数据集 and
Sports-1M
Something Something
Kinetic
UCF101(已被刷爆)
Paper: UCF101: A Dataset of 101 Human Action Classes From Videos in The Wild_ICCV’13
Website: UCF101 - Action Recognition Data Set
UCF是University of Central Florida的缩写,101意味该数据集里面共有101个类。
UCF101是中佛罗里达大学在2012年11月推出的一个真实动作视频的人类动作识别数据集,收集自YouTube,有101个类,共包括13320个视频,是UCF50的扩展。
该数据集包含的动作可以分为五大类:
- Human-Object Interaction
- Body-Motion Only
- Human-Human Interaction
- Playing Musical Instruments
- Sports
分辨率:320 * 240 (width * height)
HMDB51
Paper: HMDB: A large video database for human motion recognition
Website: HMDB
HMDB是Human Motion DataBase的缩写,51意味着该数据集共包含51个动作类。
HMDB51是一个2011年11月推出的人类动作识别数据集,收集自电影和网络视频等。它包含6766个视频,共有51个动作分类,其中每个动作分类至少包含101个片段。
Experiments
References
Bilibili-双流网络论文逐段精读