【程序人生】Learning Spatiotemporal Features with 3D Convolutional Networks

文章链接

《Learning Spatiotemporal Features with 3D Convolutional Networks》发表于ICCV.2015
文章百度云链接:link.

阅读笔记

文章的主要工作

文章作者在各类视频数据集上训练使用3D ConvNets的网络来获取视频的时空特征,并通过系统的研究,找到了3D ConvNets卷积核在时间维度上的最佳尺寸。 作者在各类视频分析任务中将使用3D ConvNets的模型和当前使用2D ConvNets的最佳模型进行对比实验,证实3D ConvNets可以简单有效的提取视频的时空特征,而且性能要优于2D ConvNets。

一个优秀的视频描述符应有的属性

  1. 一个优秀的视频描述符必须是通用的,这保证它可以应用在不同类型的视频上。同时它也必须具有辨别力,不同类型视频的特征对应的视频描述符应该是不同的。
  2. 一个优秀的视频描述符应该是紧凑的(compact),我对“紧凑”的理解是即使只用少数几个特征,也能很好的代表一个特定类别的视频。换句话说就是每个特征都应该极具代表性,不能很多个特征才勉强代表一个特定类别的视频。紧凑的视频描述符对大规模的检索任务(要求较低的储存成本,较快的检索速度)是非常具有帮助的
  3. 一个优秀的视频描述符计算需要高效
  4. 一个优秀的视频描述符实施应该简单

3D ConvNets和2D ConvNets的对比

图1
3D ConvNets 比 2D ConvNets更加适合提取时空特征。正如上面的图所示,(a)是在单独的一帧上进行2D卷积,获取的只有这一帧中的空间信息。(b)是在多帧上应用2D卷积,虽然获取了这几帧中的时间信息,但是在这一次卷积之后,时间维度上的信息就丢失了。(c)是在多帧上应用3D卷积,时间和空间维度上的信息都会得到提取和保存,并传递给网络的下一级进行更深层次的时空信息提取。

相比单纯的2D ConvNets,3D ConvNets通过3D卷积和3D池化能够更好的获取时间维度上的信息。因为正如上面说明的,在3D ConvNets中,卷积和池化同时在时间和空间两个维度上进行

3D ConvNets卷积核最佳尺寸的探索

2D ConvNets的相关研究表明, 3 × 3 3\times3 3×3的小尺寸卷积核 + + +更深的网络,这样的组合在图片特征提取任务上能够获得最佳的结果。受此启发,文章作者使用的3D卷积核在空间维度上的尺寸保持 3 × 3 3\times3 3×3不变,只改变时间维度上的尺寸(也可以说是3D卷积核在时间维度上的深度)进行实验。

这里使用 c × l × h × w {c}\times{l}\times{h}\times{w} c×l×h×w来表示视频中的某一段, c c c是通道数(channels), l l l是这一个视频段中帧的数目, h h h是每一帧的纵向长度, w w w是每一帧的横向长度。使用 d × k × k {d}\times{k}\times{k} d×k×k来表示3D卷积核、池化核的尺寸, k k k是空间维度的尺寸, d d d是时间维度的深度。

对于所有不同的待测试网络,文章作者将视频的每一帧尺寸缩放至 128 × 171 128\times171 128×171,这个尺寸大约是UCF101数据集中视频帧分辨率的一半。视频在时间维度上被分为16帧一组(不重叠)。因此,网络输入的维度是 3 × 16 × 128 × 171 3\times16\times128\times171 3×16×128×171。在训练时,为了模仿抖动,通过随机切割,将数据的维度切割为 3 × 16 × 112 × 112 3\times16\times112\times112 3×16×112×112再输进网络。

文章作者在这个过程中使用的网络结构如下:

VideoData
Convolution3D_1
Pooling3D_1
Convolution3D_2
Pooling3D_2
Convolution3D_3
Pooling3D_3
Convolution3D_4
Pooling3D_4
Convolution3D_5
Pooling3D_5
fc_1
fc_2
softmax

文章作者使用了连续的五组3D卷积 + + + 3D池化的结构,后面接了两个全连接层,再后面接了一个softmax层。五个3D卷积层的num_output分别为:64,128,128,256,256。所有3D卷积时间和空间维度的步长都是1。所有3D卷积层在时间和空间两个维度上都应用了适当的填充,这使每个卷积核的输入和输出数据的尺寸保持一致。第一个3D最大池化层的尺寸是 1 × 2 × 2 1\times2\times2 1×2×2,其他四个的尺寸都是 2 × 2 × 2 2\times2\times2 2×2×2这样做是因为不想将时间维度的信息过早的merge在一起。第一个3D池化层时间维度的步长是1,空间维度的步长是2,其他四个时间和空间维度的步长都是2(因为是相当于对立方体进行操作,所以一次 2 × 2 × 2 2\times2\times2 2×2×2,步长也是 2 2 2的池化,会将数据体积缩小八倍。因为时间维度上是16帧,所以在完全折叠时间维度的信息之前,最多进行四次上述池化)。
两个全连接层都是2048个节点,使用mini-batch优化方法,batchsize是30,基础学习率是0.003,从头开始训练,一共16个epoch,每4个epoch学习率乘0.1。

文章作者只改变3D卷积层的深度 d d d,来寻找一个好的卷积结构。文章作者使用两种不同的结构进行实验:

  1. 所有3D卷积时间维度的深度相同。分四次将深度设置为1,3,5,7。
  2. 每一个3D卷积时间维度的深度不同。 分两种情况进行设置,分别是3-3-5-5-7(递增)和7-5-5-3-3(递减)。

因为最后一个池化层输出的数据尺寸相同,所以他们全连接层的参数数量是一致的,不同的结构只有卷积层的参数数量不一致。因为卷积层的参数和全连接层的参数数量相比非常少,所以可以认为实验中参数数量的差异不影响实验结果。文章作者在UCF101数据集上训练,结果如下:
图2
实验结果证明所有3D卷积层时间维度的深度相同,且为3,的结果最优。这样的结构是3D卷积的最佳结构。

通过C3D提取视频的时空特征

文章作者在上面的研究基础上进一步设计了C3D网络。网络结构如下:

VideoData\3x16x112x112
Convolution3D_1a\num_output:64\kernel:3x3x3\ stride:1x1x1
Pooling3D_1\kernel:1x2x2\ stride:1x2x2
Convolution3D_2a\num_output:128\kernel:3x3x3\ stride:1x1x1
Pooling3D_2\kernel:2x2x2\ stride:2x2x2
Convolution3D_3a\num_output:256\kernel:3x3x3\ stride:1x1x1
Convolution3D_3b\num_output:256\kernel:3x3x3\ stride:1x1x1
Pooling3D_3\kernel:2x2x2\ stride:2x2x2
Convolution3D_4a\num_output:512\kernel:3x3x3\ stride:1x1x1
Convolution3D_4b\num_output:512\kernel:3x3x3\ stride:1x1x1
Pooling3D_4\kernel:2x2x2\ stride:2x2x2
Convolution3D_5a\num_output:512\kernel:3x3x3\ stride:1x1x1
Convolution3D_5b\num_output:512\kernel:3x3x3\ stride:1x1x1
Pooling3D_5\kernel:2x2x2\ stride:2x2x2
fc6\4096
fc7\4096
softmax

正如图中所展示的,C3D网络中所有的3D卷积核都是 3 × 3 × 3 3\times3\times3 3×3×3的小尺寸结构。C3D在Sports-1M数据集上进行训练,这个数据集包含110万(1.1M)个体育视频,分为487类。类别上是UCF101数据集的5倍,视频总数量上是UCF101数据集的一百倍。
因为在Sports-1M数据集中都是长视频,所以在每个数据集视频中随机抽取5个长度为两秒的视频段,尺寸缩放至 128 × 171 128\times171 128×171。训练时在时空维度上将这个视频时间段随机切割出 16 × 112 × 112 16\times112\times112 16×112×112的数据作为训练数据。这里还是使用mini-batch优化方法,batchsize是30,基础学习率是0.003。学习率每150K次迭代下降一半,1.9M次迭代(大约13个epoch)后结束训练。
除了上述的在Sports-1M数据集上从头训练,文章作者也尝试了在I380K数据集上预训练,然后在Sports-1M数据集上fine-tune。

那么,通过3D ConvNets提取的视频时空特征,是否是优秀的视频描述符呢?这里结合上文提及的优秀的视频描述符应有的四点属性分别进行分析说明。

3D ConvNets提取的视频时空特征是否通用且具有辨别力

3D ConvNets提取的时空特征中封装了视频中目标、环境和目标动作的相关信息,这使得工作者不需要根据不同的任务来微调任务模型。所以它通用且具有辨别力。

3D ConvNets提取的视频时空特征的紧凑性分析

为了评估C3D提取到的特征的紧凑性,文章作者使用PCA将特征投射到较低维度:将在UCF101上提取到的特征投射的低维,再通过linear SVM求出分类精度。为了对比,文章作者也用相同的方式处理了IDT和ImageNet方法提取到的特征。对比情况如下图所示:
图3
在只有10个特征的极端的情况下,C3D 的分类精度比其他两种方法高20%。这表明,C3D提取到的视频特征是紧凑的。

3D ConvNets提取视频时空特征是否高效

相比双流网络提取时空特征,3D ConvNets更加高效,因为卷积运算要比计算光流更加快速。

3D ConvNets提取视频时空特征是否操作简单

3D ConvNets和其他视频时空特征提取网络相比,最大的优点之一就是网络结构简单。

C3D学到了什么

文章作者使用解卷积的方法来理解C3D学习到的内容。如下图所示:
图4
C3D在前几帧首先观察到的是目标的外观,后面几帧对明显的运动进行跟踪。上图展示了C3D训练中Convolution3D_5b特征图的反卷积的两个示例。在第一个示例中,C3D提取到的特征首先侧重于整个人,然后跟踪在其余帧上人撑杆翻滚的动作。 类似地,在第二个例子中,C3D首先聚焦于眼睛,然后跟踪在化妆时眼睛周围发生的运动。

在靠前的3D卷积层,如Convolution3D_2a中,C3D学习低级运动特征,如边缘移动,点运动,边缘方向变化或颜色变化。

在更深的3D卷积层,如Convolution3D_3b中,C3D学习到更高级运动特征,角的移动,纹理的移动,身体部位的移动和目标的运动轨迹。

在最深的3D卷积层,如Convolution3D_5b中,C3D学习到更复杂的运动特征,例如圆形物体的移动(比如骑自行车的动作)。

因此,3D ConvNets与2D ConvNets的不同之处在于目标的外观和运动它都可以选择性地关注

C3D在各类视频分析任务中的应用

Action recognition

文章作者用UFC101数据集(13320个视频)的split-3作为数据集。用上文的C3D提取视频特征,并通过多类线性分类器SVM。
文章作者尝试了三种不同的训练方法:在I380K数据集上从头训练,在Sports-1M数据集上从头训练,在I380K上预训练并在Sports-1M上fine-tune。
在多网络设置中,使用L2正则将上述三个训练数据不用的C3D提取到的视频描述符混合起来。
文章作者的实验结果表明C3D可以很好地捕获外观和运动信息,因此将C3D与ImageNet结合是没有好处的,因为ImageNet捕获的是基于外观的深层特征,这与C3D捕获的特征重复。另一方面,将C3D与IDT组合是有益的,因为它们彼此高度互补。IDT是基于光流跟踪和低级梯度直方图的手工制作特征,而C3D捕获高级抽象特征和语义信息。

Action Similarity Labeling

在这项任务中使用了ASLAN数据集,包括432类,3631个视频,任务是判断给出的一对视频是相同的动作还是不同的动作。通过分割数据集,使用规定的10折的交叉验证。这个问题和动作识别不同,这个任务预测动作的相似性而不是预测动作的标签。这个任务比动作识别更具挑战性,因为这个任务的测试集包含网络从未见过的动作。

Scene and Object Recognition

对于场景识别任务,使用YUPENN数据集和Maryland数据集。YUPENN包括420个视频,14个场景。Maryland包括130个视频,13个场景。
对于物体识别任务,使用物体为图像中心的数据集,包括42类日常的物体。数据集中每一个视频都是第一人称视图。视频中目标的外观和运动特征都和前面用到的数据集不同。

输入分辨率对C3D的影响

图5
文章作者研究了输入图像分辨率对3D ConvNets的影响。使用上述的C3D网络结构,尝试了三种不同的输入分辨率,分别为 64 × 64 64\times64 64×64 128 × 128 128\times128 128×128 256 × 256 256\times256 256×256,称为net-64,net-128和net-256。由于输入图像分辨率的差异,这些网络在最后一个池化层的输出大小不同,因此导致参数数量方面有明显的差异。上图显示了这三个网络在UCF101数据集的split-1上的clip accuracy。 Net-128的表现优于net-64,与net-256的精度相当。上述实验说明net-128在模型训练时,达到了结果精度和内存消耗之间的良好平衡
我们注意到,对于当前的GPU内存限制,当C3D的输入选择 256 × 256 256\times256 256×256的分辨率时,必须使用并行计算(model parallelism)的方式训练网络。

结语

如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值