SlowFast论文阅读笔记
时间:2023-10-21 13:07:01
SlowFast论文阅读笔记
阅读前请看阅读说明书!阅读前请看阅读说明书!阅读前请看阅读说明书!
阅读笔记主要记录你自己SlowFast有些想法和方法并没有全部被吸收,因为我不需要论文中的一些东西,所以我没有全部写。
摘要
我们提供视频识别SlowFast。我们的模型包括以低帧速运行的慢速路径捕获空间以及语义信息高帧快速路径以速率运行捕获运动信息的精细时间分辨率。
通过降低其channel容量可以使快速路径非常轻,但可以学习视频识别的有用时间信息。
我们的模型在视频中的动作分类和检测方面都取得了很强的性能,我们的慢速快速概念指出了很大的改进。
一.Introduction
SlowFast作者在介绍中介绍:对于图像,我们可以对称地空间的两个维度(H、W),所谓的对称,也就是说,处理方法可以相同,因为对于图片,当时间确定时,我们可以将像素视为关于h、w的函数:
p T = t = F ( H , W ) p_{T=t}=F(H,W) pT=t=F(H,W)
这是图片的处理,但如果T维度也在变化,那么我们就不能像处理图像一样对称处理各维度的信息,因为增加了时间维度,时间维度T和空间维度H、W不对称处理方法不应对称。用论文中的话来说,挥手不会改变自己作为手的身份,人走路也不会改变自己作为人的身份。
基于这种直觉,作者提出了一种视频识别方法慢速快速模型快速模型。
[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-ys43vpTH-1658223133992)(img/image-20220506154634769.png)]
- 一条路径设计用于捕获图像或多个稀疏帧给出的语义信息,以及它低帧速率和低更新速度运行。这条路更注重空间语义信息。
- 相比之下,另一种方式负责快速刷新速度和速度时间分辨率高操作捕捉快速变化的运动。同时,为了降低计算能力支出,道路设计具有较少的通道和较弱的处理空间信息的能力。简单地说,这条路的信息张相对较大瘦长,另外,一路信息张量比较胖扁。
作者随后解释说:我们的‘双流网络’不同于意想不到的。Two-Stream Networks,双流概念完全不同,SlowFast不计算光流,模型是End to End是的。以前的双流神经网络也需要通过光流网络或其他方法从帧序列中获得光流图(Flow map)。
有趣的是,作者说,他的网络也受到灵长类动物视觉系统的启发,以前的双流神经网络也是如此。SlowFast利用Slow path充当P细胞(一种对空间颜色敏感的细胞,但对颜色变化不敏感),Fast path充当M细胞(一种与P细胞相对应的细胞)。原文说:
“我们的方法部分受到灵长类动物视觉系统中视网膜神经节细胞的生物学研究的启发,尽管无可否认这个类比是粗糙和过早的。这些研究发现,这些细胞中80%是小细胞(P15-20%的细胞和大细胞(M细胞)。M细胞工作时间频率高,对时间变化反应快,但对空间细节或颜色不敏感。P细胞提供细细的空间细节和颜色,但时间分辨率低,对刺激反应慢。”
作者团队在Kinetics-400,Kinetics-600,Charades 、AVA验证了数据集SlowFast的功效。
二.Related Work
1.时空滤波器
作者提到了流行的时空滤波器。所谓时空滤波器,就是时空卷积。以前的卷积是2D的,3D后面优化的卷积甚至3D卷积(2D/3D混合,单独1D时间滤波及2D空间滤波)
2.视频理解的光流
光流法在视频理解很早开始就用了,根据原论文的内容来看…感觉作者不太喜欢光流法。光流法虽然效果很好,但需要很多时间,不是端到端的学习预测方法,在方法上也不尽如人意——就像RCNN和YOLO,你更喜欢用哪个?反正我肯定会选择。YOLO。
三.SlowFast网络结构
1.Slow path
作者定义了一个概念:
τ \tau τ
即slowpath仅处理τ帧图片中的一个。
2.Fast path
-
采样频率:
τ α \frac{\tau}{\alpha} ατ
这里的快速通道的采样频率缩小为原来的:
α \alpha α
倍。一般来说a我们取8,那么相对于慢通道,快速通道每两种帧数就要处理一张。 -
高时间分辨率:
相比于以往的3D卷积方法,SlowFast作者提出了“保留高时间分辨率”——也就是说让时间维度T尽可能长、大,从网络结构中我们也发现如此:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1J6fh0ir-1658223133993)(img/image-20220507002729518.png)]
-
低通道容量:
这里作者模拟灵长类动物神经中枢的两种细胞各自的占比,作为计算量占比,M细胞计算量占比20%,那么我们就让快速通道的channel维度缩小一定倍数,这样做的目的就是削减快速通道在空间信息提取上的能力。作者也定义了一个超参数:
β = c h a n n e l s l o w w a y c h a n n e l f a s t w a y \beta=\frac{channel_{slowway}}{channel_{fastway}} β=channelfastwaychannelslowway
一般来说beta我们取八分之一。
3.横向融合
这种思想已经被用于双流神经网络的改进中——传统的、初始的双流神经网络两条路径没有交融,而对于我们的SlowFast,为了弥补该缺点,我们分别在pool1、res2、res3、res4后面。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGwqVogL-1658223133993)(img/image-20220507003752776.png)]
最后,对每个路径的输出执行全局平均池化。然后将两个合并的特征向量连接作为完全连接的分类器层的输入。
4.实例
slowfast的思想是通用的,上面的表便是原论文中作者用resnet做的一个实例演示。
Slowpath中,我们最开始的rawframes有64的时间维度长,在经过slowpath的datalayer后会将通过时空卷积将输入大小卷到时间维度长为4,相当于说slowpath的时间步长就为16。特别注意:
- 在该例子中,作者没有选择执行时间下采样,因为如果输入帧较少时,即我们的时间步长比较大的时候就不好。
- 同时,作者采用了non-degenerate-temporal convolutions这种卷积,说白了其实就是在时间维度上尺寸大于1的卷积核。这是由于实验的观察发现,在较早的层中使用时间卷积会降低准确性。我们认为这是因为当物体快速移动并且时间步长很大时,除非空间感受野足够大(即,在后面的层中),否则在时间感受野内几乎没有相关性
Fastpath中,毫无疑问就得多用non-degenerate-temporal convolutions了,并让空间维度上的卷积核尺寸尽可能小,但是页不能全为1。这种做的目的还是为了保证Fastpath的高时间分辨率性。
横向连接从快速通道融合到慢速通道,当然从慢速到快速也可以,都属于信息的融合,它需要在融合之前匹配大小。将慢路径的特征形状表示为{T,S2,C},快路径的特征形状为{αT,S2,βC}。作者在横向连接中尝试了以下转换:
-
时间-to-通道:将每a帧打包为1帧:
α T α = T \frac{\alpha T}{\alpha}=T ααT=T -
时间步长采样:每a帧我们只取一帧。
-
时间步长卷积:执行:
5 × 1 2 5\times 1^2 5×12
的时空卷积,输出channel为:
2 β C 2\beta C 2βC
步长为:
α \alpha α
四.实验部分
slowfast作者在4个视频理解数据集上评估了自己的方法。除了传统的视频分类数据集,还挑战了时空动作检测数据集AVA。
1.训练和推断
在Kinetics数据集上的实验:
-
参数初始化:随机
-
优化器:SGD
-
预训练:没有使用ImageNet
-
数据预处理:从整个视频中抽取出这些片段——帧数为:
α T × τ \alpha T\times \tau αT×τ
放入slowpath的帧数为
T T T
,放入fastpath的帧数为:
α T \alpha T αT -
resize:
224 × 224 224\times 224 224×224 -
数据处理技巧:
- 随机crop;
- 垂直翻转在256-320之间随机采样较短的一侧。
2.数据集
简单介绍了一下所使用的数据集:
- Kinetics-400:包含400个类别的人类行为的240k左右的训练视频以及20k的验证视频。
- Kinetics-600:包含600个类别的人类行为的392k左右的训练视频以及30k的验证视频。
- Charades:有9.8k训练视频,1.8k验证视频,157个类别的多标签分类,每个视频平均30s。
简单介绍了一下所使用的数据集:
- Kinetics-400:包含400个类别的人类行为的240k左右的训练视频以及20k的验证视频。
- Kinetics-600:包含600个类别的人类行为的392k左右的训练视频以及30k的验证视频。
- Charades:有9.8k训练视频,1.8k验证视频,157个类别的多标签分类,每个视频平均30s。