论文学习笔记(四)ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation

本文主要是介绍论文学习笔记(四)ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

『写在前面』

2018上半年出品的语义分割轻量级网络。

论文出处:ECCV 2018

作者机构:Sachin Mehta等,University of Washington

原文链接:https://arxiv.org/abs/1803.06815v2

相关repo:https://github.com/sacmehta/ESPNet


目录

摘要

1 介绍

2 相关工作

关于卷积加速

膨胀卷积

3 ESPNet

3.1 ESP模块

将标准卷积转化成ESP模块的过程 

 ESP模块详解

3.2 与其他CNN模块的关系

MobileNet Module

ShuffleNet Module

Inception Module

ResNext Module

Atrous spatial pyramid (ASP) module

不同Module在参数量、内存开销、感受野大小方面的对比

4 网络结构


摘要

  • 基于传统卷积模块设计,提出一种高效空间金字塔卷积模块(ESP Module),有助于减小模型运算量和内存、功率消耗,以提高在终端设备上的适用性。

1 介绍

  • ESP Module基于卷积分解原理,将标准卷积分解为两个步骤:
    • 1)point-wise convolutions 逐点卷积
    • 2)spatial pyramid of dilated convolutions 空间金字塔型膨胀卷积
  • ESP运算高效,并且可以用在CNNs的不同空间级别上(主要是相对ASP而言)
  • 理论上,ESP模块比Inception 和 ResNext的模块更高效。另外的试验结果表明,在相同硬件和计算条件下,ESP模块也优于现有表现最佳的MobileNet 和 ShuffleNet

2 相关工作

关于卷积加速

  • 卷积分解:将卷积运算分解为多个步骤以降低计算复杂度,比如Inception,ResNext,Xception,MobileNets等都使用了这样的技巧来减轻计算量。
  • 网络压缩:主要通过散列、修剪、矢量量化和收缩等方法,以减小预训练的模型大小。
  • 低位网络:通过量化模型的权重来减小模型大小和复杂度。
  • 稀疏CNNs:为了消除CNN的冗余,借助稀疏分解和稀疏结构学习等思路压缩模型大小。

膨胀卷积

  • 为了能够在不增加参数数量的情况下提高卷积核的感受野,便诞生了膨胀卷积(Dilated Convolution)
  • 简单而言,在标准卷积核中的每个参数中间插入一定数量的0元素便得到了卷积膨胀的卷积核
  • 这样一来,对于一个n \times n的卷积核,设膨胀率(即相邻元素之间的插0个数)为r,则其感受野增大到\left [ (n-1)r+1 \right ]^2
  • 想更深入的了解可以参考:https://blog.csdn.net/wangyuxi__/article/details/83003357

3 ESPNet

3.1 ESP模块

将标准卷积转化成ESP模块的过程 

  • ESP模块是ESPNet的核心组成部分,其基于"reduce-split-transform-merge"的策略设计,主要由point-wise conv基于空间金字塔的膨胀卷积两部分组成。
  • 基于卷积分解理论,ESP模块首先通过1x1 conv对输入特征进行降维,然后使用多个不同膨胀率的卷积核对低维特征特征进行卷积,因为各个膨胀卷积核的感受野不同,而且从小到大都有,有点类似空间金字塔,所以作者将其命名为ESP模块

  • 对于一个n \times n \times M @ N的标准卷积核,ESP模块将其分解为以下三步:

    Step-1: Reduce(Point-wise convolutions):d1\times1\times M的卷积核,将M维的输入feature map降至d

    Step-2: Split & Transform(Spatial pyramid of dilated convolutions):使用K个不同膨胀率的卷积核对上一步输出的feature map并行进行卷积,将会得到K个相同大小的feature map

    Step-3*: HFF(Hierarchical feature fusion,图中未体现):分层特征融合,即将上一步得到的K个相同大小的feature map按照一定规则进行拼接,得到最终的输出feature

 ESP模块详解

  •  ESP模块的参数量为\frac{MN}{K}+\frac{(nN)^2}{K},其中每部分参数数量如下,加一起就是了:
    • Reduce部分:M\times\frac{N}{K}
    • Split部分:K\times n^2 \times \left ( \frac{N}{K} \right )^2
  • ESP模块的感受野大小为\left [ (n-1)2^{K-1}+1 \right ]^2,这个比较好理解,其实就是K个膨胀卷积核中最大的那一个的感受野

『举个例子』

类比一个(w*h*M*N)大小的标准卷积核,即设输入的feature map大小为128*128*M,输出的feature map大小为128*128*N。ESP模块的具体计算如下:

① 经过Reduce以后,变为128*128*d

② 经过Split后,可以得到K张128*128*d的feature map

③ 经过HFF融合以后,变为128*128*(d*K)注意d=N/K,所以输出大小为128*128*N

如:当n=3,N=M=128,K=4时,一个标准卷积核参数量是一个ESP模块参数量的3.6倍,但ESP模块的感受野可以达到17*17.

  • 因为使用了大感受野的膨胀卷积,导致了gridding artifacts现象,如下图所示。本文提出了使用HFF方法来解决该问题,具体做法就是从最小的膨胀卷积核输出的那张feature map开始,逐级叠加。这样的做法并没有引入任何新的参数,同时计算量上也没有增加太多,但却有效地改善了网格效应。

  • 此外,还将输入的feature map也通过“逐元素求和”的方式加到了最终输出的feature map上,以改善信息传递

3.2 与其他CNN模块的关系

MobileNet Module

  • 如图所示,MobileNet模块 = Depth-wise Conv + Point-wise Conv
  • 与ESP模块相比,参数量,内存占用,感受野
  • 对ESP模块而言,当K=N时,与MobileNet模块很相似,只是两步的顺序颠倒一下
  • 与MobileNet模块相比,ESP模块的优势主要是感受野大

 

ShuffleNet Module

  • 基于reduce-transform-expand策略设计
  • ResNet中bottleneck模块的改进:
    • 1x1 conv => 1x1 grouped conv
    • 3x3 conv => 3x3 depth-wise conv
  • 与ESP模块相比,虽然ShuffleNet模块的参数量少,但会占用更大的内存同时无法扩大感受野  

Inception Module

  • 基于split-reduce-transform-merge策略设计
  • 每个支路上的往往具有特定的通道数、大小等
  • ESP模块在参数量、内存占用、感受野三个方面都优于

    Inception Module

 

ResNext Module

  • 是ResNet中bottleneck模块的并行版本
  • 基于split-reduce-transform-expand-merge策略设计
  • ESP模块借鉴了其分支求和的思想
  • 但ESP模块在参数量、内存占用、感受野三个方面都优于ResNext Module

 

Atrous spatial pyramid (ASP) module

  • 基于split-transform-merge策略设计
  • 通过在不同的分支上使用不同大小的膨胀卷积来捕捉不同大小的感受野
  • 由于其感受野较大,在分割任务上表现出色
  • 缺点是内存占用较大,且参数量较多

 

不同Module在参数量、内存开销、感受野大小方面的对比

4 网络结构

文中给出了4种网络结构,其中前3种网络的输出mask为输入尺寸的1/8。为了适配不同的应用场景,引入了超参数\alpha_l,其实就是ESP模块的重复堆叠个数。因为在网络前两个stage(l=0,1),feature map较大,占用内存和计算开销较多,所以没有堆叠,主要都是在后面几级堆ESP模块。

四种网络结构(从简到繁)简单解释如下:

  • ESPNet-A:基本网络。学习不同级别的特征,最后通过1x1 conv得到mask;
  • ESPNet-B:在A的基础上添加了跨步连接,改善了信息流;
  • ESPNet-C:在B的基础上继续添加跨步连接,这次连接的是下采样后的输入图像;
  • ESPNet:最终形态。在ESPNet-C的基础上,添加了一个轻量级的解码器,从而得到与输入图像相同分辨率的mask。

这篇关于论文学习笔记(四)ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/545150

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容进行存储,断电数据就没了。 器件之间传输bit数据在总线上是一个一个传输的,因为通过电压传输(电流不稳定),但是电压属于电势能,所以可以叠加互相干扰,这也就是硬盘,U盘

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在