摘要

我们研究了用于视频动作识别的判别训练深度卷积网络(ConvNets)的结构,挑战在于从静止帧和帧与帧之间的运动中捕捉到外观的互补信息。我们还致力于在数据驱动的学习框架中归纳出性能最好的手工特征。

我们的贡献是三个的。首先,我们提出了一种融合了时空网络的双流ConvNet架构。其次,我们证明了在多帧密集光流上训练的卷积网络能够在训练数据有限的情况下取得非常好的性能。最后,我们展示了多任务学习,应用于两个不同的动作分类数据集,可以增加训练数据量,并提高性能。

我们的架构是在UCF-101和HMDB-51的标准视频动作基准上进行训练和评估的,在这方面它可以与最先进的技术相竞争。它也大大超过了之前使用深度网进行视频分类的尝试。

介绍

识别视频中的人类行为是一项具有挑战性的任务,在研究界受到了大量的关注。与静态图像分类相比,视频的时间成分为识别提供了额外的(也是重要的)线索,因为基于运动信息可以可靠地识别许多动作。此外,视频为单个图像(视频帧)分类提供了自然的数据增强(抖动)。

在这项工作中,我们的目标是将深度卷积网络(ConvNets),一种最先进的静态图像表示,扩展到视频数据中的动作识别。这个任务最近在中通过使用堆叠的视频帧作为网络的输入来解决,但是结果明显比那些最好的手工制作的浅层表示要差得多。我们研究了一种基于两种独立的识别流(空间和时间)的不同架构,然后通过后期融合将它们结合在一起。空间流从静止视频帧执行动作识别,而时间流被训练以从稠密光流形式的运动中识别动作。两个流都实现为ConvNets。我们提出的结构与双流假说有关,根据该假说,人类视觉皮层包含两种通路:腹侧流(执行物体识别)和背侧流(识别运动);虽然我们没有进一步调查这种联系。

本文的其余部分组织如下,在1.1节中,我们回顾了使用浅层和深层结构的动作识别的相关工作。在第2节中,我们介绍了双流架构并指定了空间卷积网。第3节介绍了时间卷积网,特别是它是如何概括1.1节回顾的以前的架构的。 第4节开发了一个多任务学习框架,以便轻松地将训练数据结合在一起。实施细节在第5节中给出,性能在第6节中进行评估,并与最先进的技术进行比较。我们的实验在两个具有挑战性的数据集(UCF-101和HMDB-51)表明,两种识别流是互补的,我们的深度架构显著优于之前的深度学习框架,并与最先进的浅层表示竞争,尽管它是在相对较小的数据集上训练的。

(研究动机 动作识别很热门,与2d的图像分类相比,视频里的时序信息可以为识别工作提供重要线索。很多动作单独靠这个时序信息识别出来。使用视频数据的好处自带数据增强(物体动作变化,光改变等等)

之前有个工作把视频帧叠在一起一股脑扔给神经网络,索性把所有输入扔给他学习,结果比手工设计的特征还差。之前手工抽取特征是按轨迹抽取光流。抓住运动信息。两个神经网络用过late fusion结合在一起,在logits层面去做合并。Early fusion是在中间层的输入做合并。空间层面是单张图片,可以用imagenet预训练好的模型做初始化,更容易做优化。时间流拿光流做输入从而预测动作。类比人的视觉神经ventral stream(物体识别),一条路叫dorsal stream(运动识别))

相关工作

视频识别的研究很大程度上是由图像识别方法的进步推动的,图像识别方法经常被改编和扩展到处理视频数据。大量的基于局部时空特征的浅高维编码的视频动作识别方法。有些算法是检测稀疏的时空兴趣点,然后用局部时空特征描述兴趣点:方向梯度的直方图(HOG)和光流直方图(HOF)然后特征被编码到(BoF)表示,在多个时空网格上进行池化(类似于空间金字塔池化),并与SVM分类器结合。 在后来的工作中,它表明局部特征的密集采样优于稀疏兴趣点。

与在时空长方体上计算局部视频特征不同,最先进的浅层视频表示使用密集点轨迹。该方法首先引入,包括调整局部描述符支持区域,以便它们遵循密集轨迹,使用光流计算。运动边界直方图(MBH)是一种基于梯度的特征,分别计算光流的水平分量和垂直分量,在基于轨迹的管道中表现最好。几个特征的结合进一步提高了准确性。 基于轨迹的手工制作表示的最新改进包括全局(摄像机)运动补偿,以及Fisher向量编码或其更深层的变体的使用。

也有许多尝试来开发视频识别的深度架构。在大多数这些工作中,网络的输入是一组连续的视频帧,因此模型希望在第一层隐式学习与时空运动相关的特征,这可能是一项困难的任务。提出了一种用于视频识别的HMAX体系结构,第一层是预先定义的时空滤波器。后来,将[16]与一个空间组合起来HMAX模型,从而形成空间(腹侧样)和时间(背侧样)识别流。然而,与我们的工作不同的是,流被实现为手工制作和相当浅的(3层)HMAX模型。利用卷积RBM和ISA对时空特征进行无监督学习,然后将其插入判别模型中进行动作分类。视频卷积网络的区别端到端学习得到了解决,他们比较了几种用于动作识别的卷积网络架构。训练是在一个非常大的sports - 1m数据集上进行的,其中包括110万个YouTube上的体育活动视频。有趣的是,在单个视频帧上操作的网络与网络的表现类似,网络的输入是一堆帧。这可能表明学习的时空特征不能很好地捕捉运动。在UCF-101数据集上进行微调后,学习到的表示结果比手工制作的最先进的基于轨迹的表示精度低20%。

我们的时间流ConvNet作用于多帧密集光流,通常在能量最小化框架中通过求解位移场进行计算(通常在多图像尺度下)。我们使用了一种流行的方法,该方法基于强度及其梯度的常数假设,以及位移场的光滑性来计算能量。最近,提出了一种图像补丁匹配方案,它让人想起了深度ConvNets,但没有纳入学习。

(传统方法做法,先有图像上的突破把方法移植到视频。在图像领域都用sift这个feature,在视频领域用的是stip。第一种方法是在spatiotemporal的学习。第二种,基于dense point trajectories,利用视频帧点与点之间的轨迹信息。Dense trajectories 先算出来这个光流然后利用光流去找到对应的轨迹,从而在这轨迹周围抽取特征。改进dt,idt。传统的基于手工特征的学习方式与深度学习提取特征两个方向。局部提取信息演变成3d卷积神经网络。基于轨迹基于光流的方法演变成双流网络。连续帧输入给神经网络学习时空信息很难。Sport 1 m dataset相当大的数据集。视频帧一张一张输给2d网络跟把一系列视频帧输给3d网络是一样的进行时空学习的时候效果是一样的。这种方法没有抓住运动信息。在Sport 1 m dataset相当大的数据集训练出来的预训练模型,比手工特征降低百分之20个点。这就突出motion information。)

用于视频识别的双流架构

视频可以自然地分解为空间和时间分量。空间部分以单独的帧外观的形式,承载着视频中所描绘的场景和物体的信息。时间部分,以运动的形式跨越帧,传达了观察者(相机)和对象的运动。我们设计了相应的视频识别体系结构,将其分为两个流,如图1所示。每个流都使用深度卷积网实现,通过后期融合结合深度卷积网的分类最大分数。

空间流卷积网络对单个视频帧进行处理,有效地对静止图像进行动作识别。操作单独的视频帧,有效地执行动作识别从静止图像。静态外观本身是一个有用的线索,因为一些动作与特定的对象密切相关。事实上,正如将在第6节中展示的那样,从静止帧进行动作分类(空间识别流)本身就具有相当的竞争力。从一个空间ConvNet本质上是一个图像分类体系结构,我们可以建立在大规模图像识别方法的最新进展上,并在大型图像分类数据集上预训练网络,如ImageNet挑战数据集。接下来,我们描述时间流卷积网,它利用运动并显著提高准确性。

(视频可以拆分成空间部分和时间部分,空间部分是appearance信息,描述视频中的场景和物体,时间部分就是information信息,视频中的物体是怎么运动的。根据这种理解,我们提出视频理解框架,空间流去学空间特征,时间流去学时间特征,最后结果通过late fusion合并,得到最终预测。要么做个加权平均,要么做在得到的softmax层上的分数当作特征再去训练一个svm做分类。空间流一帧一帧输入图片,做图像分类。单帧图像输入可以image net做预训练,再去小的数据集微调效果好很多。用的是Alex net,五层conv两层fc最后softmax)

Optical flow ConvNets
在本节中,我们描述了一个ConvNet模型,它形成了我们架构的时间识别流。与第1.1节回顾的ConvNet模型不同,我们模型的输入是通过在几个连续帧之间叠加光流位移场形成的。这种输入明确地描述了视频帧之间的运动,使得网络不需要隐式地估计运动,从而使识别更加容易。我们考虑了几种基于光流的输入的变化,我们将在下面描述。

图2:光流。(a),(b):一对连续的视频帧,移动的手周围的区域用青色矩形勾画出来。(c):轮廓区域密集光流特写;(d):位移矢量场的水平分量dx(强度高对应正值,强度低对应负值)。(e):垂直分量dy. 注意(d)和(e)如何突出移动的手和弓。卷积网的输入包含多个流(第3.1节)。

ConvNet input confifigurations
光流叠加 一个稠密的光流可以看成是一组位移向量场dt在连续的两帧t和t + 1之间,我们用dt(u, v)表示坐标系t中点(u, v)的位移向量,它将该点移动到下一个坐标系t + 1中的对应点。向量场的水平和垂直分量dxt和dyt,可以被视为图像通道(如图2所示),非常适合使用卷积网络进行识别。为了表示在一系列帧中的运动,我们将L个连续帧的流量通道dxyt叠加起来,总共形成2L个输入通道。更正式地说,设w和h为视频的宽度和高度;然后任意坐标系τ的ConvNet输入体积Iτ∈Rw×h×2L构造如下
对于任意点(u, v),信道Iτ (u, v, c), c = [1;2L]编码该点在L帧序列上的运动(如图3-左所示)。

轨迹叠加 受基于轨迹的描述的启发,另一种运动表示方法将在几帧中相同位置采样的光流替换为沿着运动轨迹采样的光流。在这种情况下,与坐标系τ对应的输入体积Iτ采用如下形式:

其中pk为轨迹上的第k点,它从坐标系τ中的(u, v)位置开始,由以下递归关系定义:

与输入体积表示(1)相比,通道Iτ (u, v, c)存储位置(u, v)的位移矢量,输入体积(2)存储沿轨迹的位置pk采样的矢量(如图3-右所示)。

图3:多帧光流的卷积输入推导。左:光流叠加(1)对多帧中相同位置的位移向量d进行采样。(2)对沿着轨迹的向量进行采样。框架和相应的位移向量用相同的颜色表示。

双向光流 光流表示(1)和(2)处理的是前向光流,即t帧的位移场dt表示其像素在下一帧t + 1中的位置。 考虑双向光流的扩展是很自然的,它可以通过计算反方向的一组额外的位移场得到。然后,我们将L/2在帧τ和τ之间向前流动的L/2 +L/2和L/2在帧τ和L/2之间向后流动的L/2叠加,构造一个输入体积Iτ。因此,输入Iτ具有相同的信道数(2 l)。可以使用(1)和(2)两种方法中的任何一种来表示流。

平均流量减法  一般来说,对网络输入进行零定心是有益的,因为它允许模型更好地利用整流非线性。在我们的例子中,位移矢量场分量既可以是正的,也可以是负的,并且自然地以这种意义为中心,即在各种各样的运动中,一个方向的运动和相反方向的运动一样可能发生。然而,给定一对帧,它们之间的光流可以由特定的位移控制,例如由相机运动引起的位移。摄像机运动补偿的重要性已经在[10,26]中得到强调,其中估计了一个全局运动分量,并从密集流中减去。在我们的例子中,我们考虑一种更简单的方法:从每个位移场d中减去它的平均向量。

结构 上面我们描述了将多个光流位移场组合成单个体积Iτ∈Rw×h×2L的不同方法。考虑到ConvNet需要固定大小的输入,我们从Iτ中采样一个224 × 224 × 2L的子体积,并将其传递给网络作为输入。隐藏层的配置与空间网络中使用的基本相同,如图1所示。测试类似于空间卷积网,并在第5节详细描述。

3.2时间ConvNet架构与以前表示的关系

在本节中,我们将我们的时间卷积网架构放在现有技术的背景下,与第1.1节中回顾的视频表示相联系。基于特征编码的方法通常结合几种时空局部特征。这些特征是由光流计算出来的,因此可以用我们的时间卷积网加以推广。

事实上,HOF和MBH局部描述符基于光流方向或其梯度的直方图,可以从位移场输入(1)中使用单个卷积层(包含方向敏感滤波器)获得,然后是整流层和池化层。从光流梯度计算[10]的运动学特征(散度、旋度和剪切),同样可以被我们的卷积模型捕获。最后,通过叠加轨迹上的位移向量计算轨迹特征[29],对应于轨迹叠加(2)。在3.3节中,我们可视化卷积滤波器,学习在第一层的时间网络。这进一步证明了我们的表示概括了手工制作的特性。

在深度网络方面,[16]的双流视频分类架构包含两个HMAX模型,这两个模型是手工制作的,深度低于我们的区别训练ConvNets,可以看作是HMAX的一个可学习的概括。[12,14]的卷积模型没有对空间和时间识别流进行解耦,而是依赖于从数据中学习的运动敏感卷积滤波器。在我们的情况下,运动是明确表示使用光流位移场,计算基于恒定的强度和流的平滑的假设。将这些假设融入到ConvNet框架中可能会提高端到端基于ConvNet的方法的性能,是未来一个有趣的研究方向。

3.3学习卷积滤波器的可视化

图4:在10个堆叠光流上学习的第一层卷积滤波器。可视化被分为96列和20行:每列对应一个过滤器,每行对应一个输入通道。在图4中,我们在UCF-101数据集上训练了时域卷积网的第一层卷积滤波器。96个滤波器中的每一个都有一个7 × 7像素的空间接收域,并具有跨度20个输入通道,对应于水平(dx和垂直(dy) 10个叠加光流位移场的分量d。

可以看到,一些滤波器计算光流的空间导数,捕捉运动如何随图像位置的变化,这推广了基于导数的手工描述符(例如:MBH)。其他滤波器计算时间导数,捕捉运动随时间的变化。

4多任务学习

与空间流卷积网不同的是,空间流卷积网可以在大型静止图像分类数据集(如ImageNet)上进行预训练,而时间卷积网需要在视频数据上进行训练——而用于视频动作分类的可用数据集仍然相当小。在我们的实验中(第6节),训练在UCF-101和HMDB-51数据集上进行,这两个数据集分别只有:9.5K和3.7K的视频。为了减少过拟合,可以考虑将两个数据集合并为一个;然而,由于类集之间的交集,这并不简单。一种选择(我们稍后评估)是只添加来自类的图像,它们不会出现在原始数据集中。但是,这需要手动搜索此类类,并限制了额外训练数据的数量。

结合多个数据集的更有原则的方法是基于多任务学习[5]。它的目的是学习一种(视频)表示,这不仅适用于所讨论的任务(例如HMDB-51分类),但也用于其他任务(例如UCF-101分类)。额外的任务充当正则化器,并允许利用额外的训练数据。

在我们的例子中,我们修改了ConvNet架构,使它在最后一个全连接层上有两个softmax分类层。一个softmax层计算HMDB-51分类得分,另一个-ucf - 101的分数。每一层都配备了自己的损失函数,它只对来自各自数据集的视频起作用。整体训练损失计算为单个任务损失的总和,网络权值导数通过反向传播得到。

information。

主体部分(双流网络结构和如何使用光流)

视频可以拆分成空间部分和时间部分,空间部分是appearance信息,描述视频中的场景和物体,时间部分就是information信息,视频中的物体是怎么运动的。根据这种理解,我们提出视频理解框架,空间流去学空间特征,时间流去学时间特征,最后结果通过late fusion合并,得到最终预测。要么做个加权平均,要么做在得到的softmax层上的分数当作特征再去训练一个svm做分类。空间流一帧一帧输入图片,做图像分类。单帧图像输入可以image net做预训练,再去小的数据集微调效果好很多。用的是Alex net,五层conv两层fc最后softmax

时间流

输入是光流,光流长什么样,怎么抽取光流,怎么预处理光流,光流输入的维度是多少。

光流拆分成两个方向,一个是水平方向的位移和一个竖直方向的位移。输入是240*320*3,光流图的维度是240*320*2,每个像素都有值,不运动幅度为0。两张连续帧一张光流图,以此类推

如何使用光流

前后帧算出光流通过2d神经网络,还是在做图像分类。要学习时序信息,需要像手工特征提取更多的帧,通向时间流网络的输入是多个光流图叠加在一起的。第一种方法直接把光流图叠加在一起,另一种根据光流的轨迹,在轨迹上进行光流数值的叠加。图三,左边直接把光流图叠加在一起,resize224*224的这个维度,光流图直接stack起来,我们现在的的网络每次取输入都是在对应的同样的点的位置上取光流,这个点的下一帧往哪走。第二种是p1点和p1点另一帧移动到的位置。而不是每次在p1的位置上取。很好地利用了光流的信息。但实验对比出来却差强人意,左边的方式要好于右边(为什么基于轨迹的方法反而效果差了呢)bi-directional optical flow方式,双向光流(操作就跟pyramid,cascade级联操作一样都是一种非常保险的方式,一般都会涨点)一二两种方法只做了前向的光流计算,反过来算也是合理的(比如篮球从a到b,也可以b回到a)做对比,取l帧长度的光流视频,前半段算前向光流,后半段算后向光流,光流还是2Lchannel。光流图是w*h*2l张量大小。时间流网络跟空间流一样,5层conv借了两层fc。这篇文章里作者是11帧就会得到十张光流图,channel数就是20.先叠加水平方向的位移在叠加竖直方向的位移。最后的维度是224*224*2l,softmax分数做个平均,如果拿ufc101,则softmax就是1*101的向量,时间流的输出也是1*101的向量,取平均就是把两个向量加起来除以2,最后在做argmax操作,哪个分数高就是哪个类。通过后面的实验可以看到,多家一个时间流网络,结果大大提高。

实现细节

测试,等间距取25帧,对每一帧做10crop。具体来说,这是你取的帧,取四个边角,corp比较大,很大部分也有重叠的,再取中间,一张图变成五张图,再把图像反转,再取四个角和中间,一张图变成十张图。对于视频25帧就变成了250个crop。250帧得到的结果直接取平均,得到最终的预测。它同样也是取25帧,然后从25帧的位置开始往后连续的取11帧,11帧抽取光流,把光流抽给时间流神经网络,最后把结果取平均。然后当空间流和时间流取完都得到最终的预测结果,在把两个流的结果做一个late fusion加到一起除以2得到最终的双流网络预测结果。做测试,2d网络主要用这种测试方法,250view。到3d网络测试方式也改变了,用30view。Vision transformer测试又很多。

抽取光流是个非常耗时的事情,ucf由10000个视频,10000*10*30*0.06.这是第一个问题

第二个问题每一个点都会有光流的这个位移值,他是个密集的表示,要把他密集的表示存下来,空间特别大。Ucf101存下来需要1.5t的硬盘空间。思考到跟rgb图片一样做一个图片压缩,光流的值重新rescale到了0到255之间存成jpeg的图片。还有很多工作改进光流,或者舍弃光流,选择3d网络的。)

5实现细节

ConvNets confifiguration.我们的时空ConvNets的层结构如图1所示。它对应[3]的CNN-M-2048架构,与[31]的网络类似。所有隐藏权值层均使用整改(ReLU)激活函数;Maxpooling是在3×3空间Windows上跨2步执行的;本地响应规范化使用与[15]相同的设置。空间和时间卷积网配置之间的唯一区别是,我们从后者中去掉了第二层规范化层,以减少内存消耗。
Training.训练过程可以看作是[15]对视频帧的调整,对于空间和时间网络通常是相同的。网络权值使用带动量的小批量随机梯度下降法学习(设置为0.9)。在每次迭代中,通过采样256个训练视频(均匀地跨类)来构造256个样本的小批,从每一个视频中随机选择一帧。在空间网络训练中,从选定的帧中随机裁剪出一幅224 × 224的子图像;然后它会经历随机水平翻转和RGB抖动。视频事先被重新缩放,所以帧的最小边等于256。我们注意到,与[15]不同的是,子图像是从整个帧采样的,而不仅仅是它的256 × 256中心。在时间网络训练中,我们为所选训练帧计算一个光流体积I,如第3节所述。从这个体积中,一个固定大小的224 × 224 × 2L输入被随机剪切和翻转。学习速率初始设置为0.01。即从头开始训练ConvNet时,50K迭代后速率变为0.001,70K迭代后速率变为0.0001,80K迭代后停止训练。在微调场景中,14K迭代后速率更改为0.001,在20K迭代后停止训练。
Testing在测试时间,给定一段视频,我们以相等的时间间隔采样固定帧数(在我们的实验中为25帧)。通过裁剪和翻转四个角和帧的中心,我们从每一帧中获得10个ConvNet输入[15],整个视频的类分数然后通过平均抽样帧和其中的庄稼的分数得到。
Pre-training on ImageNet ILSVRC-2012.当对空间卷积网进行预训练时,我们使用上述相同的训练和测试数据增强(裁剪、翻转、RGB抖动),这在ILSVRC-2012验证集上产生了13.5%的top-5错误,相比之下,类似网络中[31]报告的错误为16.0%。我们认为,改进的主要原因是对整个图像的ConvNet输入进行采样,而不是只对其中心进行采样。
Multi-GPU training我们的实现来自于公开的Caffe工具箱[13],但是包含了许多重要的修改,包括在单个系统中安装多个gpu的并行训练。我们利用数据并行性,将每个SGD批处理拆分为多个批处理gpu。在4张NVIDIA Titan卡的系统上训练一个短暂的ConvNet需要1天,比单gpu训练的速度快3.2倍。
Optical flow使用OpenCV工具箱中现成的[2]GPU实现来计算。尽管计算时间很快(一对帧为0.06s),但如果实时完成,仍然会引入瓶颈,所以我们在训练前预先计算了流。为了避免将位移场存储为浮点数,流动的水平和垂直分量被线性缩放到[0,255]范围,并使用JPEG压缩(解压后,流动被重新缩放到原来的范围)。这将UCF-101数据集的流大小从1.5TB减少到27GB。
6评估
Datasets and evaluation protocol.对UCF-101[24]和进行评估HMDB-51[16]动作识别基准,是目前最大的带注释的视频数据集之一。UCF-101包含13K视频(平均180帧/视频),注释成101个动作类;HMDB-51包含6.8K的51个动作的视频。对于所有数据集,评估方案是相同的。组织者对训练和测试数据进行了三次分类,并通过分类的平均准确率来衡量成绩。每次UCF-101拆分包含9.5K训练视频;一个HMDB-51分裂包含3.7K的训练视频。我们首先在UCF-101数据集的第一个分割上比较不同的架构。为了与最先进的技术进行比较,我们遵循标准的评估协议,报告三次拆分的平均准确率
ucf - 101和HMDB-51。
Spatial ConvNets.首先,我们测量了空间流卷积网的性能。考虑三种场景:(i)在UCF-101上从零开始训练,(ii)在ILSVRC-2012上进行预训练,然后在UCF-101上进行微调,(iii)保持预训练网络固定,只训练最后一层(分类)。对于每一种设置,我们都尝试将dropout正则化率设置为0.5或0.9。从表1a所示的结果可以清楚地看出,训练仅仅在UCF-101数据集上进行卷积网络会导致过拟合(即使有很高的dropout),并且不如在大型ILSVRC-2012数据集上的预训练。有趣的是,与只训练最后一层相比,对整个网络的微调只能带来边际改善。在后一种情况下,更高的辍学率会导致学习过度规范化,导致更差的准确性。在接下来的实验中,我们选择在预先训练好的ConvNet上训练最后一层。
Temporal ConvNets在评估了空间上的ConvNet变异之后,我们现在转向时间上的卷积网架构,并评估输入配置的效果,描述在第3.1节。特别地,我们测量了以下的影响:使用多个(L ={5,10})堆叠光流;轨迹叠加;意味着位移减法;使用双向光流。这些架构是在UCF-101数据集上从零开始训练的,因此我们使用0.9的高辍学率来帮助改善泛化。结果如表1b所示。首先,我们可以得出结论,在输入中叠加多个(L > 1)位移场是非常有益的,因为它为网络提供了长期的运动信息,比一对帧之间的流动更有分辨力(L = 1设置)。当输入流量从5个增加到10个时,改进幅度较小,所以在接下来的实验中,我们将L保持在10。其次,我们发现均值减法是有帮助的,因为它减少了帧之间的整体运动的影响。我们在接下来的实验中使用它作为默认值。不同堆垛技术之间的差异很小;结果表明,光流叠加比轨迹叠加性能好,使用双向光流只比单向向前流略好。最后,我们注意到时态
ConvNets的表现明显优于空间ConvNets(表1a),这证实了运动信息对动作识别的重要性。我们还实现了[14]的“慢融合”架构,这相当于将ConvNet应用到RGB帧堆栈(在我们的例子中是11帧)。当在UCF-101上从头训练时,它达到了56.4%的准确率,比从头训练的单帧架构更好(52.3%),但仍远低于从零开始训练的网络光流。这表明,虽然多帧信息很重要,但以适当的方式将其呈现给ConvNet也是很重要的。
Multi-task learning of temporal ConvNets.由于训练集的规模较小,在UCF-101上训练时域卷积网络具有挑战性。更大的挑战是训练ConvNet在HMDB-51,其中每次训练分割比UCF-101小2.6倍。在这里,我们评估了增加HMDB-51有效训练集大小的不同选择:(i)微调在UCF-101上预先训练的时间网络;(ii)从UCF-101添加78个类,这些类是手动选择的,这样这些类和原生的HMDB-51类之间就不会有交集;(iii)使用多任务公式(第4节)学习真空。结果见表2。不出所料,这是有益的利用完整的(所有分割结合)UCF-101数据进行训练(或通过借用图像显式地,或通过训练前隐式地)。多任务学习表现最好,因为它允许训练过程利用所有可用的训练数据。
我们还在UCF-101数据集上试验了多任务学习,通过训练一个网络来对完整的HMDB-51数据(所有拆分合并)和UCF-101数据(单个拆分)进行分类。在UCF-101的第一次拆分中,准确率被测量为81.5%,这比使用相同设置(但没有额外的HMDB分类任务)获得的81.0%有所提高(表1b)。
Two-stream ConvNets.这里,我们评估了完整的两流模型,它结合了两种识别流。合并网络的一种方法是在两个网络的全6或全7层上训练一个全连接层的联合堆栈。然而,由于过拟合,这在我们的案例中是不可行的。因此,我们使用平均或线性支持向量机来融合softmax评分。从表3我们得出结论:(i)时间和空间识别流是互补的,因为它们的融合在两者上都有显著提高(比时间网络提高6%,比空间网络提高14%);(ii)基于svm的softmax分数融合优于平均融合;(iii)在ConvNet融合的情况下,使用双向流动是不利的;(iv)使用多任务学习训练的时间卷积网,单独和与空间网络融合时表现最佳。
Comparison with the state of the art最后,我们将UCF-101和HMDB-51的三个分支与目前的研究水平进行了比较。为此,我们使用了一个空间网络,在ILSVRC上预训练,最后一层在UCF或HMDB上训练。采用多任务学习方法对时间网络进行UCF和HMDB训练,采用单向光流叠加均值减法计算输入。两种网络的softmax评分通过平均或支持向量机进行组合。从表4可以看出,单是我们的空间和时间网络就远远超过了深度架构[14,16]。两种网的组合进一步提高了结果(与上面的单裂实验一致),并可与最近最先进的手工制作模型相媲美[20,21,26]
Confusion matrix and per-class recall for UCF-101 classifification.在图5中,我们展示了使用我们的双流模型的UCF-101分类混淆矩阵,它在第一次数据集分割(表3的最后一行)上达到了87.0%的准确率。我们还在图6中可视化了相应的每个类的召回率。
最糟糕的类召回对应的是锤击类,它与头部按摩和BrushingTeeth类。我们发现这是由两个原因造成的。首先,空间ConvNet混淆用头部按摩捶打,这可能是由于两门课上都有大量的人脸。第二,时间卷积网络混淆了锤击和刷牙,因为这两个动作都包含重复的运动模式(手上下移动)

实验部分

表一

分别做空间流和时间流的消融实验

空间流,随机初始化从头训练的话,无论dropout ratio多大,效果只有50左右。用了预训练网络效果明显提升。预训练加微调,锁住只训练最后一层不用担心过拟合。Dropout=0.5效果最好,0.9丢失太多信息,网络不好训练。使用trick和数据集逐渐增大,使用预训练加微调。时间流 到底简单堆叠的方式还是基于轨迹堆叠的方式好。作者这边的基线模型只用一张光流跟其他的效果差6个点,逐渐增加光流图的数量,用得越多越好。没有继续上涨可能是饱和了或者gpu不够了。当l=10时,对比简单堆叠和轨迹堆叠,双向光流堆叠,pyramid和cascade方式会涨点。做完消融实验,时间流和空间流的网络结构就定下来了。双流网络对比其他方法。最好的手工特征IDT,idt加全局信息(encoding)更适合做视频。对比之前的深度学习视频分析的方法。空间流运用了imagenet预训练网络模型,效果到73比之前的好很多,时间流到83。对于时间网络来说,他的输入是光流,他的第一层接受维度是20,当时作者并没有用imagenet他这个预训练模型,单凭时间流网络把精度提高那么高。把两个网络简单结合起来,用取平均的方式去做late fusion结果已经可以达到87和58,完全超过之前最好的手工特征86和57,再次用svm训练这个特征在ucf达到88。双流网络在视频理解的地位等同于alexnet和vit在图像分类中的地位。)

7结论与改进方向

我们提出了一种基于卷积网络的具有竞争性能的深度视频分类模型,该模型融合了独立的时空识别流。目前看来,在光流上训练时序卷积网(这里)明显优于在原始堆叠帧[14]上训练。后者可能太具有挑战性,并且可能需要更改架构(例如,与[30]深度匹配方法的组合)。尽管使用光流作为输入,我们的时间模型不需要大量的手工制作,因为流的计算方法是基于恒定和平滑的一般假设。

正如我们所展示的,额外的训练数据对我们的temporal ConvNet是有益的,所以我们计划在大型视频数据集上训练它,例如最近发布的[14]集合。然而,由于训练数据的巨大量(多个tb),这本身就构成了一个重大的挑战。

仍然存在一些最先进的浅层表示[26]的基本成分,这是我们当前架构所缺少的。最突出的是局部特征在时空管上的汇聚,以轨迹为中心。即使输入(2)沿着轨迹捕获光流,我们网络中的空间池化并没有考虑到轨迹。另一个潜在的改进领域是显式处理相机运动,在我们的情况下,这是由平均位移减法补偿。

结论

提出深度学习的方法与手工特征的方法打成平手,主要是有一个时间流和空间流都用的卷积神经网络,时间流的效果非常好,是直接比在视频帧上训练的网络要好而且在没有预训练网络的情况下。他们应用了光流既不需要3d网络,也不需要应用lstm网络,或者别的模型上的改动,可以利用现有的2d网络,只是把第一层的输入维度变一下就可以。Flow的计算用常见的方法计算,也不需要手工调整。

三个工作方向,既然空间流用了imagenet预训练模型之后效果会更好,时间流利用预训练模型效果会不会更好,利用了更多的光流的数据网络会不会训练的更好。作者也提到抽光流时间大存储大,对模型训练io速度非常有挑战性。

第二个方向为什么基于轨迹的方法为什么表现得不好,按道理基于轨迹的方法应该更合理才对(trajectory-pooled features)沿着轨迹去提取特征,效果非常显著,在ucf上做。最后的效果在90多

第三个方向

这些视频里都有相机自带的移动而不是物体的移动,相机的移动导致影响光流信息导致计算不准。影响网络对动作上的识别,作者是用了简单的方式,直接减去均值的方式,大概解除了全局相机移动带来的影响但是不够,手工特征考虑很多这方面的影响,深度学习方面也要考虑。

个人总结

之前的方法因为没有用运动信息所以导致即使用了深度学习,还不如手工传统特征好,所以用这个运动信息,光流是其中一种。它主要告诉了另外的一个道理。当你发现神经网络不能解决什么问题的时候,改模型和改目标函数是没有办法解决问题的。给模型一个先验信息他学不到帮他学,可以大幅度简化任务。双流网络的想法,当一个网络解决不了的时候,会想到尝试使用别的数据,别的模型。来做这种多流网络往往效果越明显,这些网络可以互补。我们要做data centric的ai,以数据为主,在真实的应用场景,收集更多的数据,有效的解决模型的泛化问题还有模型的公平性偏见啊一系列的问题都可以通过在做数据来得到有效的提高,质感模型往往做不到。双流网络可以想象成多模态学习的先例,rgb图像和光流的图像都属于不同的模态,这个如果粗略的对比一下,跟cilp也有点像(就是上面是文本,下面是图片,算一个相似性)双流网络就是上面是rgb下面是光流,最后把他俩的结果加一下,通过多模态的学习,双流网络或者利用光流会在视频理解里或者表征学习领域再次发光发热

想法:从不同模态和域的角度出发提取特征

视频识别的研究很大程度上是由图像识别方法的进步推动的,图像识别方法经常被改编和扩展到处理视频数据。可以把图像提取特征的方法挪到视频里)

     

Two-Stream Convolutional Networksfor Action Recognition in Videos——学习笔记相关推荐

  1. Two-Stream Convolutional Networks for Action Recognition in Videos算法笔记

    论文:Two-Stream Convolutional Networks for Action Recognition in Videos 链接:https://arxiv.org/abs/1406. ...

  2. 视频动作识别--Two-Stream Convolutional Networks for Action Recognition in Videos

    Two-Stream Convolutional Networks for Action Recognition in Videos NIPS2014 http://www.robots.ox.ac. ...

  3. 双流网络: Two-Stream Convolutional Networks for Action Recognition in Videos

    Contents Introduction Two-stream architecture for video recognition Evaluation Enlightenment Referen ...

  4. 【论文模型讲解】Two-Stream Convolutional Networks for Action Recognition in Videos

    文章目录 前言 0 摘要 1 Introduction 1.1 相关工作 2 用于视频识别的双流结构 3 光流卷积神经网络(时间流) 3.1 ConvNet 输入配置 4 实现细节 4.1 测试 4. ...

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

    这里写目录标题 视频的行为识别 前言 背景 内容组成 主要贡献 算法介绍 网络结构 双流(two stream)网络结构 空间流卷积网络(Spatial stream ConvNet) 时间流卷积网络 ...

  6. Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读

    Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读 论文:Two-Stream Convolution ...

  7. 【论文学习】Two-Stream Convolutional Networks for Action Recognition in Videos

    Two-Stream Convolutional Networks for Action Recognition in Videos 原文地址 粗略翻译 摘要: 我们研究了视频中用于训练动作识别的深度 ...

  8. 【视频分类论文阅读】Two-Stream Convolutional Networks for Action Recognition in Videos

    论文是视频分类的开山之作,采用了一个双流网络,是空间流和事件流共同组成的,网络的具体实现都是CNN,空间流的输入是静止的图片,来获取物体形状大小等appearance信息,时间流的输入是多个从两帧之间 ...

  9. Temporal Segment Networks for Action Recognition in Videos 用于动作识别的时序分割网络

    Temporal Segment Networks for Action Recognition in Videos 用于动作识别的时序分割网络 本文原创,欢迎转载 https://blog.csdn ...

  10. 译:Two-stream convolutional networks for action recognition in videos

    该篇文章为视频识别十分经典的一篇论文也是入门文章,开创了比较经典的双流(时间流+空间流)神经网络,本人发现很多大神博主翻译的论文不是特别完整,故按照原文与个人理解整理完整翻译见下. 摘要:我们研究了用 ...

最新文章

  1. FFmpeg代码实现视频剪切
  2. Oracle分析函数FIRST_VALUE、LAST_VALUE
  3. 游戏计算机性能要求,游戏主机只能玩游戏?只要性能够强悍,什么需求都能满足!...
  4. HDU4279(2012年天津网络赛---数论分析题)
  5. kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
  6. 用cookie实现叶卡的记忆功能
  7. Java笔记(三)内部类,容器,泛型和类型安全的容器,迭代器
  8. android flutter mac,android flutter mac 开发环境变量配置
  9. 现代通信原理2.2:信号时间平均算子与信号物理参数
  10. [连接 Android ]-使用 adb 命令行通过数据线进入安卓手机系统
  11. AD域详细介绍和部署
  12. K8S中使用显卡GPU(N卡) —— 筑梦之路
  13. redhat各版本和下载地址
  14. 使用vector创建一个二维数组(一)
  15. MySQL导入数据库1118错误解决方案[ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB
  16. python——洗牌算法
  17. 计算机c盘属性不显示安全选项,Windows10系统磁盘属性没有安全选项卡(图文)
  18. 应届毕业生社会踏入社会需要注意的几点社会经验总结
  19. 知到网课中国饮食文化单元测试试题答案总结
  20. HY的Web前端周记 Day1

热门文章

  1. 线性不可分转可分----低维空间转高维空间
  2. x5开源库后续知识点
  3. 挪威科技大学计算机硕士,挪威科技大学硕士留学申请条件
  4. 如何修改anaconda的文件目录_Anaconda安装的常见错误和python的基础知识
  5. java中的 jsp是啥
  6. android系统 vender添加自定义的预编译的应用程序
  7. Excel文本自动换行
  8. mysql .frm文件丢失_【1.1】mysql frm文件丢失(ibd文件丢失)
  9. 盯盯拍罗勇:公司就是我最好的产品
  10. 用three.js渲染上海外滩模型