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%是小细胞(P细胞)和15-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}}
β=channelfastway?channelslowway?? 一般来说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}。作者在横向连接中尝试了以下转换:
四.实验部分
slowfast作者在4个视频理解数据集上评估了自己的方法。除了传统的视频分类数据集,还挑战了时空动作检测数据集AVA。
1.训练和推断
在Kinetics数据集上的实验:
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。
|