【论文阅读】Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

【论文阅读】Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

这是一篇2017CVPR的论文,我感觉这篇论文最大的贡献就是提出了kinetics数据集,这个数据集与之前的行为识别数据集相比有质的飞跃。同时文章也提出一种将2D卷积网络扩张成3D卷积网络的思想,使3D卷积网络可以收益于2D卷积网络的发展。感觉以后行为识别越来越玩不起了,面对这么大的数据,想起我那一张破显卡,不禁流下了贫穷的泪水。

论文地址:下载链接
代码地址(pytorch):下载链接

简介

  • 我们知道在ImageNet上预训练的2DCNN对于其他的视觉任务(比如目标检测)是很有帮助的,那么在大的行为识别数据集上预训练的网络在其他视频任务中也可能很有帮助,但是现在没有大的行为识别数据集,怎么办?于是文章首先发布了一个超大的trimmed行为识别数据集kinetics。
  • 提出了大数据集kinetics,文章又把之前的经典方法都在这个数据集上做了实验,并且实验了在kinetics上预训练的模型对于小数据集的结果是否会有提升,实验结果表明使用kinetics预训练的模型能得到更高的准确率。
  • 最后文章提出了一种I3D(Two-Stream Inflated 3D ConvNets)模型,该3DCNN模型是由2DCNN Inception-V1扩张而来,并且可以使用在ImageNet上预训练的参数,实验结果表明这个模型在各个标准数据集上都取得了当时最好的结果。

正文

kinetics数据集

Kinetics数据集包含了400类人体行为,每一类至少有400个视频,这些视频全都来源于YouTube,每个视频时长大约为10s,一共有30多万个视频。视频中的行为可以被分为三类:单一的人体动作、人与人的交互、人与物的交互。这些行为都被分的非常细,有些需要通过时间推理来区分(例如不同类型的游泳),还有一些动作需要通过物体的视觉特征来区分(例如弹奏不同的乐器)。

在kinetics数据集上实验的经典模型

文章复现了经典的模型,如CNN+LSTM的网络、3D卷积网络、基础双流网络,双流卷积融合网络。各种经典网络模型的结构如下图所示:
在这里插入图片描述

  • 上图(a)中为CNN+LSTM的模型结构,其中的2DCNN模型为Inception-V1,CNN最后一层的全局平均池化结果作为LSTM网络的输入,该LSTM网络中包含有batch normalization[1],最后LSTM的输出连接一个全连接层用来分类,该模型在训练的时候使用交叉熵损失函数,损失为所有时刻损失的加和,但是测试的时候只看最后一个时刻的输出的结果。该网络的输入从25FPS的视频中采集的视频段,每隔5帧采集一帧作为输入。训练的时候输入的视频时长为25帧,测试的时候一个视频截取2个视频段,预测结果取平均。
  • 上图(b)中为C3D的模型结构,之前的博文中有详细地介绍链接地址。本文使用的C3D在原来的基础上做了一些改进,在每一个卷积层与全连接层后面加入了batch normalization,同时第一个池化层的时间步长也改为了2。训练时输入的视频段长度为16,测试的时候一个视频分为25段,预测结果为所有视频段的平均。
  • 上图(c)中为基础双流网络[1],本文中的双流网络每一个流中的CNN使用的是Inception-V1。训练的时候appearance流的输入为随机采样的一帧,motion流为10帧堆叠的光流。测试的时候一个视频分为25段,预测结果为所有视频段结果的平均。
  • 上图(d)中为融合双流网络[2],该网络原理上相当于对一个视频分成多段,在每一段上都使用基础双流网络计算结果,最后对所有视频段上双流网络的结果进行卷积融合。双流网络中的CNN也是Inception-V1,卷积融合层的结构为:(3DCNN(3x3x3)-3D池化层(3x3x3)-全连接层),卷积融合层的所有参数使用高斯噪声初始化。训练阶段,网络的输入为5帧RGB视频帧,50帧光流帧,测试阶段,一个视频被分成5段,预测结果为所有视频段结果的平均。

下表中给出了各种经典模型在训练和测试时的输入时间长度。
在这里插入图片描述

Two-Stream Inflated 3D ConvNets 网络结构

首先顾名思义,”Inflated“就说明这是一种将2DCNN扩充为3DCNN的网络,2DCNN网络使用的也是InceptionV1网络,其扩充为3D后的结果如下图所示:
在这里插入图片描述

在将2DCNN扩张成3DCNN时,有以下几点需要考虑:

怎么inflate?

文章中使用的方法是直接将尺寸为 N × N N\times N 的2D卷积核扩充为尺寸为 N × N × N N\times N\times N 的3D卷积核。

如何使用ImageNet预训练的参数?

因为该3D网络是由2D网络扩充而来,所以如何才能将2D网络ImageNet预训练的参数应用于3D网络呢?文章认为如果将一张图片沿着时间复制,可以得到一段”boring video“,即”boring video“每个时刻的视频帧都是这张图片。所以3D卷积核在这段”boring video“上的响应应该和2D卷积核在这张图片上的响应是数值相同的。所以3D卷积核使用ImageNet预训练参数的方法是对2D卷积核的参数沿着时间复制,最后除以3D卷积核的时间维度的大小即可。

扩充全部3D卷积核的时间维度等于空间维度合适吗?

将所有的 N × N N\times N 2D核扩充为 N × N × N N\times N\times N 3D核可能并不合适,因为时间维度的最优值可能受到帧率等的影响,所以文章通过实验确定了最优的3D核时间维度的尺寸。

如何进一步提升I3D的性能?

为了进一步提升网络的性能,文章在网络中加入了光流的输入,RGB视频和堆叠的光流分别输入到3D卷积网络中得到输出结果,最终的结果为这两个流的结果的融合。

所以最终的I3D网络的结构如下图所示:
在这里插入图片描述
其输入输出的视频时间长度如下图:
在这里插入图片描述

实验细节

训练阶段:除了C3D网络,所有的网络都使用了Imagenet预训练的Inception-v1,Inception-v1网络也做了一些改进,在每一个卷积层后边都添加了batch normalization 和relu。优化方法为动量SGD,动量设为0.9,3D网络使用64个GPU而其他网络使用32个GPU并行训练(土豪!!),模型在ucf101,hmdb51,minikinetics和kinetics数据集上大约分别训练了35k,110k,5k,5k步。同时使用了空间随机裁剪,水平翻转等数据增强的方法。如果视频的时长比要求的输入长度还要短,则对视频进行循环。

测试阶段:输入的视频帧直接裁剪成224x224,整个视频的结果是各个视频段的平均,同时也使用了水平翻转的数据增强的方法,增强的数据的结果与原始结果的平均作为最终的结果。

实验结果

模型在各数据集上的结果

所有模型在ucf101,hmdb51,mini-kinetics数据集上的实验结果如下表所示:
在这里插入图片描述
从表中可以看出

  1. 在非常小的数据集(如hmdb-51)上I3D也是取得了非常好的效果,文章认为这是因为I3D使用了Imagenet预训练的结果。
  2. 不考虑hmdb51,所有的模型在mini-kinetics数据集上的结果都很低,说明该数据集还是有一定的挑战性的。
  3. 有意思的是在所有的数据集上模型的表现性能顺序大致相同,看来除了数据,好的模型也是关键。
  4. C3D在大数据集上表现更好,看来3DCNN是真的”data hungry“。
  5. 其他数据集光流的准确率都高于RGB,但是mini-kinetics不是,因为该数据集中包含有大量的相机运动,所以光流的质量不行。
kinetics预训练的参数是否更优?

为了验证使用kinetics预训练的参数是否更优,文章设计了3种实验:

  1. 直接在数据集上训练,不使用预训练参数
  2. 使用mini-kinetics预训练的参数,仅训练最后的全连接层
  3. 使用mini-kinetics预训练的参数,微调网络的全部参数

其实验结果如下表所示:
在这里插入图片描述
可以看到所有的方法基本都会受益于mini-kinetics的预训练,只是不同的方法提升的效果不同。

I3D的实验结果

I3D最终的实验结果如下表所示,可以看到有了kinetics的预训练,其结果是相当的nice。
在这里插入图片描述

探索性实验

文章对I3D的第一层卷积核进行了可视化,如下图所示:
在这里插入图片描述
上图中,列表示时间,第一行为光流输入的卷积核,第二行为RGB输入的卷积核,第三行是ImageNet预训练的Inception-V1的卷积核,可以看到光流核和原始2D核相似,所以从光流提取运动信息就是直接提取光流的空间信息。RGB核与原始2D核相差很大,因为其要同时提取时间运动信息。

[1] Simonyan, Karen, and Andrew Zisserman. “Two-stream convolutional networks for action recognition in videos.” In Advances in neural information processing systems, pp. 568-576. 2014.
[2] Feichtenhofer, Christoph, Axel Pinz, and Andrew Zisserman. “Convolutional two-stream network fusion for video action recognition.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1933-1941. 2016.

猜你喜欢

转载自blog.csdn.net/zzmshuai/article/details/84936338