你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

SlowFast 论文关键点解读

2021/12/11 20:29:30

原论文SlowFast Networks for Video Recognition

这篇工作是何恺明团队在2019年提出的分开处理空间信息和时序信息的方法。自然图像里空间维度x轴和y轴两个方向具有相同的可能性,但视频里,并不是所有的时空方向都有相同的可能性,慢动作比快动作的可能性大。因此就不应该对称的看待空间和时间,所以使用了两个分支来分解处理。关于这篇文章的动机,原文写得非常好,机器之心有一篇《快慢效果结合好》的推文阐述得很详细了,我就不在此赘述。而直接进入技术细节。

模型架构

网络架构如图所示。图例是一个人在挥手, 原视频里既有相对静止的画面(自始至终挥手的主体是人,场景是室内的沙发),也有快速的动作(挥手)。类别(“人”这个类别,“沙发”这个类别)的空间语义变化很缓慢,类别的识别是“慢速”刷新的;而执行的动作(挥手)速度比其主体识别的速度要快得多。这样快速变化的动作需要“快速”刷新。

Slow pathway 慢通道

模型结构上面的分支Slow Pathway, 输入是低帧率的采样,捕获稀疏帧图像。Low frame rate意味着这个“慢通道”使用了一个较大的时序跨度,实验里设置为每秒跳过了16帧(a large temporal stride  =16 ),如果按30fps算,即每秒只采样2帧。若慢通道的采样数为T,则原视频的长度即为T * τ 帧。“慢通道”用于提取空间语义信息。

 

Fast pathway 快通道

下面的分支Fast Pathway, 输入是高帧率的采样(为慢通道的α倍, 通常设为8,即输入的采样数为 [公式] T),则每秒跳过的帧数为 [公式] (a small temporal stride, [公式] = 2) 。 在使用更高的时序分辨率作为输入时,也保持了同样的高时序分辨率作为输出,没用采用时序下采样,输出仍然是 [公式] T。

但为了减少运算量以及让这条通道专注于时序信息的提取,本文在设计时采用了轻量化原则,其卷积通道(卷积核的个数决定)通常设置为慢通道的 [公式] 倍,通常设置为1/8。文章之前提到了这个网络架构的设计是有生物学依据的,即人的视觉细胞有80%的P-cell是用于处理空间细节、色彩等低时序分辨率低信息,而20%的M-cell用于处理高时序频率的动作信息。这里快通道的轻量化设计也是保持了其计算量大概占网络总计算量的20%。

通常来说,较低的通道(卷积核少)是一种对空间语义信息理解的削弱,而本文的实验说明了通过削弱快通道的空间信息提取能力,就可以增强其对时序信息的提取能力,实验如下图(左),β=1/6和1/8时,top1和top5分别为最高。受到这样的启发以后,作者又进一步削弱了其空间理解能力(把RGB图像改成了灰度图,光流等)发现,去掉色彩信息以后的灰度图作为输入,模型的复杂度降低,但是准确率不受影响,实验如下图(右)

侧向连接 Lateral connections

侧向连接的方法很通用,比如在2D图像物体检测的特征金字塔,把不同层的特征进行融合;比如在视频检测的一个主流方法Two Stream,也采取了类似的融合策略。在这里,如结构图所示,快通道的输出结果通过侧向连接送入慢通道,但是两个通道的数据样本形状是不同的,快通道的特征张量形状是( α T, [公式] , [公式] C), 慢通道则是(T, [公式] , C), 这就需要在融合以前对快通道的输出形状进行变换。文章实验了三种变换方式, 第(iii)种最有效。

(i) ( α T, [公式] , [公式] C) -> (T, [公式] , [公式] C) 即把 [公式] 帧压缩到1帧

(ii) ( α T, [公式] , [公式] C) -> (T, [公式] , [公式] C) 即每隔 [公式] 帧进行一次采样

(iii) 沿着时间轴进行5*1*1的3D卷积,跨度为 α ,输出的通道数为2 [公式] C

*之后会再写一篇文章讲代码实现,那篇文章里会详细说明这种连接方式

网络实例(以ResNet-50为主干架构)

来看一下以ResNet-50为主干网络的网络结构。慢通道和快通道使用的都是3D卷积(或者3D变体)。

卷积核的形状记做(TxS2, C), 分别对应时序,空间,通道;步长记做(temporal stride, spatial stride^2), 其中时序步长指的是每秒跳过多少帧,空间步长就是在2D图像特征上的卷积步长。

快通道里橙色字体高亮出其只用了慢通道1/8的通道,绿色字体高亮出其高时序分辨率。

文章有实验结果但是没有公开代码。网络结构比较简单,容易复现,但是实现细节有许多需要注意的地方。目前正在Charades数据集上做实验,等出来结果以后再跟文章的结果做一下对比。

转载自:SlowFast 论文关键点解读 - 知乎