发表在2017年CVPR。

摘要

在图像检测任务中,对于图像不同的区域,我们可以分配不同层数的网络予以处理。

本文就提出了一个基于ResNet的层数可调网络,可以端到端训练、确定的(deterministic)并且是问题不可知的(problem-agnostic),即可用于其他计算机视觉任务。

作者发现,该网络不仅能提高ResNet计算效率,而且其表现也与人类的注意力机制相符,如图1。

故事

  • DCNN被广泛应用于各种计算机视觉问题,并且逐渐成为SOTA方法必不可少的组分 =>

  • 然而,DCNN最大的问题在于其计算负担重 =>

  • 一种自然的方法是像人类一样,采取注意力机制 =>

  • 例如,glimpse-based注意力模型只处理少数重点区域。显然这种方法不适用于图像转换问题或逐像素预测问题,如分割。并且,预测重点区域需要额外的子网络或启发过程[1] =>

  • 除此之外,我们还可以采取空域软注意力模型。但它们压根不会节省计算量,反而可能增加计算量(计算权值) =>

  • 为此,我们采用最近用于RNN的ACT(Adaptive Computation Time)[12]机制。我们将展示:ACT可以动态决策ResNet的层数 =>

  • 进一步,我们提出空域自适应的计算时间算法SACT,可以根据空域计算量完成ACT。在COCO上的实验证明:SACT超过了ACT和非适应算法。

SACT机制

SACT是一个可以端到端训练的结构。其将注意力机制融入ResNet。

它学习的是一种确定性的决策模式:若特征变得足够好,那么某个空域位置上的计算就将停止。

由于SACT会在图像和特征图之间保持对齐(maintains the alighment),因此SACT适用于逐像素预测任务。

ACT机制

ResNet由多个Residual block组成,而每一个block内有多个residual unit。每一个unit就是一个\(F(x) = x + f(x)\)函数,其中后者是一个3层卷积:首先是1x1卷积降通道数,然后3x3卷积通道尺寸不变,最后是1x1卷积还原通道数。

为了实现ACT,作者在每个unit的输出端都加入一个分支,预测停止得分(halting score):一个在0、1之间的标量。如图3,该得分会在一个block内累积。当累积至1时,推导就停止,后面的unit都会被跳过。

并且,根据这个得分,我们还可以计算剩余得分R,以及最终的停留成本ponder cost(见2.1节)。最终的输出也是前面特征的加权求和,权值就是各unit得分。

为什么要这么设计呢?因为我们通过惩罚这个停留成本,可以让网络尽早停止(ponder cost惩罚经过的unit数量),同时又能得到可靠的输出(最终输出是各unit的加权求和)。

该ponder cost会被加权,然后计入总损失函数。

注意,每个block内都会单独执行一次ACT。

具体而言,该停止得分是通过一个简单的线性方程得到的。其先对输入平均池化,然后输入线性方程,经sigmoid输出。

SACT机制

上面的ACT机制,是对每一个unit设计了一个停止得分,然后不断累加。在这里,SACT就是对空域特征设计了停止得分,如图4。

如果某个位置被停止,那么其将直接复制(相当于设置残差为0),从而继续完成下一次卷积。

实验

看图很有意思。停留成本高,说明该区域需要经过较长推理,很难节省计算量。

Paper | Spatially Adaptive Computation Time for Residual Networks的更多相关文章

  1. Paper | Adaptive Computation Time for Recurrent Neural Networks

    目录 1. 网络资源 2. 简介 3. 自适应运算时间 3.1 有限运算时间 3.2 误差梯度 1. 网络资源 这篇文章的写作太随意了,读起来不是很好懂(掺杂了过多的技术细节).因此有作者介绍会更好. ...

  2. Residual Networks <2015 ICCV, ImageNet 图像分类Top1>

    本文介绍一下2015 ImageNet中分类任务的冠军——MSRA何凯明团队的Residual Networks.实际上,MSRA是今年Imagenet的大赢家,不单在分类任务,MSRA还用resid ...

  3. Residual Networks &lt;2015 ICCV, ImageNet 图像分类Top1&gt;

    本文介绍一下2015 ImageNet中分类任务的冠军--MSRA何凯明团队的Residual Networks.实际上.MSRA是今年Imagenet的大赢家.不单在分类任务,MSRA还用resid ...

  4. 解析Wide Residual Networks

    Wide Residual Networks (WRNs)是2016年被提出的基于扩展通道数学习机制的卷积神经网络.对深度卷积神经网络有了解的应该知道随着网络越深性能越好,但是训练深度卷积神经网络存在 ...

  5. 深度残差网(deep residual networks)的训练过程

    这里介绍一种深度残差网(deep residual networks)的训练过程: 1.通过下面的地址下载基于python的训练代码: https://github.com/dnlcrl/deep-r ...

  6. 残差网络(Residual Networks, ResNets)

    1. 什么是残差(residual)? “残差在数理统计中是指实际观察值与估计值(拟合值)之间的差.”“如果回归模型正确的话, 我们可以将残差看作误差的观测值.” 更准确地,假设我们想要找一个 $x$ ...

  7. 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) ——3.Programming assignments : Residual Networks

    Residual Networks Welcome to the second assignment of this week! You will learn how to build very de ...

  8. Residual Networks

    Andrew Ng deeplearning courese-4:Convolutional Neural Network Convolutional Neural Networks: Step by ...

  9. 深度学习论文笔记:Deep Residual Networks with Dynamically Weighted Wavelet Coefficients for Fault Diagnosis of Planetary Gearboxes

    这篇文章将深度学习算法应用于机械故障诊断,采用了“小波包分解+深度残差网络(ResNet)”的思路,将机械振动信号按照故障类型进行分类. 文章的核心创新点:复杂旋转机械系统的振动信号包含着很多不同频率 ...

随机推荐

  1. 推荐|MathType的使用技巧

    前言 持续更新中,敬请期待... 数学学科 制作新的数学符号 不包含于符号:输入$\not\subseteq,然后按回车键enter即可: 分式\(\cfrac{3-x}{2x-1}\)符号:输入$\ ...

  2. wepy安装后提示Cannot read property 'addDeps'

    最近准备做一个微信小程序,以前一直用的小程序原始api做,但是这次准备用一个框架来做练习,当然在做之前需要比较一下现在小程序框架的优缺点. 经过认真挑选,选定wepy,Taro,uni-app,mpv ...

  3. 用 Python 批量下载百度图片

    ​ 为了做一个图像分类的小项目,需要制作自己的数据集.要想制作数据集,就得从网上下载大量的图片,再统一处理. 这时,一张张的保存下载,就显得很繁琐.那么,有没有一种方法可以把搜索到的图片直接下载到本地 ...

  4. js函数只执行一次,函数重写,变量控制与闭包三种做法

    一.情景需求 调用后台接口需要附带token信息,那么在每个请求的头部添加token的做法就不太优雅了:一个网站请求100次,那就得写添加100次token,假设某天接口有所变动,改起来就十分麻烦了. ...

  5. springboot mail整合freemark实现动态生成模板

    目标:1:springboot 整合 mail2: mail 使用freemark 实现模板动态生成(就是通过字符串生成模板,不需要在工程中写入固定模板)3: springboot 整合aop 实现日 ...

  6. SpringBoot系列之配置文件占位符使用

    SpringBoot系列之配置文件占位符使用 Springboot占位符支持的有随机数和配置的值等等,本博客主要介绍的是随机数和获取属性配置值的简单用法 随机数获取 支持的写法有: ${random. ...

  7. ubuntu 16.04上源码编译和安装cgal并编写CMakeLists.txt | compile and install cgal on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/39ab7ed9/,欢迎阅读最新内容! compile and install cgal on ubuntu 16.04 Guide ...

  8. 2018-8-10-win10-uwp-进度条-Marquez-

    原文:2018-8-10-win10-uwp-进度条-Marquez- title author date CreateTime categories win10 uwp 进度条 Marquez li ...

  9. python基础(21):异常处理

    1. 异常和错误 1.1 错误 程序中难免出现错误,而错误分成两种 1.1.1 语法错误 语法错误:这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正. #语法错误示范一 if ...

  10. 敏捷软件开发_实例2<四>

    敏捷软件开发_实例2 上一章中对薪水支付案例的用例和类做了详细的阐述,在本篇会介绍薪水支付案例包的划分和数据库,UI的设计. 包的划分 一个错误包的划分 为什么这个包是错误的: 如果对classifi ...