【Video Recognition】在视频分类任务中如何高效使用3D卷积

【Video Recognition】在视频分类任务中如何高效使用3D卷积


这是我发布的第1篇文章,在这个专栏里,我会持续写一些最近看的文章,希望能够与大家有所交流。
欢迎访问我的知乎专栏 元麦没有山丘
论文题目
Rethinking Spatiotemporal Feature Learning For Video Understanding

  • 论文地址:下载地址
  • S3D-G代码(pytorch):下载地址(作者目前貌似暂停了该项目,无法找到相应的代码)

这篇来自google的文章,实验探究视频分类网络中如果高效的使用3D卷积以及3D卷积是否有效,文章在Something-to-SomethingKinetics-Full两个数据集上做了大量实验,最后还对提出的特征网络在action detection数据集(JHMDB and UCF101-24)上进行了训练,整篇文章非常有借鉴意义。

先说结论:

  1. 3D卷积比2D卷积更加有效
  2. Top-heavy结构的2D、3D混合卷积效果比纯3D卷积效果好,高维的3D卷积更加有效
  3. 利用分离3D卷积代替3D卷积更高效
  4. 空间-时序self-attention提升很大效果

Motivation

整个视频分类任务中,主要面临的有下列三个主要问题:

  1. 如何更好的表征时序信息
  2. 如何更好的表征空间信息
  3. 如何衡量复杂度和速度

Carreira和Zisserman等人的“I3D”利用2D卷积核“inflates”到3D,使得整个模型的性能得到了极大的提升。3D卷积网络始终存在计算量太大的问题,由此引申出了此篇文章作者的思考。

正文

作者受到"I3D"工作的启发,虽然3D卷积有这么好的效果,但是计算量实在太大,如何对此进行速度提升以及能否同时提升性能,作者在文本中提出并解决了以下3个问题。

  1. 3D卷积是否必要,且能否高效的混合3D卷积、2D卷积以此平衡计算量和性能?
  2. 时序和空间维度同时卷积是否必要,能否分别卷积?
  3. 针对上诉问题,如何提升现有网络的性能和速度?

对于第一点思考作者基于I3D提出了2种不同的3D、2D混合网络,其分别为Bottem-Heavy-I3D、Top-Heavy-I3D,将3D卷积分别应用在网络的Bottem端(靠近输入侧)、Top端(靠近输出侧)

对于第二点思考作者借鉴了深度可分离卷积,提出了利用(2D+1D)卷积代替3D卷积

对于第三点思考作者基于上述问题的发现,提出了S3D-G,利用(2D+1D)代替3D卷积,G表示Feature Gain,是一个self-attention,最后在数据集上的效果超过了I3D的性能,以及速度更快。

模型架构

I3D架构

先回顾一下I3D网络的基本架构,其由Inception-V1inflated过来,所以架构相似。

I3D架构图

Bottom-heavy-I3D-K网络和Top-heavy-I3D-K 网络

Bottom-heavy-I3D-K在I3D网络中前K层卷积用3D卷积,其余用2D卷积。Top-heavy-I3D-K则相反,在I3D网络中将后K层用3D卷积,其余用2D卷积,两者的网络架构图如下所示。

image

S3D网络

S3D顾名思义,作者将I3D网络中所有的3D卷积核用(2D+1D)的方式代替,显存占用量得到了极大的减少,其架构如所示。

image

S3D-G网络

在S3D网络的基础上添加了Feature Gating模块,Feature Gating-attention模块与17年ImageNet冠军SENet(论文地址)提出的SEblock非常相似,其不同之处在于使用了空间-时序池化来代替空间池化。为方便起见,我们采用SENet的图进行讲解。

Squeeze-and-Excitation block

上述就是Feature Gating模块的整个过程,作者先对input x进行空间-时序平均池化(分别测试空间-时序池化、空间池化、时序池化,空间-时序池化的效果是最好的),池化过后,进行bias相加,sigmoid函数激活,我们得到1*1*C的权重,对原输入x进行加权,最后得到了ouput。整个算法的公式如下所示。


卷积变成了一个池化操作,加速运算同时,更具有全局感受野。

实验

3D卷积到底带来了什么价值

作者将I3D网络中所有的3D卷积核替换成2D卷积,在Something-to-SomethingKinetics-Full两个数据集进行训练,另外,2D卷积理论上是学不到时序信息的,所以当时序帧逆序输入时,直观来讲结果应该不会相差太大。作者利用正常时序的数据进行训练,然后再用逆序进行测试。结果如下表所示,非常有意思。I2D网络因为并没有捕捉时序信息,在两个数据集上正序、倒序没有什么区别。但是I3D网络在Kinetics-Full数据集上表现正常,但是在Something-to-Something数据集上,I3D网络的逆序输入时表现非常差。

I2D、I3D网络正反序测试结果

如何高效设计一个3D、2D混合模型?

对此作者设计出了Bottem-Heavy-I3D、Top-Heavy-I3D两种模型,经训练后,其结果对比图如下所示。

Mini-Kinetics-200数据集训练结果

我们可以发现Top-heavy结构明显优于Bottom-heavy结构,且利用分离3D卷积的S3D模型无论是计算量还是精度都有一定的优势。
3D网络性能的提升是否真的因为3D卷积核学到了更多的信息?作者对I3D网络不同层的卷积核的分布进行了可视化,如下图所示,从左往右,卷积核位置依次增加。

从底层到顶层卷积核参数可视化

每个图的横坐标是时序的偏移量,t=0时为当前图。作者从Inception网络移植过来的权重是在 -1~1 之间,经过训练,底层的卷积核分布仍然在-1~1之间,没有什么变化,而右边顶层卷积核参数则发生了较大的变化,说明经过训练,顶层的卷积核捕捉了更多的时序信息。

S3D-G网络结果

最后利用上述分析得到的结果,作者设计出了S3D-G网络,在Kinetics-Full数据集上训练后与其他算法对比结果如下所示。

S3D-G结果对比

总结与展望

在这篇文章中,作者针对视频分类任务中常用的3D卷积进行了深入的分析,做了大量的实验,最终得出了一下三个结论

  1. 3D卷积比2D卷积更加有效
  2. Top-heavy结构的2D、3D混合卷积效果比纯3D卷积效果好,高维的3D卷积更加有效
  3. 利用分离3D卷积代替3D卷积更高效
  4. 空间-时序self-attention提升很大效果

最后也利用上述结论基于I3D网络设计出了S3D-G网络,在视频分类任务中得到了不错的效果。

Reference

[1] Xie S, Sun C, Huang J, et al. Rethinking spatiotemporal feature learning: Speed-accuracy trade-offs in video classification[C]//(ECCV). 2018: 305-321.
[2] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//(CVPR). 2018: 7132-7141.


作者 @鼎鼎大明
2019 年 03月 14日

你可能感兴趣的:(【Video Recognition】在视频分类任务中如何高效使用3D卷积)