论文地址: 论文
官方代码: 官方代码
一、传统的方法存在的问题
1、没有将变化大和变化小的行为作出区分计算
(1)一个视频中的行为其实可以分为静态和动态的,一般认为做出行为的人是动态的,而背景是静态的,传统方法将静态和动态的一起处理,不仅导致计算量大,还无法更好的提取我们需要的特征(动态特征)。
(2)除此之外,针对动态内容,有的动作持续时间很长,动作幅度很小,如步行。而有的动作持续时间很短,动作幅度大,如跑步。传统的方法将二者都取相同数量的帧来提取特征,从而导致的问题是对步行的行为过多的提取特征,增加了冗余计算量;对跑步行为过少的提取特征,丢失了一定的行为信息。
2、双流法的计算量和最后fc8的融合依旧是个问题
传统双流中的光流的计算量很大,即使针对光流后来的人也做了很多的工作,但是计算量还是较大。其次,双流法在最后的融合中的计算方式也存在一定的问题,毕竟一个是RGB,一个是光流(x,y向量),怎么合理的融合依旧是个问题。下图中有几个基于光流改进的方法:histograms of flow,motion boundary histograms,trajectories。
二、本文的改进
1、slow与fast两条路进行结合
上图是全文的核心思想图。意思就是将输入的视频将一个流分为两种帧速率的分支,一个是低帧速率的Slow方式,一个是高帧速率的Fast方式。对于Slow方式采用了每秒跳过16帧的方式,Fast采用每秒跳过16/8=2帧的方式。下面就是结合上图和下图讲讲**(1)slow和fast的优点、(2)fast怎么结合到slow上面、(3)二者在最后的融合。**
(1)**slow分支:**它可以是任意的卷积模型,因为他本身就是一些跨度较大的帧,所以专门用于提取空间特征的。
**fast分支:**因为输入的特征是一些高帧率的帧,所以文中尽可能不丢掉这样的连续信息,不采用之前的池化(temporal pooling)和时间卷积方式(time-strided convolutions),要尽可能的将这些信息保留下去。其次,由于fast更偏向处理时序特征,所以他对空间维度的信息不需要像slow一样更加精细,所以他大可不必让空间信息占用太多的容量,在fast中削弱空间容量,包括减少输入的空间信息和删除色彩信息。(按照自己的理解表述,原文表述如下:)这样的话就可以看上图了,橙色表示fast可以有更少的通道数,绿色为fast可以有更多的时序数。
(2)侧向连接,让fast连接slow。主要有三种方式:
- Time-to-channel:就是把α帧都融合到一个帧里
- Time-strided sampling:从α帧中采样一个帧
- Time-strided convolution:用一个输出通道为2βC且步长为α的5×1方的3D卷积来处理。
原文表述如下:
(3)二者在最后的融合
他这里对比了了双流的融合方式,用了bidirectional fusion方式来表达,最后用全局平均池化、全连接来融合。原文如下图:
三、实验
这是在kinetics-400和600上的表现,均达到了当前最好的效果。然后又做了只有fast、只有slow、二者均有的对比,如下图。
四、总结
SlowFast在两个常用数据集上都表现出了最好的效果,而且他的想法很不错,将视频中不同的行为细化,节奏快的行为通过slow提取,节奏慢的用fast,理论有很大的创新,实验上也有着轻参数、计算量小、精度高的特点。同类型的还可以对比一下smallbig方法。
通过slow提取,节奏慢的用fast,理论有很大的创新,实验上也有着轻参数、计算量小、精度高的特点。同类型的还可以对比一下smallbig方法。