Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

目录

简介

kinetics数据集

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

Two-Stream Inflated 3D ConvNets 网络结构

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

怎么inflate?

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

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

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

实验细节


简介

这篇论文最大的贡献就是提出了kinetics数据集,这个数据集与之前的行为识别数据集相比有质的飞跃。同时文章也提出一种将2D卷积网络扩张成3D卷积网络的思想,使3D卷积网络可以收益于2D卷积网络的发展。

我们知道在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 2D卷积核扩充为尺寸为 N × N × N  的3D卷积核。

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

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

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

将所有的 N × N 2D核扩充为 N × N × 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,整个视频的结果是各个视频段的平均,同时也使用了水平翻转的数据增强的方法,增强的数据的结果与原始结果的平均作为最终的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值