1. (C3D)Learning spatiotemporal features with 3d convolutional networks-2015ICCV-facebook

概述:采用 3D 卷积和 3D Pooling 构建了网络。 通过 3D 卷积,C3D 可以直接处理视频(或者说是视频帧的 volume)
关键词:C3D,速度快,模型简单
论文地址:https://arxiv.org/pdf/1412.0767.pdf
论文翻译地址:https://www.jianshu.com/p/09d1d8ffe8a4
caff 源码:https://github.com/facebook/C3D

主要贡献

1)与 2DCNN 相比,3DCNN 更适合时空特征学习;

2)对于 3D ConvNet 而言,在所有层使用 3×3×3 的小卷积核效果最好;

3)我们通过简单的线性分类器学到的特征名为 C3D(Convolutional 3D),在 4 个不同的基准上优于现有的方法,并在其他 2 个基准上与目前最好的方法相当。

此外,特征是紧凑的:在 UCF101 数据集上得到 52.8%的准确率只用了 10 维,并且由于 ConvNets 的推断快,计算效率非常高。最后,它们在概念上非常简单,易于训练和使用。

NOTE

速度 C3D 的最大优势在于其速度,在文章中其速度为 314fps。而实际上这是基于两年前的显卡了。 用 Nvidia 1080 显卡可以达到 600fps 以上。 所以 C3D 的效率是要远远高于其他方法的,个人认为这使得 C3D 有着很好的应用前景。

原理图

与 2D ConvNet 相比,3D ConvNet 能够通过 3D 卷积和 3D 池化操作更好地建模时间信息。在 3D ConvNets 中,卷积和池化操作在时空上执行,而在 2D ConvNets 中,它们仅在空间上完成。下图展现出了差异,应用于一个图像的 2D 卷积将输出一个图像,施加在多个图像上的 2D 卷积(将它们视为不同的通道)也输出一个图像。因此,2D ConvNets 在每次卷积运算之后就会丢失输入信号的时间信息。只有 3D 卷积才能保留输入信号的时间信息。

(a)和(b)分别为 2D 卷积用于单通道图像和多通道图像的情况(此处多通道图像可以指同一张图片的 3 个颜色通道,也指多张堆叠在一起的图片,即一小段视频),对于一个滤波器,输出为一张二维的特征图,多通道的信息被完全压缩了。而(c)中的 3D 卷积的输出仍然为 3D 的特征图,即保留了时间信息。

网络架构

3×3×3 卷积核的均匀设置是 3D ConvNets 的最佳选择。这个发现与 2D ConvNets 一致。使用大型数据集,可以根据机器内存限制和计算承受能力,尽可能深入地训练具有 3×3×3 核的 3D ConvNet。使用目前的 GPU 内存,我们设计了 3D ConvNet,具有 8 个卷积层、5 个池化层、两个全连接层,以及一个 softmax 输出层。网络架构如图 3 所示。为了简单起见,我们从现在开始将这个网络称为 C3D。所有 3D 卷积滤波器均为 3×3×3,步长为 1×1×1。为了保持早期的时间信息设置 pool1 核大小为 1×2×2、步长 1×2×2,其余所有 3D 池化层均为 2×2×2,步长为 2×2×2。每个全连接层有 4096 个输出单元。

结果对比

实验效果:UCF101-85.2% 可以看出其在 UCF101 上的效果距离 two stream 方法还有不小差距。 我认为这主要是网络结构造成的

2. (I3D-Inception-V1)Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset-2017CVPR-facebook

概述:以往的 Conv3D 效果很差的原因之一就是数据集太小,喂不饱网络。文章中的 3D 网络并不是随机初始化的,而是将在 ImageNet 训好的 2D 模型参数展开成 3D,之后再训练。因此叫 Inflating 3D ConvNets。
关键词:I3D,Inception-V1,数据集 kinetics,DeepMind 实验室牛逼有钱
论文地址:https://openaccess.thecvf.com/content_cvpr_2017/papers/Carreira_Quo_Vadis_Action_CVPR_2017_paper.pdf
论文翻译地址:https://www.jianshu.com/p/71d35fda32d3
论文源码:https://github.com/deepmind/kinetics-i3d

主要贡献

1)提出了大数据集 kinetics,文章又把之前的经典方法都在这个数据集上做了实验,并且实验了在 kinetics 上预训练的模型对于小数据集的结果是否会有提升,实验结果表明使用 kinetics 预训练的模型能得到更高的准确率。

2)提出了一种 I3D(Two-Stream Inflated 3D ConvNets)模型,该 3DCNN 模型是由 2DCNN Inception-V1 扩张而来,并且可以使用在 ImageNet 上预训练的参数,实验结果表明这个模型在各个标准数据集上都取得了当时最好的结果。

NOTE

迁移学习:提出一个 infalted的思想,利用现阶段已有的 imageNet 去训练 2D 网络,再膨胀为 3D,也就是著名的I3D的方法。

预训练:预训练,这一神奇的操作,来源就是产生于此。在现阶段的 video 方面的方法中,大多数方法在使用了预训练的方法。都可以产生一定的提升。从大规模优化的角度来说,预训练就是在网络中产生了一个较好的初始参数值,之后微调进行收敛,达到一个较好的局部最优解。虽然不知道具体怎么解释,但一定比随机初始化要好。

3.(P3D-ResNet)Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks-2017ICCV

4.(R(2+1)D)A Closer Look at Spatiotemporal Convolutions for Action Recognition-2018CVPR