深度学习-视频行为识别:论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos)

这里写目录标题

  • 视频的行为识别
  • 前言
  • 背景
  • 内容组成
  • 主要贡献
  • 算法介绍
  • 网络结构
    • 双流(two stream)网络结构
    • 空间流卷积网络(Spatial stream ConvNet)
    • 时间流卷积网络(Temporal stream ConvNet)
      • 卷积网络的输入配置
      • 光流估计方法
        • 光流的堆叠方式(optical flow stacking)
          • 光流堆叠(Optical flow stacking
          • 轨迹堆叠(Trajectory stacking)
  • 多任务学习
    • 背景
    • 解决
    • 目的

论文地址:ttp://de.arxiv.org/pdf/1406.2199
论文:Two-Stream Convolutional Networks for Action Recognition in Videos

视频的行为识别

参考链接:
视频的行为识别
论文阅读笔记
使用DL方法解决视频中行为识别/动作识别的问题解决思路有三个分支:
分别是two-stream(双流)方法,C3D方法以及CNN-LSTM方法

本文将从算法介绍、算法架构、参数配置、训练集预处理、算法优势及原因、运行结果六个方面对每种算法进行阐释,并对每一个分支的算法集合总结自己的心得。本文暂不区分行为识别(Activity Recognition)与动作识别(Action Recognition)。

前言

这一篇论文是动作检测中较早的一篇,阅读这篇论文有助于近几年最新论文的阅读。

**如何在静态的图像和动态过程之间捕获一种连接性的信息,让两者能够很好的联系起来?**这篇论文就针对这样的问题,提出了很好的方案,它介绍了一种双流卷积网络,来实现视频中的行为识别。

背景

视频相比于图像而言,是一帧帧图像的集合。因此,很自然可以想到从两个维度去提取视频信息:

空间信息:单帧图像包含的信息,独立于这个帧的表面信息(也就是视频中的物体和场景信息)
时间信息:就是帧间的光流,它会携带帧之间的运动信息;多帧图像之间包含的运动信息;
所以文章就想能否同时利用视频的空间信息与时间信息,来更好的提取视频特征,进而进行视频分类任务。

内容组成

1.1部分,我们回顾了有关使用浅层、深层的架构的动作识别的相关工作。
第2部分,我们介绍了two-stream架构,并且详细介绍了空间卷积网络。
第3部分,介绍了时间卷积网络,并且特别介绍了它如何推广到1.1节中介绍的先前的网络。
第4部分,提出多任务学习框架,使得多个数据集上的训练数据可以容易的组合。
实现细节在第5部分给出。在第6部分进行评估,并与最先进水平进行了比较。
我们的实验在两个挑战性的数据集(UCF-101和HMDB-51数据集)上都展示出,两个识别流是互补的,并且我们的深度架构比Large-scale video classification with convolutional neural networks这篇论文做的要好,不管是在相对较小的数据集上训练,与浅表示的最先进水平相比也是有竞争力的。

主要贡献

论文就提出了空间网络和时间网络并存的双流卷积网络结构,
利用空间网络去处理静态信息,利用时间网络去处理动态信息。两者结合起来可以大大提高行为识别的准确率。

1.提出了一个双流卷积网络模型,其包括了空间网络和时间网络。
2.在较小规模的训练数据集上,在多帧稠密光流上训练的卷积神经网络可以获得非常好的性能。(指的还是那个双流卷积网络)
3.使用多任务学习(multiple learning),应用了两种不同的动作分类的数据集,可以同时提升数据集的规模和检测性能。
(多任务学习概念,即将不同种类的分类数据进行融合训练,论文中采用UCF-101和HMDB-51进行融合训练。多任务一方面可以提高它的数据量,也可以改善它的训练效果,来降低过拟合。)

UCF-101和HMDB-51两个数据集上取得state-of-the-art效果,也是深度学习进入行为识别的转折点。

算法介绍

该篇论文是双流方法的开山之作,论文所提出的网络使用以单帧RGB作为输入的CNN来处理空间维度的信息,使用以多帧密度光流场作为输入的CNN来处理时间维度的信息,并通过多任务训练的方法将两个行为分类的数据集联合起来(UCF101与HMDB),去除过拟合进而获得更好效果。

网络结构

双流(two stream)网络结构

每个流都有一个CNN网络,其尾部接一个softmax输出概率分布值,最后对两个网络的softmax值进行融合。考虑两种融合方法:平均average和使用SVM(作者实验中SVM效果更好)。
深度学习-视频行为识别:论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos)_第1张图片
视频信息可以分为空间和时间两个部分:
1)空间部分:通过单帧图像表达图像中的场景和对象的信息。
2)时间部分:通过多帧来表示对象的运行信息和时序行为。

模型分为两部分:
两个流都是用卷积网络来实现的。
spatial stream convnet网络以单帧图片(静态图像)作为输入;空间流从静止的视频帧中执行动作识别

temporal stream convnet以多帧图像的的光流(是从video中提取的特征信息)作为输入,两部分在经过softmax后进行late fusion。时间流则经过训练,以密集的光流的形式从运动中识别动作。

对于temporal stream convnet,用optical flow(光流信息)作为输入的效果,远远优于用raw stacked frame(简单的一系列帧)作为输入。

首先对输入的视频进行分流,分为空间流卷积和时间流卷积,在空间流卷积中可以看到,输入的是单个的帧,在时间流卷积中可以看到它是多帧的光流。

空间流卷积和时间流卷积有很大的相似性,首先进行相似的卷积操作,卷积具有局部连接和权值共享的特点,能够大大降低训练时间,有效提取图像信息。

经过卷积后,后面可以连接一个归一化层,归一化就是将这些数据调整到同一个数量级,来加快梯度下降来求最优解的速度。

归一化之后会连接池化层,这里采用的池化法是最大池化法,对这个区域中最主要的信息进行提取。这样可以降低输出的大小,也可以降低过拟合。

在经过五个卷积层之后,会连接两个全连接层,全连接层主要对前面的连接进行伸展和扁平化,

第一个全连接层就是将不同大小的信息映射到更大的空间,来增加这个模型的表征泛化能力

第二个全连接层是为了更好的匹配网络的输出尺度,为维度变化做准备,也就是得到我们想输出的形式
两个卷积层的最后一层都是softmax层,主要对输出进行分类,最终将他们的分类的分数进行融合。

分数的融合有2种方法:

平均法:将两者的分数进行平均,最后得到结果。
线性SVM(支持向量机法)

空间流卷积网络(Spatial stream ConvNet)

介绍:输入为单张RGB图像,经过一系列卷积、全连接层后接一个sofrmax输出概率分布值。
特点:单个视频帧上操作,有效地表现了静止图像中的动作识别。其自身静态外表是一个很有用的线索,因为一些动作很明显地与特定的目标有联系。
本质:图像分类架构

时间流卷积网络(Temporal stream ConvNet)

输入:多帧图像间的光流(optical flow)
介绍:多帧图像间的光流(optical flow),同样经过一系列卷积、全连接层后接一个sofrmax输出概率分布值。(作者实验部分对比了不同帧数光流的效果,最后取光流数L=10).
这个输入准确地描述了视频帧之间的运动信息,这使得识别更加容易,并且网络不需要暗中估计运动。

空间流和时间流使用的CNN网络结构基本一致,除了光流的conv2中没有使用normalization层。
网络中最后的class score fusion将两个stream的score值融合在一起,文章一共尝试了:average、SVM这两种方法,最后貌似SVM效果更佳。

卷积网络的输入配置

深度学习-视频行为识别:论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos)_第2张图片
**光流(optical flow)*由一些displacement vector fields(位移矢量场,每个vector用dt表示)组成的,其中dt是一个向量,表示第t帧的displacement vector,是通过第t和第t+1帧图像得到的。dt包含水平部分dtx和竖直部分dty
Figure2中的(d)和(e)。因此如果一个video有L帧,那么一共可以得到2L个channel的optical flow,然后才能作为Figure1中temporal stream convnet网络的输入。
光流是时间网络的载体。

FIugre2中
(a)和(b)表示连续的两帧图像,动作是一个人想要去拿东西的动作,在图中用矩形框勾画了出来。
(c)动作动作轮廓的表征,图中有很多矢量,这些矢量组成的区域叫做密集光流(光流位移场)。光流位移场分为水平分量和垂直分量。
(d)位移矢量场(强度高相当于正值,强度低相当于负值)的水平分量dx。
(e)垂直分量dy。注意d和e是如何高亮出移动的手和弓。卷积网络输出包含了多流(3.1部分)。

对于空间尺寸为W×H,时序长度为L帧的视频片段。每个帧间光流会有水平方向分量dx和垂直方向分量dy。将L帧中的dx和dy堆叠起来就得到长度为2L的channel,则光流网络的输入就为W×H×2L。

时间网络就是对应多个连续视频帧的光流位移场来形成的

设定w和h是视频的宽和高,对于任意帧τ,temporal stream convnet卷积网络输入容量,其中τ表示任意的一帧:
请添加图片描述

光流估计方法

主要介绍了两种Iτ的计算方式,optical flow stacking和trajectory stacking,这二者都可以作为前面temporal stream convnet网络的输入

光流的堆叠方式(optical flow stacking)

深度学习-视频行为识别:论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos)_第3张图片
图3: 卷积网络从多帧光流中的输入来历。
左:光流叠加在连续多帧的同一个位置的采样位置矢量
右:轨迹叠加沿着轨迹采样矢量。帧和与之相对应的位移矢量都用相同的颜色表示。

光流堆叠(Optical flow stacking

将多个视频帧的光流通道叠加在一起 ,如上图左边,就是光流堆叠的过程,图中不同帧的相同位置有3个光流。

(一个密集光流可以看做是在连续的帧t和帧t+1之间的一个位移矢量场dt的集合。通过dt(u,v),我们表示在帧t的(u,v)位置的位移矢量,他表示移动到在下一个帧t+1相对应的点。矢量场的水平和垂直部分是dtx和dty,可以视为图像的通道(如图2所示),在卷积网络中可以用来识别。为了表示一系列帧之间的运动,我们叠加了L个连续帧的流通道dtxy,行成了2L的输入通道。更正式的)

用如下图分别得到水平和竖直方向的Iτ的计算公式,其中(u,v)表示任意一个点的坐标。因此 Iτ(u,v,c) 存的就是(u,v)这个位置的displacement vector
请添加图片描述
对于任意点(u.v),通道
请添加图片描述通过一系列L帧(如图3左图所示),编码了这个点的动作信息。

轨迹堆叠(Trajectory stacking)

如上图右边,沿着运动轨迹产生的光流。就是从第1到L帧中,轨迹是一个连续的过程(作者最后没有使用这种方式,

双向光流(Bi-directional optical flow):在一个帧的前向区间和一个帧的后向区间,堆叠一定数量的光流,然后来达到双向传递的效果。

平均流减法(Mean flow subtraction):对网络的输入进行零中心化(或者说是 光流可以人为操作进行位移调整),在论文中,是对每一个位移场距减去一个平均向量来实现平均流减法,这样做主要是纠正模型的非线性的问题

多任务学习

背景

不同于空间流卷积网络,它可以在大量静止图像数据集(例如ImageNet数据集)上进行预训练,
时间卷积网络需要在视频数据集上训练,对于视频动作识别可用的数据集非常少。
在我们的实验(第6部分)中,在UCF-101和HMDB-51数据集上训练,各自自由9500和3700个视频。

解决

数据集太少会导致过拟合,为了避免这种情况,卷积网络架构进行了修改,首先原来的网络(temporal stream convnet)在全连接层后只有一个softmax层,现在要变成两个softmax层,一个用来计算HDMB-51数据集的分类输出,另一个用来计算UCF-101数据集的分类输出。每一层都配有自己的损失函数,只在各自数据集的视频数据上操作。总体的训练损失由单个任务的损失和计算得出,通过后向传播计算网络权重。

目的

旨在学习一个(视频)表示,不仅可以应用于这个问题(例如HMDB-51分类),也适用于其他任务(如UCF-101分类)

你可能感兴趣的:(深度学习,音视频,网络)