论文地址:https://arxiv.org/abs/1812.03982
代码地址:https://github.com/facebookresearch/SlowFast
该篇文章有Facebook提出,作者之一为何凯明,文章发表在ICCV2019,文章可以看出是一个特殊的双流法网络,不同于以前的双流法使用图像模态和光流模态(或者其他能代替光流的模态)作为输入,slowfast网络只使用图像模态作为输入。文章启发于生物学中的视觉系统。研究表明视网膜神经节细胞中有约80%的P-cells(Parvocellular)和有约20%的M-cells(Magnocellular),其中M细胞处理高时序频率的信息,P细胞处理空间结构和颜色信息处理的是低频信息。
一、网络结构
同命名可以看出网络有两路,一路是slowpath,一路是fastpath。其中slowpath模拟的是P细胞,主要用于提取空间信息,所以该网络模型参数量较大。而fastpath模拟的是M细胞,主要用于提取快速的时间维度信息,类似与M细胞,该网络较slowpath轻量很多。slowfast网络结构如下图所示:


slowpath和fastpath的区别不仅仅在于参数量不同,还有一方面是slowpath的输入会比fastpath输入维度要低(因为fast要更多的获取时序信息,所以fast的时间维度输入要大于slow输入的时间维度)。所以在slowfast网络里面有三个超参需要自定义,三个超参分别命名为,下面分别介绍三个超参的含义。
1.1
参数
因为网络处理的是视频帧序列,对于一个给定的视频来说,要对该视频输入到网络进行训练,首先需要进行抽帧处理(抽帧也有各种策略,这里不详细介绍,暂且认为每个视频通过某种方式抽取出固定的帧来作为网络的训练输入)。记住抽完帧后获取到的帧数为
。那输入的slow-path网络的帧数固定为T,那么就需要从
帧按照线性采样,抽取出T帧作为slow-path的输入。所以参数
是用来从抽好帧的源中再抽取
帧来作为slow-path的输入,也就是
直接控制输入slow-path的帧数。
1.2
参数
之前提到了fast网络不仅参数量比slow网络少,输入也比slow网络少,假设slow-path输入的帧数为T帧,那么fast网络输入帧数为帧。即
用来控制slow-path和fast-path输入帧数的倍数关系。
1.3
参数
就是用来控制fast网络的基础通道数比slow网络少多少。
举个具体的例子,假设现在有一个视频,总共有200帧图像,通过抽帧抽取了64帧,那么输入到slow-path的帧为
帧,
那么fast-path就需要输入
帧图像。如果slow网络(resnet加入3D卷积的版本)的通道数为64的倍数,64我们称为通道数基数,当
时,fast网络的通道数基数就为
slowfast网络的核心基本原理就解释完了,具体实验参数和实验结果可以参考论文以及官方代码。
网友评论