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

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf