Learning Spatiotemporal Features with 3D Convolutional Network 论文学习

Abstract

针对时空范围内的特征学习,我们利用深度三维卷积网络提出了一个简单而有效率的方法,该网络在大规模监督视频数据集上进行了训练。我们的贡献有三点:

  • 和二维卷积相比,三维卷积更适合时空范围内的特征学习;
  • 对于三维卷积网络,最优的结构就是在所有的层中都使用小型的 3 × 3 × 3 3\times 3\times 3 3×3×3卷积核;
  • 该方法所学到的特征,我们称之为 C 3 D C3D C3D(卷积3D),再加上一个简单的线性分类器,其表现在4个benchmarks上面超越了state-of-the-art的方法。并且在另外2个benchmarks上可以与现在最佳的方法媲美。

此外,该特征比较紧凑:在UCF101数据集上只用10个维度就取得了 52.8 % 52.8\% 52.8%的准确率,计算起来也非常高效,因为卷积网络推理的速度很快。最后,它们的概念非常简练,训练和使用也很简单。

1. Introduction

互联网多媒体每分钟就会产生巨量的视频数据。为了处理这些信息,我们就需要从不同的目的(搜索、推荐、排名等)来理解、分析这些视频。计算机视觉领域已经在视频分析任务上努力了几十年,要解决不同的问题,如动作识别、异常事件检测、行为理解等。通过不同的技术,我们已经在这些问题上实现了显著的突破。但是,我们仍然需要一个通用的视频描述器,以一种同质的手段来解决大规模视频任务。

一个有效的视频流描述器要具备四个特性:

  • 需要具有通用性,它可以表示多种不同类型的视频流,具有判别力。例如,网上的视频流可能是关于风景、体育、电视剧、电影、宠物、食物等等的。
  • 这个描述器需要足够地紧凑:因为我们要处理数以百万计的视频,一个紧凑的描述器可以处理、提取、存储更加大规模的任务。
  • 它在计算时可以足够地高效率,因为在实际应用中,每分钟需要处理的视频数以千计。
  • 而且它实现起来要足够地简单。一个优秀的描述器即便是用一个简单的模型(如线性模型),也能表现的很好,而无需使用复杂的特征编码方法和分类器。

深度学习在图像领域取得了不少突破,在特征学习任务上进展尤其显著,受此启发,业内提供了很多现成的预训练模型用于提取图像特征。这些特征是网络最后几个全连接层的激活,在迁移学习上表现不错。但是,这些基于图像的深度特征无法直接用于视频流,因为缺乏对运动状态的建模。在这篇论文中,我们提出利用3D卷积网络来学习时空特征。我们证明,该方法学到的特征搭配一个简单的线性分类器就可以在不同的视频分析任务上有很好的表现。尽管3D卷积网络很早就提出来了,但是这篇论文探索了大规模监督训练数据集和当前的深度网络情况下的3D卷积网络,以在不同的视频分析任务上都取得最佳的表现。3D卷积网络学到的特征封装了视频中的物体、场景和动作,使得它们可以用于不同的任务,无需针对不同任务而对模型进行微调。C3D具有一个优秀的描述器所应该有的特性:通用、紧凑、简单、高效。我们在这篇论文中的贡献如下:

  • 我们在实验中证明3D卷积网络是一个非常好的特征学习方法,可以对物体的外观和动作同时建模。
  • 我们发现 3 × 3 × 3 3\times 3\times 3 3×3×3卷积核在所有的模型结构中表现是最佳的。
  • 在4种任务和6个benchmarks上,该方法加上一个简单的线性模型就已经超越了目前最优的模型。而且,它们计算起来也足够地简单、高效率。

在这里插入图片描述

2. Related Works

在计算机视觉领域,针对视频流人们已经研究了数十年,人们提出了许多要解决的问题,如动作识别、异常检测、视频提取、事件和动作检测等。这些工作中很大的一部分都是关于视频表示的。Laptev 和 Lindeberg 将 Harris 的角点检测方法扩展至三维,提出了时空兴趣点(STIPs)方法。SIFT和HOG同样也被扩展为SIFT-3D和HOG3D,用于动作识别。Dollar等人针对行为识别提出了Cuboids特征。Sadanand和Corso构建了ActionBank,用于动作识别。最近,Wang等人提出了改进版本的密集轨迹方法(iDT),是目前state of the art的人工特征。iDT描述器是一个非常有趣的例子,说明时间信号可以用不同于空间信号的方法来处理。它没有将Harris的角点检测方法扩展到三维,而是在视频帧中对特征点进行密集采样,然后用光流来跟踪它们。对于每一个跟踪角点,我们沿着轨迹提取不同的人工特征。尽管它表现不错,但是对算力要求很高,因而无法用于大规模的数据集。

近来GPU和CPU集群的出现,以及大量的训练数据,卷积网络又重新流行起来,在视觉识别任务上取得了突破。卷积网络同样应用于图像或视频的人体姿势预测。更有趣的是将这些深度网络应用在图像特征学习上。类似地,Zhou等人在迁移学习任务上进行了摸索,表现也不错。深度学习也被应用在非监督设定下的视频特征学习任务。Le等人利用堆叠的ISA学习视频内的时空特征。尽管该方法在动作识别上表现不错,但训练时消耗了太多的算力资源,不适合在大规模数据集上测试。有人提出了在人体动作识别和医疗图像分割上使用3D卷积网络。3D卷积网络也有结合受限玻尔兹曼机来学习时空特征。最近,Karpathy 等人在一个很大的视频流数据集上训练深度网络,用于视频分类。Simonyan和Zisserman利用两个流网络,在动作识别上取得了最优的成绩。

在这所有的方法中,3D卷积网络是最贴近我们的方法。该方法利用一个人体检测器和头部追踪器,在视频中对人体区域进行分割。它将分割出来的视频数据作为一个由3-卷积-层的3D卷积网络的输入,用于对动作进行分类。但是,我们的方法是将所有的视频画面所谓输入,而不依赖于预处理,因此可以很容易地应用到大规模数据集上。我们和Karpathy、Simonyan和Zisserman的方法有相似之处,都是利用所有的帧画面来训练卷积网络。但是,这些方法都是基于二维卷积和二维池化操作(除了Slow Fusion模型),而我们的模型执行的是三维卷积和三维池化,在网络所有的层中传播时间信息。我们也证明,逐步池化的空间和时间信息,以及构建更深的网络可以取得最优的成绩。

3. Learning Features with 3D ConvNets

这一章节中,我们将详细介绍3D卷积网络的基本操作,分析3D卷积网络的不同结构,说明如何在大规模数据集上进行特征学习的训练。

3.1 3D卷积和池化

我们认为,3D卷积网络很适合空间-时间范围的特征学习。和2D卷积网络相比,3D卷积网络由于3D卷积和池化操作,能够对时间信息更好地建模。在3D卷积网络中,卷积和池化是在空间-时间范围内操作;而在2D卷积网络中,它们只在空间范围内操作。图1 展示了它们之间的差异,2D卷积应用在一张图像上则输出一张图像,2D卷积应用在多张图像上(将它们视作不同的通道)也只输出一张图像。因而,2D卷积网络在每个卷积操作后丢失了输入信号的时间信息。只有3D卷积保留了输入信号的时间信息。该现象同样存在于2D池化和3D池化操作中,输出的形状是立体的。

在这里插入图片描述在[36]中,尽管时间流网络的输入是多帧画面,但由于2D卷积的影响,时间信息在第一个卷积之后就完全丢失了。类似地,[18]中的融合模型使用了2D卷积,网络中的大部分在第一个卷积之后就丢弃了输入的时间信号。只有[18]中的慢速融合模型在前三个卷积层中使用了3D卷积以及平均池化。我们认为,这就是该模型的表现能超越[18]中其它模型的关键因素。但是,该模型在第三层之后仍然丢失了全部的时间信息。

在这一章节,我们尽力为3D卷积寻找一个优秀的网络结构。因为在大规模视频数据集上训练深度网络非常费时,我们首先用UCF101来做实验,搜索最优的结构,UCF101是一个中等大小的数据集。我们在大规模数据集上对少数几个网络进行了验证。根据2D卷积网络的发现,较深的网络结构搭配较小的感受野 3 × 3 3\times 3 3×3卷积核能取得不错的结果。所以,在我们的实验研究中,我们将感受野大小固定在 3 × 3 3\times 3 3×3,只改变3D卷积核的时间深度。

符号注释:为了简洁,从现在起我们将视频片段表示为 c × l × h × w c\times l\times h\times w c×l×h×w大小, c c c是通道数量, l l l是帧的数量, h , w h,w h,w分别是帧的高度和宽度。我们将3D卷积核、池化核的大小用 d × k × k d\times k\times k d×k×k表示, d d d是核的时间深度, k k k是核的空间大小。

常用网络设定:这一章节中,我们将介绍一下我们训练的网络中的常用设定。网络的输入为视频片段,从101个不同的动作中预测其类别标签。所有的视频帧都重新缩放为 128 × 171 128\times 171 128×171。这几乎是UCF101数据集分辨率的一半大小。视频被分割为非重叠的16-帧片段,作为网络的输入。输入的维度是 3 × 16 × 128 × 171 3\times 16\times 128\times 171 3×16×128×171。在训练中,我们也通过大小为 3 × 16 × 112 × 112 3\times 16\times 112\times 112 3×16×112×112的随机裁剪来晃动画面。网络有5个卷积层和5个池化层(每个卷积层后面都跟着一个池化层),2个全连接层和一个softmax层来预测行为标签。5个卷积层中的滤波器个数分别是64,128,256,256,256个。所有的卷积核都有一个时间深度 d d d(稍后我们将改变 d d d的值来搜索一个优秀的模型)。所有的卷积层都用了相应的padding(时间和空间范围内),以及stride为1,所以这些卷积层的输入和输出是一样的。所有的池化层都是max pooling,核大小是 2 × 2 × 2 2\times 2\times 2 2×2×2(除了第一层),stride为1,也就是说,输出信号的大小相对于原始输入信号减少至 1 8 \frac{1}{8} 81。第一个池化层的核大小是 1 × 2 × 2 1\times 2\times 2 1×2×2,目的是避免过早将时间信号融合起来,也可以满足片段长度为16帧。两个全连接层有2048个输出。我们从头开始训练模型,mini-batch有30个视频片段,初始学习率为0.003。每4个epochs学习率就除以10。我们一共训练了16个epochs。

改变网络结构:在本论文中,我们主要关注在如何在深度网络中聚集时间信息。为了找到一个好的3D卷积网络结构,我们只对卷积层的时间深度 d i d_i di进行变动,保留了其它常用的设定。我们在两类网络结构上进行了实验:

  • 同质的时间深度:所有的卷积层都有一样的时间深度。
  • 不同的时间深度:不同层的核时间深度不一样。

对于同质的设定,我们用了4个网络来做实验,它们的时间深度分别是 1 , 3 , 5 , 7 1,3,5,7 1,3,5,7。我们将这些网络称作 depth-d, d d d是它们的同质的时间深度。注意,depth-1网络和将2D卷积网络用在不同帧上是一样的。对于不同时间深度设定,我们用了2个网络来做实验,它们的时间深度从第一层到第五层分别是递增的(3-3-5-5-7)和递减的(7-5-5-3-3)。我们发现,所有这些网络在最后一个池化层的输出信号的大小是一样的,在全连接层的参数数量是一样的。它们的参数数量只在卷积层不同,这是因为这些卷积核的时间深度不同。这些不同与全连接层中数以百万计的参数数量相比微不足道。例如,上面随便2个网络,它们的时间深度差异为2,彼此之间的参数数量也仅为1.7万个。参数数量差异最大的要属depth-1和depth-7网络,depth-7网络要比depth-1网络多出5.1万个参数,仅占每个网络总参数量为1750万的 0.3 % 0.3\% 0.3%。这表明各网络的学习能力是可比的,参数数量的差异不太会影响我们网络结构的搜索。

3.2 探索卷积核、池化核的时间深度

我们在UCF101 train split 1上训练这些网络。图2展示了不同网络结构在UCF101 test split 1上的视频片段准确率。左图显示了同质时间深度的结果,右图显示了变动时间深度的结果。Depth-3在同质网络中的表现是最好的。注意,depth-1的表现要明显劣于其他模型,我们认为这是由于它缺乏对运动的建模。同时间深度变动的网络相比,depth-3表现最佳,但是差距较小。我们也用了较大的感受野(如 5 × 5 5\times 5 5×5)和/或全分辨率( 240 × 320 240\times 320 240×320)的输入做实验,观测到了类似的现象。这表明 3 × 3 × 3 3\times 3\times 3 3×3×3是3D卷积网络中卷积核最优的选择。在视频分类任务上,3D卷积网络要优于2D卷积网络。我们在大规模内部数据集I380K上证明了,3D卷积网络要比2D卷积网络表现更佳。

3.3 时空特征学习

网络结构:前面几节的发现表明,卷积核大小为 3 × 3 × 3 3\times 3\times 3 3×3×3的同质设定对于3D卷积网络而言是最优的。这个发现同样与2D卷积网络中的发现一致[37]。有了大规模数据集,我们可以用 3 × 3 × 3 3\times 3\times 3 3×3×3卷积核来训练3D卷积网络,根据机器的内存和算力让网络尽可能地深。根据目前GPU显存,我们将3D卷积网络设计为8个卷积层、5个池化层、2个全连接层、1个softmax层。网络结构如图3所示。为了简洁,我们将这个网络称为C3D。所有的3D卷积滤波器大小都是 3 × 3 × 3 3\times 3\times 3 3×3×3,stride都是 1 × × 1 1\times \times 1 1××1。所有的3D池化层大小都是 2 × 2 × 2 2\times 2\times 2 2×2×2,stride都是 2 × 2 × 2 2\times 2\times 2 2×2×2,除了pool1层。Pool1层的核大小为 1 × 2 × 2 1\times 2\times 2 1×2×2,stride为 1 × 2 × 2 1\times 2\times 2 1×2×2,目的是保存网络早期阶段的时间信息。每个全连接层都有4096个网络输出单元。

数据集:为了学习时空特征,我们在Sports-1M数据集上训练网络,这是目前最大的视频分类benchmark。这个数据集包括110万个运动视频。每个视频属于487个类别中的1个。和UCF101相比,Sports-1M的类别要多了5倍,视频的数量多了100倍。

训练:在Sports-1M train split上进行了训练。因为Sports-1M里面有很多的长视频,我们就随机从每个训练视频中提取2秒长度的视频片段。视频片段的画面大小调整为 128 × 171 128\times 171 128×171。在训练时,我们随机裁剪输入视频片段至 16 × 112 × 112 16\times 112\times 112 16×112×112,为了产生晃动效果。我们也以 50 % 50\% 50%的几率对画面水平翻转。训练中使用了SGD,mini-batch大小设为30。初始学习率为0.003, 每15万次iterations学习率除以2。在大约13个epochs时,停止训练。除了从0开始训练C3D模型,我们也对I380K上预训练的C3D模型进行微调。

Sports-1M分类结果:表2展示了C3D模型与DeepVideo[18]和卷积池化[29]的比较结果。我们在每个视频片段只用了一个单一中心的裁剪,然后将它传入网络进行预测。对于视频预测,我们对视频中随机选取的10个片段的预测结果取均值。我们发现,不同方法之间的不同设定很重要。DeepVideo和C3D都用了较短的视频片段,而卷积池化方法则用了较长的视频片段。DeepVideo用了更多的裁剪:每个视频片段进行了4次裁剪,每个视频有80个裁剪,而C3D则只在每个片段中有1次裁剪,每个视频中有10次裁剪。从头开始训练的C3D网络的top-5准确率为 84.4 % 84.4\% 84.4%,而从I380K预训练模型微调得到的模型的top-5准确率为 85.5 % 85.5\% 85.5%。这两个C3D都超过了DeepVideo模型。C3D模型比[29]中方法相比仍要低 5.6 % 5.6\% 5.6%。但是,那个方法在长度为120帧的长片段上使用深度图像特征的卷积池化,因而没法直接和C3D以及DeepVideo比较,因为这二者都用的是短片段。我们注意到,那个方法对于视频和视频片段的top-1准确率之间的差异很小,只有 1.6 % 1.6\% 1.6%,这是因为它本身就使用的是120帧长的片段作为输入。在实际应用中,我们可以将卷积池化方法以及更复杂的聚合方法应用在C3D特征之上,提升模型的表现。

在这里插入图片描述

在这里插入图片描述

C3D视频描述器:训练后,C3D可以用于其他视频分析任务的特征提取。为了提取C3D特征,我们将一个视频拆分为16帧长的片段,每两个连续片段之间有8帧的重叠。这些片段然后输入进C3D网络,提取fc6的激活。将这些片段的fc6激活取平均,形成一个4096维的视频描述器,后面跟着一个L2归一化。我们将这个特征表示称作C3D视频描述器。

C3D学到了什么?我们使用[46]中的反卷积方法来理解C3D学到的内容。我们发现,C3D开始时关注在前几帧目标物体的外观,在随后帧中跟踪显著物体的轨迹。图4可视化了两个C3D conv5b特征图的反卷积,将最大的激活值映射回图像空间。在第一个例子中,特征关注在整个人上,然后在后面帧中跟踪撑杆跳的动作。相似地,第二个例子中它首先关注在眼睛上,然后跟踪眼睛周围化妆时候的动作。所以,C3D和传统2D卷积不同,因为它可以选择性地去关注动作或者外观。我们在补充材料中提供了很多的可视化例子,让我们能更好地理解学到的特征。

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值