目录
0 参考链接
1 SlowFast基本思想
2 SlowFast模型结构
2.1 双通道处理
2.2 具体结构
2.3 横向连接
最近在完成一个视频分类的任务,找到并学习了SlowFast模型。这个模型在我实现的任务中取得了较好的效果,所以今天和大家分享一下我对SlowFast这个模型的理解。当然这个模型并不止于实现视频分类,更多用途等待大家去探索。
0 参考链接
SlowFast论文:SlowFast Networks for Video Recognition
SlowFast模型源码:https://github.com/ facebookresearch/SlowFast
1 SlowFast基本思想
如果我们忽略图片图层的影响,那么我们可以将一张图片看做具有两个维度x和y,分别代表图片的横向和纵向坐标。通常情况下,我们可以认为这两个维度在意义上是对称的,即我们可以同等的对待、处理这两个维度。
但对于视频而言,我们可以将其看做是一系列连续视频帧的集合,那么一个视频就具有三个维度:x、y和t,其中x和y仍是图片的横纵坐标,t代表时间维度。运动是时空领域中与方向相对应的概念,不同的空间-时间方向上的运动并不具有相同的概率分布。因此我们并不能同等的对待这三个维度。
为了更好地理解上一段加粗的话,我们可以从两个方面来看:
空间方向: 在自然界中,不同方向上的运动可能会因环境、物体的性质和外部因素而有所不同。例如,对于地面上的物体,垂直于地面的运动可能会比水平方向上的运动更常见,因为重力的影响会导致物体更容易在垂直方向上运动。此外,一些环境中可能存在偏好的运动方向,比如河流中的水流通常沿特定的方向流动。因此,不同的空间方向上的运动并不是等概率出现的。
时间方向:对于运动的速度来说,慢速运动通常比快速运动更常见。这是因为大部分物体在任意时刻都处于相对稳定的状态,而快速的、剧烈的运动可能相对较少见。例如,人们通常在室内静止或缓慢移动,而高速运动通常需要特定的情境,比如运动比赛或紧急情况。因此,不同时间点上的快速运动的发生概率较低。
当然这并不是这个论文的重点,不理解也没有关系,我的理解也不保证完全正确。
总而言之,我们不应同等地对待时间(t)和空间(x,y)维度,因此SlowFast模型希望通过双通道结构实现对于时间和空间信息的分别处理。
2 SlowFast模型结构
2.1 双通道处理
SlowFast核心是使用双通道处理视频,这两个通道分别命名为Slow pathway(慢速通道)和Fast pathway(快速通道)。整体结构如上图所示。
为了区分这里名称中的通道(pathway)和卷积后的通道数(channel),因此后面将快速和慢速通道成为‘Fast’和‘Slow’,“通道”一词指卷积后的通道。
Slow相较于Fast具有相对较低的帧率,但是具有更多的通道数,Slow用于捕捉空间中的语义信息,即Slow捕捉到了视频中相对静态的信息。
Fast具有更高的帧率,但是具有更少的通道数,这使得Fast的计算量大大减小,但同时也使得Fast对空间信息的建模能力减弱,而更多关注与时间维度上变化明显的信息。
Slow和Fast并非独立存在,二者之间的信息融合为单向信息融合,二者通过多次的横向连接实现信息融合,横向连接的方向为从Fast到Slow,这意味着Fast不会接收到有关Slow的任何信息,但是Slow则可以包含Fast中的信息。
具有双通道结构的SlowFast模型到底算不算是双流模型呢?作者在文中给出了答案。
双流模型是通过处理视觉信息和光流信息(即像素级的图像运动信息)以提高任务性能。作者们认为双流模型并没有探索不同帧率的影响,两个流采用相同的骨干网络。而SlowFast考虑到帧率的影响,设计了以不同帧率的Slow和Fast,Fast更加轻量,并且不计算光流,因此算是以两种不同帧率运行的单一流架构。
2.2 具体结构
Slow的骨干网络可以是任何卷积网络,它具有时间维度上的步长τ,即从输入的视频帧序列中每τ帧选取一帧进行处理。如果我们认为输入视频片段后Slow一共选取了T帧图像,那么原始输入视频帧总数应为τ*T,这一点是显而易见的。τ的典型值为16。
Fast的骨干网络是另一个卷积模型,它具有更高的帧率,即更小的步长。Fast在时间维度上的步长为τ/α,其中α>1,这意味着它能够从原始输入视频帧中选择更多的帧进行处理(选取αT帧)。α的典型值为8。
对于每次卷积后Slow具有的通道数,Fast进行对应卷积操作后会具有相对更少的通道数,二者具有比例β,即Fast卷积后通道数/Slow卷积后通道数=β,其中β<1。β的典型值为1/8。
一种以ResNet50位骨干网络的SlowFast模型如下图所示。T为时间维度视频帧数量,S为视频帧图像大小。
2.3 横向连接
Fast和Slow之前的信息融合通过从Fast到Slow的横向连接实现。每个阶段(stage)结束后,都会实现一次横向连接。以上图实例化网络为例,在pool1、res2、res3、res4四个阶段后一共执行了四次横向连接的信息融合。
由于每个阶段结束后Slow和Fast的计算结果会具有不同的形状,无法直接拼接或相加,因此需要先对Fast的计算结果进行变换。
假设某阶段慢速通道输出大小为{T,S^2,C},其中S为每一帧图像的长和宽,C为输出通道数,则对应阶段快速通道输出大小为{αT,S^2,βC}。
slowfast论文中一共提供了三种横向连接的具体计算方式。
Time-to-channal:通过转置,将全部α帧打包到同一个通道,转换后大小为{T,S^2,αβC}。
Time-strided-sampling:从每α帧中选取一帧,使大小从{αT,S^2,βC}变为{T,S^2,βC}。
Time-strided-convolution:使用输出通道翻倍的3D卷积,卷积核为5*1*1大小,步长为α,输出大小为{T,S^2,2βC}文章来源:https://www.toymoban.com/news/detail-853139.html
进行变换后与Slow的输出进行拼接或求和即可实现信息融合。文章来源地址https://www.toymoban.com/news/detail-853139.html
到了这里,关于【算法详解】SlowFast——用于视频识别任务的双通道模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!