《Two-Stream Convolutional Networks for Action Recognition in Videos》算法详解

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

文章由牛津大学VGG实验室提出,收录于NIPS2014。
该文章认为视频的信息可以分为空间信息和时间信息,所以该文章提出了一种利用普通rgb图像(代表空间信息)和光流信息(代表时间信息)来解决视频的动作分类问题。

首先需要了解什么是光流,请看博客《光流估计——从传统方法到深度学习》

一、网络结构

网络有两种输入,一种是代表空间信息的视频帧,一种是代表时间信息的特征帧。所以网络也由两种深度网络组成,两个网络都是由CNN加softmax组成。最后的输出也有两种形式:两个网络softmax输出的平均值、在两个网络softmax输出结果堆叠的基础上训练一个SVM。

对于空间网络(输入为普通rgb图片的网络)来说,输入的是大小为的图像。
对于时间网络(输入为光流信息的网络)来说,输入的是大小为的光流栈。

1.png

上述讲到光流网络由代表时间信息的特征帧作为输入,文章实际上讨论了四种输入形式

讨论时序特征之前还需要定义一个目前在双流系列网络经常会用到的术语,叫snippet,一个snippet由一帧图像帧和几帧光流帧组成

光流栈

计算每两帧之间的光流,将多帧光流堆叠起来形成网络的输入。因为光流包含两个方向,所以每个光流场是包含x和y方向两个通道的特征图。对于将L个连续光流帧作为输入,那么网络的输入通道数为2L,即,表示第个输入网络的光流栈,用snippet来说的话就是第个snippet的光流输入。
光流栈中的某两个光流帧在坐标点(u,v)位置的值可以用公式表示如下:


上面w,h为图像大小,L为输入的光流栈总帧数。

轨迹叠加

轨迹叠加就是假设第一帧的某个像素点,我们可以通过光流来追踪它在视频中的轨迹。而简单的光流场叠加并没有追踪。光流和轨迹的区别如下图所示。


2.png

轨迹特征使用公式表示如下,类似于光流表示:


上式中表示在第一个以(u,v)点为起始点,在特征栈中第k帧的坐标点位置(即原始的(u,v)点经过k帧后到达的点位置),上式中d表示光流信息,其它同光流。
的计算公式如下:


通俗来说就是从初始位置(u,v)开始根据光流信息计算出来的在k帧到达的位置。

双向光流

上述讲的都是单向光流,即以某一帧为初始帧,计算后面的光流。双向光流是以当前帧为中间帧,光流场来源于前面几帧和后面几帧计算出的光流的叠加。

减去平均值光流

为了减少摄像机拍摄时本身的运动带来的影响,输入光流之前减去平均的光流作为网络的输入。

该文章的原理就是这些,具体实验请参考原文。

你可能感兴趣的:(《Two-Stream Convolutional Networks for Action Recognition in Videos》算法详解)