论文:Learning Spatiotemporal Features With 3D Convolutional Networks
作者:FaceBook AI研究院
来源:ICCV2015
代码:官方Caffe Code
本文主要有以下三个贡献:
计算机视觉领域已经在 视频分析 领域深耕十几年了,一直在研究处理不同的问题,包括 动作识别[26],异常事件检测[2],以及活动理解[23]。
[26] Laptev and T. Lindeberg. Space-time interest points. In ICCV, 2003. 1, 2
[2] O. Boiman and M. Irani. Detecting irregularities in images and in video. IJCV, 2007. 1, 2
[3] T. Brox and J. Malik. Large displacement optical flow: Descriptor matching in variational motion estimation. IEEE TPAMI, 33(3):500– 513, 2011. 8
但是,用于解决关于大型视频数据库任务的一个通用的视频描述子仍是迫切需要的。
一个有效的视频描述符应该包含以下四个属性:
虽然 3DCNN 之前已经被提出了[15,18],但是据我们所知,我们的工作在大规模监督训练数据集和现代化深度架构下使用 3DCNN, 在不同的视频分析任务中都取得了很好的性能。同时,我们也发现逐步地汇聚空间和时间信息,构建更深的网络能取得更好性能。
如上图所示,2D卷积输入一张图片或者多通道图片都得到一张输出图。这样,在每一次卷积操作后都会损失输入信号的时间信息。而3D卷积则会保留输入信号的时间信息。
现在,我们经验地确定一个针对3D卷积的最优结构。因为在大型数据集上训练深度网络很耗时,所以我们在一个中型数据集 UCF101 上来搜索我们的结构。然后,我们用一个容量稍微少一点的网络在大型数据集上验证我们的结构。
根据在2D卷积神经网络上的研究[37], 3 × 3 3\times3 3×3 大小的卷积核伴着更深的网络层数能取得最好的结果。所以,我们的结构搜索会固定 空间感受野 为 3 × 3 3\times3 3×3,然后只改变时间维度上的深度。
记号:
通用网络设置
网络结构中的变量
为了寻找一个好的3D ConvNet架构,我们只改变卷积层的内核时间深度 d i d_i di,而保持所有其他常见设置如上文所述。
我们实验两种类型的网络结构:
在 UCF101的 train split 1 上进行训练,在 test split 1 上进行测试,精度如下:
2.3.1 网络结构
由之前的讨论得出, 3 × 3 × 3 3\times3\times3 3×3×3是 3D ConvNet 比较好的选择。鉴于我们的 GPU 显存,我们设计如下结构的网络(为了简单,我们称之为 C3D):
2.3.2 数据集
我们在 Sports-1M[18] 数据集上训练我们的C3D(其是目前最大的视频分类基准数据),其包括了:1.1 million 的运动类视频(UCF101的100倍),每个视频属于 487运动类别 中的一类(UCF101的5倍)。
A. Karpathy, G. Toderici, S. Shetty, T. Leung, R. Sukthankar, and L. Fei-Fei. Large-scale video classification with convolutional neural networks. In CVPR, 2014.
2.3.3 训练
2.3.4 Sports-1M 分类结果
如上表所示,将我们的 C3D 和 DeepVideo[18],Convolution pooling[29] 进行比较。
18 A. Karpathy, G. Toderici, S. Shetty, T. Leung, R. Sukthankar, and L. Fei-Fei. Large-scale video classification with convolutional neural networks. In CVPR, 2014.
29 J. Ng, M. Hausknecht, S. Vijayanarasimhan, O. Vinyals, R. Monga, and G. Toderici. Beyond short snippets: Deep networks for video classification. In CVPR, 2015.
其中,在不同方法中有些差别:
经过训练后,C3D可以作为特征提取器用于其他视频分析任务。
为了提取 C3D特征,我们进行以下操作:
我们使用 反卷积方法[46] 来理解 C3D 在内部学习到了什么。
M. Zeiler and R. Fergus. Visualizing and understanding convolutional networks. In ECCV, 2014
我们观察到C3D一开始只关注前几帧的外观(apparence),然后在接下来的几帧中 跟踪突出的运动 。
图4显示了两个激活度最高的 C3D conv5b 特征图的反卷积,并被投影回图像空间。
在第一个例子中,该特征聚焦于整个人,然后在剩下的帧跟踪撑杆跳运动。类似地,在第二个例子中,它首先关注眼睛,然后在化妆时跟踪眼睛周围发生的动作。
因此,C3D不同于标准的2D ConvNets,它有选择地兼顾运动和外观。我们在补充材料中提供了更多的可视化,以便更好地了解所学习的特性。
对于 iDT 特征,使用 bag-of-word 表达(每个特征通道 (HOG, HOF, MBHx, and MBHy) 都有5000个codebook;
然后每个通道分别使用 L1范数 进行标准化,最后进行联合形成 25K长的特征向量。
对于 ImageNet,和C3D类似,每帧都提取fc6层得到特征然后取平均值作为最后视频的特征。
最终都是用 多分类SVM分类器进行分类
[36] K. Simonyan and A. Zisserman. Two-stream convolutional networks for action recognition in videos. In NIPS, 2014.
[25] Z. Lan, M. Lin, X. Li, A. G. Hauptmann, and B. Raj. Beyond gaussian pyramid: Multi-skip feature stacking for action recognition. CoRR, abs/1411.6660, 2014
[31] X. Peng, L.Wang, X.Wang, and Y. Qiao. Bag of visual words and fusion methods for action recognition: Comprehensive study and good practice. CoRR, abs/1405.4506, 2014.
[29] J. Ng, M. Hausknecht, S. Vijayanarasimhan, O. Vinyals, R. Monga, and G. Toderici. Beyond short snippets: Deep networks for video classification. In CVPR, 2015
[43] L. van der Maaten and G. Hinton. Visualizing data using t-sne. JMLR, 9(2579-2605):85, 2008.
数据集: ASLAN 包含 3,631段数据,分为 432 个动作类别。
任务定义:预测给定的一对视频是否属于相同的类别。
特征:将视频划分为有 8 帧重叠的 16-frames clips,然后对每个clip提取 C3D 特征: prob, fc7,fc6, pool5。最后视频的特征通过对每种特征取平均得到。
分类模型:按照[21]中的设定,给定一队视频,我们计算12中不同的距离。对于4种特征,就有 12 × 4 = 48 12 \times 4 = 48 12×4=48 长度的特征向量,然后单独的进行归一化。 最后,再使用一个 SVM 进行分类是不是属于同一类别。
结果:
[21] O. Kliper-Gross, T. Hassner, and L. Wolf. The action similarity labeling challenge. TPAMI, 2012.
未翻。
测试了多种方法在整个 UCF101 数据集上提取特征的时间消耗(包括 IO),包括使用一个单 CPU 或者 一个单GPU K40 Tesla GPU,比较如下:
本文主要解决使用3D卷积来提取视频的时空特征,同时研究了 3D卷积核的最佳时间维度长度。 得出 C3D 能同时比较好地建模 外观和运动特征。