Abstract
- 解决的问题?
video recognition/detection
- 怎么解决的?
提出了SlowFast网络。1) Slow pathway: 在低帧率上捕捉(capture)空间语义;2)Fast pathway,在高帧率上以精细的时间分辨率捕捉动作。
- 结果如何?
action recognition/detection在多个公开数据集上达到了SOTA结果。
1. Introduction
现有的研究方法?存在什么问题?
在图像 I ( x , y ) I(x,y) I(x,y)的识别中,习惯上对称的处理两个空间维度x和y。这一点已经被自然图像的统计数据证实了。但是与图像不同,视频信号 I ( x , y , t ) I(x,y,t) I(x,y,t)并不是各向同性的,慢速的运动要比快速的运动更为常见,因此我们不应该再同等的对待空间和时间。而这是过去的时空卷积(spatiotemporal convolutions)模型存在的问题. (因为缺乏相应的背景知识41,26,2,58,第一段看的不是很懂。最后举的例子也没整明白他想说明什么。但是大概的意思就是要把spatial和temporal分开处理)
- 本文是怎么解决上述问题?提出了哪些方法
提出了一种双通道的训练模型:
- slow: 能够从图像或少数的几个稀疏帧中捕捉语义信息,并且该条通道上的帧率和刷新频率都很低(Fig.1中的‘Low frame rate’以及特征图中相对比较小的T维尺寸)。在基于视频的识别问题中,挥手这个动作并不会改变对于“手”这个类的识别,同样即使是从走变成跑,“人”这个类别标签仍然不会被改变。因此类别语义(类似的还有颜色,纹理等)的识别可以在一个相对较慢的刷新速度下识别(个人理解就是一个较低的帧率,不需要密集帧快速刷新)。然而正在执行的动作可以比他们的类别主体发展的更快(个人理解,动作是短时间内的连续变化,低帧率会漏掉中间的细节从而影响对动作类别的判断),因此对于动作的识别应该使用更快的刷新率(即更高的时间分辨率)
- Fast:用于捕捉快速变化的动作。虽然帧率变高了,但是其计算量只占总体的20%左右。因为这个网络的通道数比较少,而计算量(用每秒浮点运算次数FLOPs度量)与每一层通道数是成平方相关的。Fast通道不在中间层的时间维(T)上做任何池化,这样可以做到时间维度的高保真。
最后两个网络的特征会做一个lateral connection(跟FPN类似)。整个框架的核心思想就是两个通道的帧率(刷新速度)不同。同时这个网络也受到了生物学研究的启发,人眼中感知慢速运动(空间,颜色)的细胞占了80%,快速运动的占了20%(基本上跟Fast通道的计算量差不多)。所以该结构还具有仿生性。
- 本文的主要贡献
SlowFast在多个公共数据集上达到了SOTA结果,这都是因为slow、fast的设计思想。
2. Related Work
3. Methods
SlowFast网络可以看做是一个工作在两种不同帧率上的单一流(single stream)架构,之所以按照Slow通道和Fast通道来描述是为了体现其与人眼视网膜细胞的同功性。
Slow pathway
以步长 τ \tau τ对输入的clip(剪辑,一个片段)进行采样,比如原始clip长为 T τ T\tau Tτ,那么Slow路径的采样的帧数就为 T T T
Fast pathway
High frame rate
Slow路径的采样步长为 τ \tau τ,Fast的路径的步长就为 τ / α , α > 1 \tau / \alpha, \alpha > 1 τ/α,α>1,显然 α \alpha α是用来调整两个路径的步长比例的系数。
High temporal resolution
Fast路径在时间维度上不会做任何的下采样(池化或者会让输出尺寸变小的卷积),除了分类前的全局池化层。因此整个训练过程中,时间维的尺寸都是 α T \alpha T αT
Low channel capacity
之前提到过,Fast路径特征图的通道数更小,因此大大减小了计算量。Fast路径和Slow路径的通道数通过 β , β < 1 \beta, \beta<1 β,β<1来调整。一般来说,文中 α = 8 , β = 1 / 8 \alpha = 8, \beta=1/8 α=8,β=1/8。所以,理论上Fast路径的FLOPs大概是Slow的 β 2 = 1 / 64 \beta^2=1/64 β2=1/64.文中提到,通道数少等价于较弱的空间语义表达能力(但是我并没有看过这种说法)。然而,实验结果表明牺牲掉空间语义表达能力增强对时间的建模能力是值得的。进一步,作者还尝试通过降低输入视频的分辨率或者扔掉颜色信息来弱化空间容量(spatial capacity),都取得了不错的结果。
Lateral connections
在图一中可以看到这种侧向连接的作用是将Fast路径和Slow路径的特征图进行融合。图一中展示的是单向连接,即只有Fast->Slow,而没有反方向的连接。作者也尝试过双向连接,两者的效果差不多。这种连接,让两个路径不再孤立地学习的特征,因为反向传播时梯度会在两条路径中传递。但是因为两条路径的特征图尺寸不一致,所以还需要通过变换(具体见下一节)达到尺寸匹配才能融合。
Instantiations
Table1 给出了一个具体的实现。其中Non-degenerate temporal filters是通过填充实现的,也就是padding=F // 2,具体可见. 实际上当T维的尺寸为1的时候,三维卷积核退化成了二维卷积核,在Slow路径上有大量的这种卷积核( 1 × 1 2 1 \times 1^2 1×12, 1 × 3 2 1 \times 3^2 1×32),所以这条路径更多的是在静态的图像上学习。关于Lateral Connections作者提出了三种实现方式:
前两种的示意如下:
第三种我用Table1的输出尺寸做了一个实验,我猜测此时仍然是做一个non-degenerate的时间卷积,所以padding=5//2=2. α , β \alpha,\beta α,β都取上面提到的默认值,计算输出的T维大小为: ( 32 − 5 + 2 × 2 ) / 8 + 1 = 4 (32 - 5 + 2\times 2)/8+1=4 (32−5+2×2)/8+1=4,注意这里需要向下取整。使用torch的实验结果如下:
(1,512,4,7,7)对应(N,C,T,H,W)。这样Slow和Fast的输出除了C这一维,大小都一致了。最后作者提到融合可以通过sum或cat操作完成。