论文地址: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,所以大概本博客大概介绍一下它的实验思路。

首先文章提出几个网络可以拓展的维度,如下图所示
在这里插入图片描述

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

  • γ s \gamma_s γs作用的维度是空间分辨率
  • γ t \gamma_t γt作用的维度是时间维度的分辨率
  • γ τ \gamma_{\tau} γτ作用的维度也是时间维度的分辨率
  • γ d \gamma_d γd作用的维度是网络的层数,即网络深度depth
  • γ w \gamma_w γw作用的维度是网络中特征的通道数,即网络宽度width
  • γ b \gamma_b γb作用的维度是残差层的特征通道数,即残差层的宽度width

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

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

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

因为上述实验是离散的,所以在给定一定复杂度的情况下,只按照上述操作无法给出给定复杂度的模型。文章提出了backward contraction,其实就是在最后一步的时候按照复杂度要求修改对应因子的数值。比如最后一次是修改帧率使得帧率为之前的2倍,但是为了迎合给定复杂度的要求,可以将帧率因子修改为<2的某个数值。这里拿X3D-S这个模型来说明,X3D-S模型本来是第7次扩展后的结果,按照每次扩展两倍的计算量来说的话,在X2D计算量为20.67M FLOPS的基础上扩展 2 7 2^7 27倍,也就是 20.67 × 2 7 = 2645.76 M F L O P S ≈ 2.6 G F L O P S 20.67\times 2^7=2645.76M FLOPS \approx 2.6G FLOPS 20.67×27=2645.76MFLOPS2.6GFLOPS,但是文章有要求X3D-S模型的计算量要 ≤ 2 G F L O P S \leq 2GFLOPS 2GFLOPS,所以最后一次不是将 γ t \gamma_t γt扩大两倍,最终X3D-S模型计算量为1.96G FLOPS。其他模型类似计算出来,具体参数如下所示:
在这里插入图片描述
X3D的基本思路就这些,具体实验结果可以查看原文。

视频算法交流qq群:657626967

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐