摘要:深度卷积网络已经在静态图像目标识别中取得了了的巨大成功。 但是,对于视频的动作识别,深度卷积网络的改进不是那么明显。 我们认为这样子的结果可能有两个原因。 首先,与图像中非常深的模型(例如VGGNet [13],GoogLeNet [15])相比,当前的网络体系结构(例如,双流ConvNets [12])相对较浅,因此它们的建模能力受到其深度的限制。其次,更重要的可能是,动作识别的训练数据集与ImageNet数据集相比非常小,因此很容易在训练集上过拟合。
为了解决这些问题,本文通过将最新的非常深层的架构应用于视频领域从而提出了深层双流ConvNet,用于动作识别。 但是,由于动作识别的规模很小,因此扩展并不容易。 我们设计了几种非常好的深层双流ConvNet训练策略,即(i)对时空网络进行预训练,(ii)较小的学习率,(iii)更多的数据增强技术,(iv)高随机失活率。 同时,我们将Caffe工具箱扩展到具有高计算效率和低内存消耗的Multi-GPU实现中。 我们在UCF101数据集上验证了深层双流ConvNets的性能,其识别精度达到91.4%。
1介绍
人体动作识别已成为计算机视觉中的重要问题,并引发了诸多研究兴趣[12、16、19]。由于类内差异大,视频分辨率低,视频数据的维数大等原因,动作识别问题具有很大挑战。
在过去几年中,见证了动作识别在视频上的巨大进步[8、9、12、16、17、18、19]。这些研究工作可以大致分为两种类型。 第一种算法专注于手工制作的局部特征和词袋(BoVWs)表示。 最成功的例子是提取改进的轨迹特征[16],并采用费舍尔矢量表示[11]。 第二种算法利用深度卷积网络(ConvNets)从原始数据(例如RGB图像或光流场)中学习视频表示,并以端到端的方式训练识别系统。 最具竞争力的深度模型是双流ConvNets [12]。
但是,与图像分类[7]不同,深层卷积网络在这些传统方法上并未产生重大改进。 我们认为,有两种可能的原因可以解释这个现象。 首先,动作的概念比物体更复杂,并且与其他高级视觉概念相关,例如交互对象,场景内容,人体姿势。客观来说,更复杂的问题将需要更高复杂性的模型。 但是,与图像分类中的那些成功深层模型相比,当前的双流ConvNets相对较浅(5个卷积层和3个全连接层)。 其次,与ImageNet数据集相比,动作识别数据集非常小[1]。 例如,UCF101数据集[14]仅包含13320个剪辑。但是,这些深层卷积网络总是需要大量的训练样本来调整网络权重。
为了解决这些问题,本文使用了深层双流卷积网络用于动作识别。深层双流卷积网络具有很强的建模能力,并且能够处理复杂的动作分类。 但是,由于上述第二个问题,在如此小的数据集中训练深层模型会产生过拟合问题,所以非常困难。我们提出了几种好的方法,可以使深层双流卷积网络的训练稳定并减少过拟合的影响。 通过在动作数据集上训练我们提出的深层卷积网络,我们能够在UCF101数据集上实现SOTA。。 同时,我们将Caffe工具箱[4]扩展到多GPU实现中,具有很高的效率和较低的内存消耗。
本报告的其余部分安排如下。 在第2节中,我们详细介绍了我们提出的深层双流ConvNet,包括网络体系结构,训练细节,测试策略。我们在第3节中报告关于UCF101数据集的实验结果。最后,在第4节中进行了总结。
2深层双流卷积网络
在本节中,我们将对提出的方法进行详细说明。 我们首先介绍深层双流ConvNet的体系结构。 之后,我们介绍了训练细节,这对于减少过拟合的影响非常重要。 最后,我们描述了用于动作识别的测试策略。
2.1网络架构
网络架构对于深层ConvNets的设计至关重要。 在过去的几年中,已经提出了许多用于图像分类的著名网络结构,例如AlexNet [7],ClarifaiNet [22],GoogLeNet [15],VGGNet [13]等。 从AlexNet到VGGNet的改进过程中出现了一些趋势:较小的卷积内核,较小的卷积步幅和更深的网络体系结构。 已证明这些趋势对改善对象识别性能有效。 但是,它们在视频领域中对动作识别的影响尚未得到充分研究。 在这里,我们选择两种最新的成功网络结构来设计深层双流流ConvNet,即GoogLeNet和VGGNet。
GoogLeNet:它本质上是一个名为Inception的深层卷积网络体系结构,其基本思想是Hebbian原理和多尺度处理。Inception网络中的一个重要组件是Inception模块。Inception模块由彼此不同大小的多个卷积滤波器组成。为了加快计算效率,选择了1×1卷积运算进行降维。GoogLeNet是一个22层的网络,由相互堆叠的Inception模块组成,还穿插具有步幅为2的最大池化层,以将网格的分辨率减半。 更多细节可以在其原始论文中找到[15]。
VGGNet:它是一种新的卷积体系结构,具有较小的卷积大小(3×3),较小的卷积步幅(1×1),较小的池化窗口(2×2),更深的结构(最多19层)。VGGNet通过在较浅的基础上构建和预训练较深的网络结构体系,系统地研究网络深度对识别性能的影响。最后,针对ImageNet挑战提出了两个成功的网络结构:VGG-16(13个卷积层和3个全连接的层)和VGG-19(16个卷积层和3个全连接的层)。 更多细节可以在其原文中找到[13]。
深层双流ConvNet。 遵循这些成功的对象识别架构,我们将其调整为双流ConvNets设计,以进行视频中的动作识别,我们将其称为深层双流ConvNets。 我们根据经验研究GoogLeNet和VGG-16,设计深层双流Con vNet。 空间网建立在单帧图像(224×224×3)上,因此其结构与图像领域中对象识别的结构相同。时间网的输入是光流场(224×224×20)的10帧堆叠,因此第一层中的卷积滤波器与图像分类模型的卷积滤波器不同。
2.2网络训练
在这里,我们描述了如何在UCF101数据集上训练深层双流ConvNet。UCF101数据集包含13320个视频剪辑,并提供3个分组进行评估。 对于每个分组,大约有10000个用于训练的剪辑和3300个用于测试的剪辑。 由于训练数据集非常小,并且动作概念相对复杂,因此训练深层双流ConvNets非常困难。 从我们的经验探索中,我们发现了用于训练深层双流Con vNet的几种做法,如下所述:
双流ConvNet的预训练:预训练已证明在没有足够的训练样本时初始化深度Con vNet的有效方法。对于[12]中所示的空间网络,我们选择ImageNet模型作为网络训练的初始化。对于时间网,其输入形式是光流场,它捕获运动信息并且与静态RGB图像不同。有趣的是,我们注意到通过使用ImageNet模型预训练时间网络,它仍然可以很好地工作。为了使这种预训练合理,我们对光流场和ImageNet模型进行了一些修改。首先,我们提取每个视频的光流场,并通过线性变换将光流场离散化为[0,255]的间隔。 其次,由于时间网络的输入通道数与空间网络的输入通道数(20 vs. 3)不同,我们对通道第一层的ImageNet模型过滤器求平均,然后将平均结果复制20次作为初始化时间网络。
较低的学习率:当我们使用ImageNet模型对双流ConvNets进行预训练时,与[12]中的原始训练相比,我们使用的学习率较小。具体来说,我们将学习率设置如下:
1对于时间网络,学习率从0.005开始,每10000次迭代降低到其1/10,在30,000次迭代时停止。
2对于空间网,学习率从0.001开始,每4,000个迭代降低到其1/10,在10,000个迭代时停止。
总体而言,学习率降低了3倍。 同时,我们注意到,对于训练深层双流ConvNet,它需要较少的迭代。 我们分析这可能是由于使用ImageNet模型对网络进行了预训练。
更多数据增强技术。 已经证明,诸如随机裁剪和水平翻转的数据增强技术对于避免过拟合问题非常有效。 在这里,我们尝试两种新的数据增强技术来训练深层双流ConvNet,如下所示:
1我们设计了一个角落裁剪策略,这意味着我们只裁剪图像的4个角和1个中心。 我们发现,如果使用随机裁剪方法,则更有可能选择靠近图像中心的区域,并且训练损耗会迅速下降,从而导致过拟合的问题。但是,如果我们明确地将裁剪限制在4个角或1个中心,则网络输入的变化将增加,这有助于减少过拟合的影响。
2我们使用多尺度裁剪方法来训练深层双流ConvNet。 事实证明,多尺度表示对于提高ImageNet数据集上图像识别的性能是有效的[13]。 在这里,我们将这种做法应用于动作识别任务。 但是,与图像识别相比,我们提出了一种有效的实现方法[13]。 我们将输入图像尺寸固定为256×340,并从{256,224,192,168}中随机采样裁剪宽度和高度。之后,我们将裁剪区域的大小调整为224×224。值得注意的是,这种裁剪策略不仅引入了多尺度增强,而且还引入了纵横比增强。
高随机失活率。类似于原始的双流ConvNets [12],我们还为深度双流ConvNets中的全连接层设置了较高的随机失活率。 特别是,我们为时间网络的全连接层设置了0.9和0.8的随机失活率。 对于空间网,我们为全连接的层设置为0.9和0.9。
多GPU训练。 在视频动作识别任务中应用深度学习模型的一大障碍是训练时间过长。 而且,多个帧的输入增加了用于存储激活的内存消耗。 我们通过在多个GPU上进行数据并行训练来解决这些问题。 培训系统由Caffe [4]和OpenMPI实现。 遵循[3]中使用的类似技术,我们通过在运行fc层之前收集所有工作进程的激活来避免同步全连接(fc)层的参数。 使用4个GPU,VGGNet-16的训练速度快3.7倍,GoogLeNet的训练速度快4.0倍。每个GPU所需的内存减少4倍。该系统是公开可用的。
2.3.网络测试
为了与原始的双流ConvNet [12]进行公平比较,我们遵循其动作识别的测试方案。在测试时,我们分别采样了25帧图像或光流以测试空间和时间网络。从这些选定的帧的每一个中,我们获得深层双流ConvNet的10个输入,即4个角,1个中心及其水平翻转。最终的预测得分是通过对采样帧及其裁剪区域进行平均获得的。对于空间和时间网络的融合,我们使用它们的预测得分的加权线性组合,其中权重设置为时间网络2和空间网1。
3实验
数据集和实施细节。为了验证提出的深层双流ConvNet的有效性,我们在UCF101[14]数据集上进行了实验。UCF101数据集包含101个动作类别,每个类别至少有100个视频剪辑。整个数据集包含13320个视频剪辑,每个动作类别将其分为25组。我们遵循THUMOS13挑战[5]的评估方案,并采用三个训练/测试单元进行评估。 我们报告了这三个部分中各类别的平均识别准确率。对于光流场的提取,我们遵照TDD [19]的工作,并选择TVL1光流算法[21]。 具体来说,在准确性和效率权衡之下我们使用OpenCV进行实现。
结果。我们在表1中报告了动作识别性能。我们比较了三种不同的网络体系结构,即ClarifaiNet,GoogLeNet和VGGNet16。从这些结果可以看出,更深的体系结构可获得更好的性能,而VGGNet-16性能最佳。对于空间网络,VGGNet-16超过浅层网络约5%,而对于时间网络,VGGNet-16提升约为4%。 深层双流ConvNets优于原始的双流ConvNets3.4%。
值得注意的是,我们在THUMOS15动作识别挑战[2]中的先前经验[20]中,我们已经尝试了深层双流ConvNet,但是具有更深结构的时间网络却无法产生良好的性能,如表2所示。在此THUMOS15提交中,我们以原始双流ConvNets[12]相同的方式训练了深层双流ConvNets而没有使用那些前面提出的做法。从两个数据集上深层双流ConvNets的不同性能,我们认为前面提出的良好做法非常有效地减少了过拟合的影响 ,由于(a)使用ImageNet预训练时间网络;(b)使用更多的数据增强技术。
对比。最后,我们将识别准确度与几种最新方法进行比较,结果如表3所示。我们首先与手工特征如iDT[16]的Fisher向量表示法和深度学习的特征轨迹池化深度卷积描述符(TDD)[19]进行比较。 我们的结果比所有这些Fisher向量表示更好。 其次,我们将深层双流ConvNet与其他深层网络(如DeepNet [6])和递归双流卷积网络[9]进行比较。我们看到,我们提出的深层模型优于以前的模型,并且比最佳结果要好2.8%。
4结论
在这项工作中,我们评估了深层双流ConvNet,以进行动作识别。 由于行动识别数据集非常小,我们提出了一些很好的实践来训练深层双流ConvNet。 通过我们精心设计的训练策略,提出的深层双流ConvNets在UCF101数据集上实现了91.4%的识别精度。同时,我们将著名的Caffe工具箱扩展到具有高效率和低内存消耗的多GPU实现中。