一 写在前面
未经允许,不得转载,谢谢~~~
这是一篇超级老也超级经典的文章了,2014年发表在NIPS上。在我之前的几篇视频识别的博客中也多次提到过这一篇two-stream结构。
整篇文章的思想和模型结构都很简单,之所以再拿出来完整地读一读是最近一门课程需要做个综述。
而且对于文章中的optical flow一直也只是闻其名,但没有真正学习过(/捂脸),所以也趁机学习一波。
二 基本介绍
2.1 任务描述
视频相比于图像而言,是一帧帧图像的集合。因此,很自然可以想到从两个维度去提取视频信息:
- 空间:单帧图像包含的信息;
- 时间:多帧图像之间包含的运动信息;
所以文章就想能否同时利用视频的空间信息与时间信息,来更好的提取视频特征,进而进行视频分类任务。
2.2 main contribution
文章的主要contribution:
- 提出了大名鼎鼎的two stream ConvNet;
- 实验发现利用optical flow即使只有很少的训练样本也能达到不错的实验结果;
- 在两个不用的数据集上用multitask-learning, 可以增加训练样本的数量,进而提升在单个数据集上的识别性能。
第3点在现在看来其实都不算是很创新的东西了,只是把两个数据集UCF101及HMDB51叠加在一起作为训练集训练网络,用相同的网络结构,不同的softmax进行分类,得到两个分类loss,然后对两个loss做一个相加后进行梯度回传。
这里主要介绍一下two stream的结构及optical flow相关的部分。
三 模型及方法介绍
还是先看网络结构图吧:
整体网络简单清晰:
- 上面一层:spatial stream convNet负责提取空间信息;
- 下面一层:temporal stream convnet负责提取时间信息;
如图中所示,对于spatial convNet来说,输入图像是单张RGB图像,然后经过一系列的卷积层、fc层后接到一个sofmax中,得到一个概率分布值;
然后对于Temporal ConvNet来说,输入是多帧图像之间的optical flow,同样经过一系列网络层后接到一个softmax中,得到一个概率分布值。
除了下面的temporal ConvNet少了一层normalization层, 上下两个stream的基本网络构成都是一样的。
最后的class score fusion将两个stream的score值融合在一起,文章一共尝试了:average、SVM这两种方法。(实验结果显示SVM融合的方式更优)
四 optical flow视频光流
4.1 optical flow stacking
我们先从下面的例子来看一下optical flow的定义:
光流可以看成是2帧连续帧t,t+1之间的移位向量场(displacement vector)。
如图(a),(b)所示为2帧连续帧,其中绿色框中是前后两帧运动信息比较明显的部分。图(c)展示的就是绿色框中对应的光流情况,可以看到各个位置的移动情况。
图(d)(e)分别是对移位场进行水平和垂直两个方向进行分解后的示意图。
这两个就就可以很方便的用神经网络来识别。
对于大小为 w, h, 帧长度为L的一个视频片段来说,将L帧的dx,dy给堆叠起来,就能得到长度为2L
的input channels, 即整个输入的体积形状为:[ w,h,2L ]
对于L中的任意一帧τ而言,下式成立:
其实整个数学公式表达的就是将每一帧的dx,dy按序stack在一起的意思:
而对于任意一个点(u,v),Iτ(u,v,c), c = [1;2L] 就是表示这一个坐标位置点在长度为L帧中的动作进行编码。
4.2 trajectory stacking
整体思路跟optical 类似,只是这里记录的是轨迹信息。
看如下公式:
唯一与optical flow不一样的地方的地方就在在于等式的右边不再是位置(u,v),而是轨迹Pk。
Pk的数学解释在这里:
其实就是记录的从点(u,v)出发,后面每一个轨迹上的点的位置。即pk上的点是从运动轨迹上sample出来的。
下面这张图很好的表示了optical flow和trajectory之间的关系和区别:
- 左边是optical flow;
- 右边是trajectory;
- 注意看左边的点在各帧上始终是p1,即记录的自始至终都是同一个坐标点(u,v)在各帧上的移动情况。
- 而右边的点从最开始的p1(u,v),到后面各帧,它指向的坐标位置是在变化的。它记录的是这个点的运动轨迹。
目前用的比较多的应该还是optical flow的表示方式。
4.3 learn more
- optical flow具体计算方法参考:
T. Brox, A. Bruhn, N. Papenberg, and J. Weickert. High accuracy optical flow estimation based on a theory for warping. In Proc. ECCV, pages 25–36, 2004.
- trajectory具体计算方法参考:
H. Wang, A. Kl¨aser, C. Schmid, and C.-L. Liu. Action recognition by dense trajectories. In Proc. CVPR, pages 3169–3176, 2011.
- 具体实现:github有挺多开源代码,下次有机会实践的话再另外补充吧~
五 写在最后
接下来一段日子应该都会先学习3D重建方面的东西了,新接触一个领域还是有很多新的东西需要花时间和精力去学习。
视频的工作当然也希望能一直做下去。