24.Two-Stream Convolutional Networks for Action Recognition in Videos

Two-Stream Convolutional Networks for Action Recognition in Videos

用于视频中动作识别的双流卷积网络

摘要

我们研究了经过区别训练的深度卷积网络(ConvNets)的体系结构,用于视频中的动作识别。挑战在于从静止帧和帧间的运动中捕获关于外观的补充信息。我们还旨在在数据驱动的学习框架中概括性能最佳的手工制作功能。

我们的贡献是三倍的。首先,我们提出了一个包含空间和时间网络的双流ConvNet架构。其次,我们证明了尽管训练数据有限,但在多帧密集光流上训练的ConvNet能够实现非常好的性能。最后,我们展示了应用于两个不同动作分类数据集的多任务学习,可用于增加训练数据量并提高两者的性能。

我们的架构在UCF-101和HMDB-51的标准视频操作基准上进行了训练和评估,在此基础上它与最先进的技术相比均大大超过了之前应用深度学习进行视频分类的尝试。

 

  1. 引言

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

在这项工作中,我们的目标是将深度卷积网络(ConvNets)[19],一种静态图像表示[15]扩展到视频数据中的动作识别。最近在[14]中通过使用堆叠视频帧作为网络的输入来解决该任务,但结果明显比最佳手工制作的浅表示更差[20,26]。我们基于两个单独的识别流(空间和时间)研究不同的架构,然后通过后期融合进行组合。空间流从静止视频帧执行动作识别,同时训练时间流以识别来自密集光流形式的运动。两个流都实现为ConvNets。分离空间和时间网络还允许我们通过在ImageNet数据集[1]上预先训练空间网来利用大量带注释的图像数据的可用性。我们提出的结构与双流假设[9]有关,根据该假设,人类视觉皮层包含两种路径:腹侧流(执行物体识别)和背侧流(识别运动);虽然我们在这里不再进一步研究这种联系。

本文的其余部分安排如下。在第1.1节我们使用浅层和深层架构识别有关动作识别的相关工作。在第2节中我们介绍双流架构并指定空间卷积网络。第3节介绍了时间卷积网络,特别是它如何扩展了1.1节中所述的先前架构。在第4节中开发了一个多任务学习框架,以便在多个数据集上轻松组合训练数据。实施细节在第5节中给出,性能在第6节中评估并与现有技术进行比较。我们对两个具有挑战性的数据集(UCF101 [24]和HMDB-51 [16])的实验表明,两个识别流是互补的,我们的深层架构明显优于[14]并且与现有技术的浅层表示[20,21,26]相比,尽管通过训练相对较小的数据集。

 

1.1相关工作

视频识别研究主要受图像识别方法的进步驱动,图像识别方法经常被调整和扩展以处理视频数据。一大类视频动作识别方法基于局部时空特征的浅层高维编码。例如,[17]的算法在于检测稀疏的时空兴趣点,然后使用局部时空特征描述:定向梯度直方图(HOG)[7]和光流直方图(HOF)。然后将这些特征编码到Bag Of Features(BoF)表示中,该表示汇集在几个时空网格上(类似于空间金字塔池)并与SVM分类器结合。在后来的工作[28]中,显示局部特征的密集采样优于稀疏的兴趣点。

最先进的浅视频表示[20,21,26]不是使用时空长方体计算局部视频特征,而是利用密集点轨迹。这种方法首先在[29]中引入,包括调整局部描述符支持区域,以便它们遵循使用光流计算的密集轨迹。基于轨迹的管道中的最佳性能是通过运动边界直方图(MBH)[8]实现的,这是一种基于梯度的特征,分别根据光学流的水平和垂直分量计算。显示了几个功能的组合,以进一步提高准确性。最近对基于轨迹的手工制作表示的改进包括全局(相机)运动的补偿[10,16,26],以及使用Fisher矢量编码[22]([26]中)或其更深层变体[23] (在[21]中)。

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

扫描二维码关注公众号,回复: 4315050 查看本文章

我们的时间流ConvNet在多帧密集光流上运行,通常通过求解位移场(通常在多个图像尺度)在能量最小化框架中计算。我们使用了一种流行的方法[2],它根据强度及其梯度的恒定性假设以及位移场的平滑度来表达能量。最近,[30]提出了一种图像补丁匹配方案,它让人联想到深层ConvNets,但不包含学习。

 

2用于视频识别的双流架构

 


视频自然可以分解为空间和时间组件。空间部分以单个帧外观的形式携带有关视频中描绘的场景和对象的信息。时间部分以帧的运动形式传达观察者(相机)和物体的运动。我们相应地设计了视频识别架构,将其分为两个流,如图1所示。每个流使用深度ConvNet实现,其softmax分数通过后期融合组合。我们考虑两种融合方法:对堆叠的L2归一化softmax分数进行平均和训练多类线性SVM [6]作为特征。

空间流ConvNet在各个视频帧上运行,有效地从静止图像执行动作识别。静态外观本身是一个有用的线索,因为某些动作与特定对象密切相关。事实上,正如将在第6节中所示,来自静止帧(空间识别流)的动作分类本身是相当有竞争力的。由于空间ConvNet本质上是一种图像分类架构,我们可以在大规模图像识别方法[15]的最新进展的基础上,并在大型图像分类数据集上预先训练网络,例如ImageNet挑战数据集。细节见第5节.接下来,我们描述时间流ConvNet,它利用运动并显著提高准确性。

 

3光流控制

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

3.1 ConvNet输入配置


光流堆叠。密集光流可以看作连续帧对t和t+1之间的一组位移矢量场dt。通过dt(u,v)我们表示在帧t中的点(u,v)处的位移矢量,其将点移动到下一帧t+1中的对应点。矢量场的水平和垂直分量,dxt和dyt可以看作图像通道(如图2所示),非常适合使用卷积网络进行识别。为了表示帧序列中的运动,我们堆叠L个连续帧的流动通道dx,yt以形成总共2L输入通道。更正式地说,让w和h成为视频的宽度和高度;然后,如下构造任意帧τ的ConvNet输入体积Iτ∈Rw×h×2L:


对于任意点(u,v),通道Iτ(u,v,c),c = [1; 2L]在L帧序列上对该点处的运动进行编码(如图3左侧所示)。


轨迹堆叠。受基于轨迹的描述符[29]启发的另一种运动表示取代了沿着运动轨迹采样的流动,在几个帧的相同位置采样的光流。在这种情况下,对应于帧τ的输入体积Iτ采用以下形式:


其中pk是沿着轨迹的第k个点,它从帧τ中的位置(u,v)开始,并由以下递归关系定义:

与(1)相比,其中通道Iτ(u,v,c)存储位置处的位移矢量( u,v),(2)存储沿轨迹在位置pk处采样的矢量(如图3右侧所示)。

双向光流。光流表示(1)和(2)处理前向光流,即帧t的位移场dt指定其像素在下一帧t+1中的位置。考虑对双向光流的扩展是很自然的,这可以通过计算另一组反向的位移场来获得。然后,我们通过在帧τ和τ+ L/2之间堆叠L/2前向流以及在帧τ-L/2和τ之间的L/2后向流来构造输入体积Iτ。因此,输入Iτ具有与之前相同数量的通道(2L)。流可以使用两种方法(1)和(2)中的任何一种来表示。

平均流减法。通常有利的是对网络输入进行零中心化,因为它允许模型更好地利用整个非线性。在我们的例子中,位移矢量场分量可以呈现正值和负值,并且在多种运动的意义上自然居中,一个方向上的运动与另一个方向上的运动一样可能。然而,给定一对框架,它们之间的光流可以由特定的位移支配,例如,由相机运动引起的。先前在[10,26]中强调了相机运动补偿的重要性,其中估计了全局运动分量并从密集流中减去。在我们的例子中,我们考虑一种更简单的方法:从每个位移场d中减去它的均值向量。


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

3.2时态ConvNet架构与先前表示的关系

在本节中,我们将时间ConvNet架构放在现有技术的上下文中,绘制与视频表示的连接,在1.1节中进行了回顾。基于特征编码的方法[17,29]通常组合了几个时空局部特征。这些特征是从光流计算的,因此由我们的时间ConvNet扩展。实际上,HOF和MBH局部描述符基于光流方向或其梯度的直方图,可以使用单个卷积层(包含方向敏感滤波器)从位移场输入(1)获得,然后是整流和池化层。 [10](发散,卷曲和剪切)的运动学特征也是根据光流梯度计算的,并且再次可以通过我们的卷积模型捕获。最后,通过沿轨迹堆叠位移矢量来计算轨迹特征[29],其对应于轨迹堆叠(2)。在3.3节中我们可视化在时间网络的第一层中学习的卷积滤波器。这进一步证明了我们的表现形式是手工制作的特征。就深度网络而言,[16]的双流视频分类架构包含两个HMAX模型,这些模型是手工制作的,并且不如我们经过有区别训练的深度卷积网络,这可以被视为HMAX的可学习概括。[12,14]的卷积模型不会分离空间和时间识别流,而是依赖于从数据中学习的运动敏感卷积核。在我们的例子中,使用光流位移场明确表示运动,基于流动强度和平滑度的恒定性假设计算。将这些假设纳入ConvNet框架可能会提高端到端基于ConvNet的方法的性能,并且是未来研究的一个有趣方向。

 

3.3所学卷积核的可视化


在图4中,我们可视化来自时间ConvNet的第一层的卷积滤波器,这些滤波器是在URF-101dataset上训练的。96个过滤器中的每一个都具有7×7像素的空间接受域,并且跨越20个输入通道,对应于10个堆叠光流位移的水平(dx)和垂直(dy)分量。可以看出,一些滤波器计算光流的空间导数,捕获运动如何随图像位置而变化,这推广了基于衍生的手工描述符(例如MBH)。 其他过滤器计算时间导数,捕捉运动随时间的变化。

4多任务学习

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

组合多个数据集的更有原则的方法是基于多任务学习[5]。其目的是学习(视频)表示,其不仅适用于所讨论的任务(例如HMDB-51分类),而且适用于其他任务(例如UCF-101分类)。额外的任务就像一个常客,允许利用额外的训练数据。在我们的例子中,修改了ConvNet架构,使其在最后一个全连接层之上有两个softmax分类层:一个softmax层计算HMDB-51分类分数,另一个是UCF-101分数。每个层都配备有自己的损失函数,该功能仅对来自相应数据集的视频进行操作。整体训练损失计算为各个任务的损失之和,并且可以通过反向传播找到网络权重导数。

 

5实施细节

ConvNets配置。我们的空间和时间ConvNets的层配置如图1所示。它对应于[3]的CNN-M-2048架构,类似于[31]的网络。所有隐藏的权重层都使用ReLU激活功能;使用步长为2,在3×3空间窗口上执行最大池化;LRN使用与[15]相同的设置。空间和时间ConvNet配置之间的唯一区别是我们从后者中删除了第二个归一化层以减少内存消耗。

训练。训练过程可以看作是对视频帧的[15]的改编,并且对于空间和时间网络通常是相同的。使用具有动量的小批量随机梯度下降(设置为0.9)来学习网络权重。在每次迭代中,通过对256个训练视频(均匀地跨越类)进行采样来构建256个样本的小批量,从每个训练视频中随机选择单个帧。在空间网络训练中,从所选择的帧中随机裁剪224×224子图像;然后它经历随机水平移动和RGB抖动。视频会事先重新缩放,因此帧的最小边等于256.我们注意到,与[15]不同,子图像是从整个帧中采样的,而不仅仅是256×256中心。在时间网络训练中,我们计算所选训练帧的光流I,如第3节.从该体积开始,随机裁剪固定尺寸的224×224×2L输入并进行处理。学习率初始设置为10-2,然后根据固定的时间减少,所有固定时间对所有训练集保持相同。也就是说,当从头开始训练ConvNet时,速率在50K迭代后变为10-3,然后在70K迭代后变为10-4,并且在80K迭代之后停止训练。在微调之后,在14K迭代之后,比率变为10-3,并且在20K迭代之后训练停止。

测试。在测试时,给定视频,我们采样固定数量的帧(在我们的实验中为25),它们之间具有相等的时间间隔。然后,我们从每个帧中通过裁剪和移动四个角和帧的中心来获得10个ConvNet输入[15]。然后通过对采样帧和其中的裁剪块的分数求平均来获得整个视频的类核心。

ImageNet ILSVRC-2012上的预训练。在对空间ConvNet进行预训练时,我们使用与上述相同的训练和测试数据增强(裁剪,移动,RGB抖动)。这个类似网络的[53]中报告的13.5%top-5误差ILSVRC-2012验证集合比例高达16.0%。我们认为,改进的主要原因是从整个图像中采样ConvNet输入,而不仅仅是其中心。多GPU训练。我们的实现源自公开的Caffe工具箱[13],但包含许多重要的修改,包括在单个系统中安装的多个GPU的并行训练。我们利用数据并行性,并将每个SGD批处理分成几个GPU。在具有4块NVIDIA Titan卡的系统上训练单个时间ConvNet需要1天,这比单GPU培训的速度提高了3.2倍。

光流是使用OpenCV工具箱中[2]的现成GPU实现计算的。尽管计算时间很快(对于一对帧为0.06秒),但如果在此处完成,它仍然会引入瓶颈,因此我们在训练之前预先计算了流。为了避免将位移场存储为浮点数,流的水平和垂直分量线性重新缩放到[0,255]范围并使用JPEG压缩(在解压缩后,流重新缩放回原始范围)。这将UCF-101数据集的流量大小从1.5TB减少到27GB。

 

6.评估

数据集和评估协议。评估在UCF-101 [24]和HMDB-51 [16]动作识别基准上进行,这些基准是最大的可用注释视频数据集之一。UCF-101包含13K视频(平均180帧/视频),注释为101个动作类; HMDB-51包括51个动作的6.8K视频。两个数据集的评估协议相同:组织者提供三个分组到训练和测试数据,并且性能通过分割的平均分类精度来衡量。每个UCF-101分组包含9.5K训练视频; HMDB-51分割包含3.7K训练视频。我们首先在UCF-101数据集的第一次分割上比较不同的体系结构。为了与现有技术进行比较,我们遵循标准评估协议,并在UCF-101和HMDB-51上报告三次分割的平均准确度。


空间ConvNets。首先,我们测量空间流ConvNet的性能。考虑了三种情况:(i)从头开始对UCF-101进行训练,(ii)对ILSVRC-2012进行预训练,然后对UCF-101进行微调,(iii)保持预先训练好的网络固定并仅训练最后(分类)层。对于每个设置,我们尝试将dropout设置为0.5或0.9。由表1a所示的结果可以明显看出,仅对UCF-101数据集进行ConvNet训练会导致过拟合(甚至高dropout),且不如对大型ILSVRC-2012数据集进行预训练。有趣的是,对整个网络进行微调只比仅训练最后一层提供了微小的改进。在后一种情况下,较高的dropout和过度规律化学习导致较差的准确性。在以下实验中,我们选择在预先训练的ConvNet上训练最后一层。

时间ConvNets。在评估了空间ConvNet变体之后,我们现在转向时间ConvNet架构,并评估输入配置的影响,如3.1节所示。特别是,我们测量了以下效果:使用多个(L = {5,10})堆叠光流;轨迹堆叠;平均位移减法;使用双向光流。这些架构是从头开始在UCF-101数据集上进行训练的,因此我们使用0.9的正dropout来帮助提升泛化性能。结果如表1b所示。首先,我们可以得出结论,在输入中堆叠多个(L> 1)位移场是非常有益的,因为它为网络提供了长期运动信息,这比一对帧之间的流动更具有辨别力(L = 1)设置)。将输入流从5增加到10导致改善较小,因此在以下实验中我们将L固定为10。其次,我们发现平均减法是有帮助的,因为它减少了帧之间全局运动的影响。我们在以下实验中将其用作默认值。不同堆叠技术之间的差异是微不足道的;事实证明,光流堆叠比轨迹堆叠表现更好,并且使用双向光学流动仅略好于单向前向流动。最后,我们注意到时间ConvNets显著优于空间ConvNets(表1a),这证实了运动信息对于动作识别的重要性。

我们还实现了[14]的“慢融合”架构,相当于将ConvNet应用于一堆RGB帧(在我们的例子中为11帧)。在UCF-101上从头开始训练时,它的准确率达到了56.4%,这比从头开始训练的单帧架构(52.3%)要好,但效果远不及使用光流开始训练。这表明虽然多帧信息很重要,但以适当的方式将其呈现给ConvNet也很重要。

时间ConvNets的多任务学习。由于训练集的数据量较小,在UCF-101上训练时间控制具有挑战性。更大的挑战是在HMDB-51上训练ConvNet,其中每个训练分割比UCF-101小2.6倍。在这里,我们评估了增加HMDB-51的有效训练集大小的不同选项:(i)微调在UCF-101上预训练的时间网络;(ii)从UCF-101中添加78个类,这些类是手动选择的,因此这些类与本机HMDB-51类之间没有交集;(iii)使用多任务公式(第4节)学习视频表示,在UCF-101和HMDB-51分类任务之间共享。结果报告在表2中。正如预期的那样,利用完整的(全部组合的)UCF-101数据(通过借用图像,或通过预训练隐含)是有益的。多任务学习表现


最佳,因为它允许训练程序利用所有可用的训练数据。

我们还在UCF-101数据集上进行了多任务学习,通过训练网络对完整的HMDB-51数据(所有分组合)和UCF-101数据(单个分割)进行分类。在UCF-101的第一次拆分中,精度测量为81.5%,使用相同设置实现了81.0%,但没有额外的HMDB分类任务(表1b)。


双流ConvNets。在这里,我们评估完整的双流模型,它结合了两个识别流。组合这些网络的一种方法是训练一个完全连接的联合堆栈,其中包括多个完整的连接器。然而,由于过度使用,这在我们的案例中是不可行的。因此,我们使用平均值或线性SVM融合softmax分数。从表3中我们得出结论:(i)时间和空间识别流是互补的,因为它们的融合在两者上都显著改善(在时间上为6%,在空间网上为14%);(ii)基于SVM的softmax分数融合优于平均融合; (iii)在ConvNet融合的情况下,使用双向流动并不是有益的;(iv)使用多任务学习训练的时间ConvNet在单独和与空间网融合时表现最佳。

与现有技术的比较。我们通过与UCF-101和HMDB-51的三个分裂的现有技术的比较来总结实验评估。为此,我们使用了在ILSVRC上预训练的空间网络,最后一层在UCF或HMDB上进行了训练。使用多任务学习在UCF和HMDB上训练时间网,并且使用单向光学支持和减法来计算输入。两个网的softmax分数使用平均值或SVM进行组合。从表4中可以看出,单独的空间和时间网都比[14,16]的深层结构大得多。两个网络的组合进一步推动了结果(内联单个实验上面的实验),并


且与最近最先进的手工制作模型相比[20,21,26]。

UCF-101分类的混淆矩阵和每类召回。在图5中,我们使用我们的双流模型显示了UCF-101分类的混淆矩阵,它在第一个数据集分割(表3的最后一行)上达到了87.0%的准确度。我们还可以看到图6中相应的每类召回。

最糟糕的类召回对应于Hammering类,它与HeadMassage和BrushingTeeth类混淆。我们发现这是由于两个原因。首先,空间ConvNet将Hammering与HeadMassage混淆,后者可能由两个类中都出现了人脸引起的。其次,时间ConvNet将Hammering与BrushingTeeth混淆,因为两个动作都包含反复出现的动作模式(手向上和向下移动)。

 

7结论和改进方向

我们提出了一种具有竞争性能的深度视频分类模型,它包含基于ConvNets的单独的空间和时间识别流。目前看来,在光流上训练时间ConvNet(如此处)显著优于原始堆叠帧上的训练[14]。后者可能过于具有挑战性,可能需要进行架构更改(例如,结合[30]的深度匹配方法)。尽管使用光流作为输入,但我们的时间模型不需要显著的手工制作,因为流是使用基于恒定性和平滑性的一般假设的方法计算的。如我们所示,对于我们的时间ConvNet来说,提取数据是有益的,因此我们计划对大型视频数据集进行训练,例如最近发布的[14]集合。然而,由于大量的训练数据(多个TB),这本身就构成了一个重大的挑战。仍然存在最先进的浅层表示[26]的一些基本要素,这些成分在我们当前的架构中被遗漏了。最突出的一个是局部特征池化在时空管上,以轨迹为中心。即使输入(2)捕获沿轨迹的光流,我们网络中的空间池化也不考虑轨迹。另一个改进的方法是提高手动操作的安全性,通过平均位移减法来补偿。

猜你喜欢

转载自blog.csdn.net/weixin_40740160/article/details/83902372