slowfast模型浅析

  • SlowFast论文总结
    • introduction
  • SlowFast模型概述
    • Slow Pathway:
    • Fast Pathway:
    • 侧向链接
    • 实例化
  • 例子:动作分类
  • 模型在不同任务上的效率以及变体
  • 消融试验
  • 例子:AVA
    • AVA中的消融试验

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, \gammaT,γ
γ\gammaγ是采样步长,即将原始视频按照该步长取样,一般取16, 即16帧取一张关键帧,
TTT是采样次数,即一共采样多少次。
所以慢通道的一次输入总帧数为T×γT \times \gammaT×γ

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 121^212代表{时间步长,空间步长}

对于卷积核来说T×S2,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×125×1^25×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 \gammaT×γ的视频进行训练(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 个类别中较差,并且它们的减少相对于其他人的增加较小。


论文的翻译

slowfast模型浅析相关推荐

  1. 学习《Linux设备模型浅析之设备篇》笔记(一)

    最近在学习Linux设备模型,前面几篇文章也是读这篇的时候遇到问题,然后为了搞清楚先转去摸索才写出来的. 当然了,刚开始是先读到<Linux那些事儿之我是Sysfs>,搞不清楚才去读的&l ...

  2. 深度学习基本模型浅析

    深度学习基本模型浅析 前言 台湾李宏毅的深度学习课程说实话讲得还是比较不错的,有需要的话还是比较推荐学习,这篇也是基于它的深度学习基本结构的讲解的总结. 深度学习的三个步骤 深度学习首先是我们要构建一 ...

  3. 光与色的故事--颜色模型浅析

    光与色的故事                ---颜色模型浅析 1.光的故事 光是一种电磁波,同声波相类似,包含了不同频率分量.不同的是,电磁波能够在真空中传播.电磁波通常是由一种频率或多种频率构成. ...

  4. 自制AVA数据集工具/slowfast模型训练数据集制作

    AVA2.1版本更新了追踪这一列. 那2.2版本请参考此链接文章:自定义ava数据集及训练与测试 完整版 时空动作/行为 视频数据集制作 yolov5, deep sort, VIA MMAction ...

  5. 高性能IO模型浅析--范志东(Florian)

    代码改变世界 Posts - 74, Articles - 4, Comments - 439 Cnblogs Dashboard Login Home Contact Gallery RSS Flo ...

  6. java内存模型浅析_浅析java内存模型

    原标题:浅析java内存模型 Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的.Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型--又称为Java内存模型 ...

  7. 学习《Linux设备模型浅析之设备篇》笔记(深挖一)

    这篇文章既然说了是浅析,那就是跳过了一些东西,我们把这些跳过的东西给它尽可能的补回来 今天登陆 lxr.free-electrons.com 发现内核版本已经升级到3.15了,那以后都使用3.15的源 ...

  8. 学习《Linux设备模型浅析之设备篇》笔记(二)

    文件/drivers/base/platform.c int __init platform_bus_init(void) {         int error; early_platform_cl ...

  9. javascript中0级DOM和2级DOM事件模型浅析

    Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...

最新文章

  1. 一条简单的更新语句,MySQL是如何加锁的?
  2. vivado中的rtl中电路图无发生成_FPGA零基础学习:数字电路中的组合逻辑
  3. 关于自定义可以点击的的布局
  4. 异常规范之异常的概念
  5. 使用TPU的注意事项
  6. CMake生成Opencv在vs 2013的解决方案(出错1)
  7. ZoomBlur 聚焦模糊效果Shader(URP)
  8. 互联网日报 | 华为Mate40系列国内发布;陆金所在纽交所挂牌上市;苹果大中华区营收大降28.6%...
  9. @vail 判断某字段在范围内_怎么判断一台二次元影像测量仪的可靠性?
  10. html5星期,HTML5 时钟
  11. PHP Checkbox获取选中项与
  12. PCB 多层设计 实例视频教程 pretell99
  13. xmind8 下载安装与破解激活
  14. matlab编程计算正态分布,MATLAB如何使用normpdf函数计算正态分布的概率密度
  15. ES06# Filebeat采集原理与监控指标梳理
  16. 微信html页面缓存问题,浅谈微信页面入口文件被缓存解决方案_简单_前端开发者...
  17. 最新勒索软件WannaCrypt病毒感染前清除处理及加固
  18. 【洛谷 1293】班级聚会
  19. python写文件字母_Python - 文件读写
  20. Win10 无法加载操作系统,因为无法验证文件或某个xx数字签名 蓝屏错误代码0xc0000428

热门文章

  1. Redis 按关键字批量删除
  2. 蚊子凭啥只咬你?科学家用 5 年造出一批“脑子发光”的蚊子,终于搞懂背后机制
  3. 全闪存阵列叩开企业级应用大门
  4. 徐玉玉案有感——安全测试有风险,且行且珍惜
  5. HTML类似美团关联列表 左右联动列表
  6. 第九回(一):任侠厨子轻解厄围 夜半蹴鞠为泄忿闷
  7. 使用Egret粒子编辑器实现烟雾效果
  8. 整车新产品研发的多项目管理分析
  9. 整车试验数采设备技术方案
  10. 《英文科技论文写作与学术报告》网课第二章作业答案