slowfast模型浅析-程序员宅基地

技术标签: 笔记  





















SlowFast论文总结

在这里插入图片描述

introduction

在简介中,首先说了在图片处理中人们习惯将xy两个维度对称的对待(symmetrically),当然由于各向异性和移位不变性(shift-invariant)这是可以的,但是,如果对于视频(x,y,t)呢?因为光流孔径问题,我们不能将时间维度与空间维度对称的处理(而这正是时空卷积的视频方法所默认的《learning spatiotemporal features with 3D convolutional networks》),在我们一般所见的世界中的某一个特定时刻,世界一般是静止的,空间的语义信息一般是不变的,或者是及其缓慢的(slow)但是在对于一些动作,比如“拍手”,“跑步”,他们渴望的是更加迅速(fast)的帧数(更高的时间分辨率)去有效的建模快速运动的状态改变(ues fast refreshing frames(high temproal resolution) to effectively model the potentialy fast chaning motion).

那么基于这个直觉,这篇论文设计出了一种基于双通道的SlowFast model来做动作检测。

SlowFast模型概述

在这里插入图片描述

使用双流卷积输入,一个慢通道,一个快通道,分别提取空域信息以及时域信息。

快通道是一个非常轻量级的模型(lightwegghts)大约只占用了20%的计算量。这是因为这条路径被设计使用更少的通道/卷积核(channels)以及更弱的能力来处理空间的信息,这些信息可以被第一条路径以较少冗余的方式提供(redundant)提供,根据这个优点,这条路径上的中间层都不需要时间池化(temporal pooling)来降低时间分辨率(temporal resolution).
,这两条路径我们根据处理时间速度(temporal speed)的差异,将它们命名为slow和fast路径。他们通过侧向连接融合。(fused by lateral connection)

SlowFast与我们传统的视频处理模型——双流结构(two-stream)最大的区别在于,双流结构没有探索不同的时间速度(different temporal speeds),并且对两个流而言,它们的采用完全相同的骨干网络(Bone net), 然而Fast路径更加快,更加轻量,因为没有计算光流等等(potical flow), 并且还是端到端(end-to-end from raw data)

Slow Pathway:

Slow pathway 可以使任何一种可以在一段剪辑过得视频上工作的时空卷积模型,重点在于 T , γ T, \gamma T,γ
γ \gamma γ是采样步长,即将原始视频按照该步长取样,一般取16, 即16帧取一张关键帧,
T T T是采样次数,即一共采样多少次。
所以慢通道的一次输入总帧数为 T × γ T \times \gamma T×γ

Fast Pathway:

与之平行的Fast pathway拥有以下属性:
1. 高帧率(High frams rate)
2. 高时间分辨率特征(High temporal resolution)
3. 较低的通道容量(low channel capacity)
第一点:
α 是 帧 采 样 倍 数 , β 是 通 道 倍 数 \alpha是帧采样倍数,\beta是通道倍数 αβ
对于快通道来说,他的采样步长是 γ α \frac{\gamma}{\alpha} αγ,采样次数是 α T \alpha T αT
第二点:
除了输入是时间高分辨的输入,对于时间特征我们也是使用的高分辨。
从始至终在fast中,我们使用的都是不降低时间采样率的层(而不是时间池化或者时域跨度卷积)
第三点:
fast的卷积核个数是慢通道的 1 β \frac{1}{\beta} β1 倍,较小的卷积核降低了其在空间语义上的表达能力,但是却提高了它在时域上的表达能力,这正是Fast通道所要做的,同时它在论文中也提到了根据实验的进行,使用各种方式减少fast通道中空间语义的表达也能带来准确率的提升:

Motivated by this interpretation, we also explore differentways of weakening spatial capacity in the Fast pathway, in-cluding reducing input spatial resolution and removing colorinformation. As we will show by experiments, these versionscan all give good accuracy, suggesting that a lightweight Fastpathway with less spatial capacity can be made beneficial.
受到这种解释的启发,我们探索了Fast路径中削弱空间容量的不同方法,包括减少输入的空间分辨率、移除彩色信息等。实验结果显示,这些版本也可以取得良好的准确性,这表明了通过削弱空间容量来构建轻量级的Fast路径是有效的。

The good results of our model suggest that it is a desired tradeoff for
the Fast pathway to weaken its spatial modeling ability while
strengthening its temporal modeling ability.
我们的模型的良好结果表明,它是一个理想的折衷,以削弱其空间建模能力的快速路径,增强其时序建模能力。

侧向链接

侧向链接主要是用来融合不同通路的时间与空间的语义信息的,他经常被用于上面所提到的基于双流和光流的结构。

它被应用于两条通路的每一层上,尤其是Resnets的pool1, res2, res3, and res4.这些链接紧随其后。

链接是单向的,从fast流融合进Slow流,测试过双流结构,但是效果差不多

We have experimented with bidirectional fusion and found similar results.

最后,来自两条通路的信息池化成为特征向量之后通过同通过一个全连接分类层

实例化

在这里插入图片描述
上面是一个实例对象

T×S2 where T is the temporal length and
S is the height and width of a square spatial crop

T代表采样的次数,S代表空间的分辨率

stride 16 1 2 1^2 12代表{时间步长,空间步长}

对于卷积核来说 T × S 2 , C {T×S^2, C} T×S2,C,代表时空卷积核大小,以及数量

底下画横线的代表使用非退化时间卷积核(也就是时间核大小大于1)

we use non-degenerate temporal convolutions (temporal kernel size>1, underlined in Table 1)

残差链接使用方括号表示。

对于Slow通道来说,

We opt to not perform temporal downsampling in this instantiation, as doing so would be detrimental when the input stride is large.
在这个实例中他们没有选择时间下采样,所有当你的步长(stride)选的过大时这是有害的

同时他们发现,在较早的层中使用时间卷积会降低准确性。我们认为这是因为当对象快速移动且时间步长很大时,除非空间感受野足够大),否则非时间感受野内几乎没有相关性

对于fast通道来说,每个块都有非退化的时间卷积

对于侧向链接:
特征图的形状可以写作:
Slow pathway as{T,S2,C},
Fast pathway is{αT,S2,βC}.
他们采用了一下三种方案:
1、将所有的a帧打包到一帧中:
在这里插入图片描述

  1. 从每个a帧中随机采样一帧:
    在这里插入图片描述
  2. 使用 2βC 输出通道和 stride=α 执行 5 × 1 2 5×1^2 5×12 核的 3D 卷积
    在这里插入图片描述
    最后发现,是第三种方法最好。

例子:动作分类

这里说一下,在kinetics400数据集中,solwfast的训练方式:

Our models on Kinetics are trainedfrom randominitialization(“from scratch”),withoutusing ImageNet [7]or any pre-training. We use synchronized SGD trainingfollowing the recipe in [19]. See details in Appendix.

这段话意思主要是说明他们的模型是随机初始化的,并没有使用任何预训练的参数。

For the temporal domain, we randomly sample a clip(ofαT×τframes) from the full-length video, and the inputto the Slow and Fast pathways are respectivelyTandαTframes; for the spatial domain, we randomly crop 224×224pixels from a video, or its horizontal flip, with a shorter siderandomly sampled in [256, 320] pixels [45, 56]

对于时域,我们从全长视频中随机采样一个片段(αT×τ帧),Slow和Fast路径的输入分别为T和αT帧;对于空间域,我们从视频或其水平翻转中随机裁剪 224×224 像素,其中较短的边在 [256, 320] 像素中随机采样 [45, 56]

Implementation details. We study backbones including
ResNet-50 and the deeper ResNet-101 [24], optionally augmented with non-local (NL) blocks [56]. For models involving R-101, we use a scale jittering range of [256, 340].

最后一句话:对于模型R101来说,我们用抖动区间【256, 340】进行缩放。

这一段看着就比较奇怪,看来好像他们在训练时并不是以一种滑动窗口式的方式顺序获取训练数据,而是一次随机剪裁一段长度为 T × γ T \times \gamma T×γ的视频进行训练(T×τ帧,这里论文是αT×τ帧,感觉应该是笔误),Slow和Fast路径的输入分别为T和αT帧这个没问题。在空域上,对原视频或者其水平翻转进行压缩(压缩规则是:随机地从[256,320](大于224嘛)中选择一个值作为短边的长度,按比例缩放),然后随机裁剪出224×224大小。

在推理时,在时间维度上,他们随即采集了10个片段,在空间上,他们首先将短边放大到256,然后再从整个画幅上剪裁3次256 *256以覆盖空间维度。

模型在不同任务上的效率以及变体

论文中提到,与现有模型相比,sf的推理时间成本是比较小的,因为使用的是稀疏的采样,并且不需要很多的时间片段。

在这里插入图片描述

在这里插入图片描述

消融试验

这一段大概就是说,他们做了消融实现,用只有SLow的模型去比较SF(只有SLOW那不就是个带有时序采样的resnet吗?),Fig2横轴代表在单个采样片段(single clip)上的模型推理性能,也可以说模型的复杂度,纵轴代表acc,绿色的是SF模型,蓝色的是Slow-Only模型
红色箭头代表sf在复杂性以及准确率上都超过了So。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这些消融实验中,他们确定了三个有可能的改进方向或者说问题

  1. 在最佳的3d卷积上sf有3.0%的提升。
  2. 削弱Fast 路径的空间输入,
    • 半空间输入

    • 更大的 β \beta β(FLOPS 几乎一致)

    • 灰度处理

    • “时间差帧”:通过用前一帧减去当前帧来计算

    • 输入光流

3.从头训练
发现在所有的模型上,直接训练比用imagenet预训练效果来得好。

4.Fast通道的低通道容量
表现最好的 β 值是 1/6 和 1/8(默认值)。然而,令人惊讶的是,我们的 SlowFast 模型中从 β=1/32 到 1/4 的所有值都可以改进仅慢速模型。特别是,当 β=1/32 时,Fast 通路仅增加了 1.3 GFLOPs(相对 ∼5%),但导致了 1.6% 的改进

有趣的是,仅仅只有Fast路径的话只有51.7左右的acc,但是他却可以为Slow路径带来3.0%的提升,说明由Fast路径建模的底层表征在很大程度上是互补的。

我想发表一下自己的看法,只提升了三个点但是GLOP缺增加了至少5个点,这值得吗?Fsat通道的互补性我承认,但是唔觉得也去去掉或者说钟互补比重太离谱,也许可以去掉或者改进

例子:AVA

在这里插入图片描述

注意到AVA的难点在于动作的检测而角色的定位并不具有那么大的挑战性。
目标检测器:FasterR-CNN

在AVA的训练中,使用了kinetic的权重作为初始化,采用的学习率调整策略是warm-up(是一种学习率调整策略,简单来说就是在一开始使用较小的学习率,然后慢慢变大),但验证集损失变化趋于饱和的时候就10倍的减少学习率

Here “*” indicates a version of our method that uses our region proposals for training

为什么我们在训练自己的模型的时候不也用跟他训练ava的时候一样的方法呢,就是使用kinetics的权重初始化,然后自己选择候选区域呢?

AVA中的消融试验

在这里插入图片描述
表 9 将SO基线与其 SlowFast 对应物进行了比较,每个类别的 AP 显示在图 3 中。SF从 19.0 到 24.2 大幅提高了 5.2mAP(相对 28%)。。在类别方面(图 3),我们的 SlowFast 模型在 60 个类别中的 57 个类别中有所改进,与它的仅慢速对应物。 “拍手”(+27.7AP)、“游泳”(+27.4 AP)、“跑步/慢跑”(+18.8 AP)、“跳舞”(+15.9 AP)和“吃”( +12.5 接入点)。我们还观察到“跳跃/跳跃”、“挥手”、“放下”、“投掷”、“命中”或“切入”的较大相对增加。这些是建模动力学至关重要的类别。 SlowFast 模型仅在“接听电话”(-0.1 AP)、“谎言/睡眠”(-0.2 AP)、“射击”(-0.4 AP) 3 个类别中较差,并且它们的减少相对于其他人的增加较小。


论文的翻译

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43966900/article/details/119422817

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签