《X3D: Expanding Architectures for Efficient Video Recognition》论文详解

论文地址:https://arxiv.org/abs/2004.04730
代码地址:https://github.com/facebookresearch/SlowFast

该篇文章也是Facebook的作品,为什么说也,因为它是slowfast之后出的,而且可以理解为是slowfast思路上的改进版本,代码仓库和slowfast是一个仓库。文章说它的启发来自于之前2D高效网络,将扩展(expand)操作应用到3D卷积网络中。但是由于实验方式,网络结构,对标baseline,还有文章也提到了slowfast中计算量较复杂的slow-path是否是必要的,所以我认为它其实就是slowfast网络思路的改进,虽然它的网络结论不完全来自于slowfast,而且纯实验。

该文章的实验方式也很人工,没有用的nas,完全人工搜索出来,所以理论上没有太多需要解释的地方。只是实验结果从速度和精度都优于slowfast,所以大概本博客大概介绍一下它的实验思路。

首先文章提出几个网络可以拓展的维度,如下图所示


1.png

图中所有的都是扩展对应维度的因子,下面解释一下图中各个参数对应维度的含义:

  • 作用的维度是空间分辨率
  • 作用的维度是时间维度的分辨率
  • 作用的维度也是时间维度的分辨率
  • 作用的维度是网络的层数,即网络深度depth
  • 作用的维度是网络中特征的通道数,即网络宽度width
  • 作用的维度是残差层的特征通道数,即残差层的宽度width

上述有两个因子参数是作用在时间维度的,在此特别说明一下,增加输入视频的时长可以增加的意思是,也可以降低视频的采样率。

定义好上述因子后,接下来就是做实验了,实验思路就是控制变量法,每次只变动一个参数,且变动参数使得网络的计算复杂度变为之前的2倍左右,最初的网络名为X2D,当下表格所有因子为1时即为X2D网络结构,最终文中的X3D结构有几个,且都是通过实验搜索出来的。


2.png

上述实验步骤可以参考下图,在保持X2D两倍计算量的情况下,分别修改六个因子中的其中一个,可以看出修改得到的效果最好,同理在此基础上继续修改六个因子,得到修改效果最好,然后依次将实验进行下去。

3.png

因为上述实验是离散的,所以在给定一定复杂度的情况下,只按照上述操作无法给出给定复杂度的模型。文章提出了backward contraction,其实就是在最后一步的时候按照复杂度要求修改对应因子的数值。比如最后一次是修改帧率使得帧率为之前的2倍,但是为了迎合给定复杂度的要求,可以将帧率因子修改为<2的某个数值。这里拿X3D-S这个模型来说明,X3D-S模型本来是第7次扩展后的结果,按照每次扩展两倍的计算量来说的话,在X2D计算量为20.67M FLOPS的基础上扩展倍,也就是,但是文章有要求X3D-S模型的计算量要,所以最后一次不是将扩大两倍,最终X3D-S模型计算量为1.96G FLOPS。其他模型类似计算出来,具体参数如下所示:

4.png

X3D的基本思路就这些,具体实验结果可以查看原文。

你可能感兴趣的:(《X3D: Expanding Architectures for Efficient Video Recognition》论文详解)