本文主要是介绍论文学习笔记(四)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元素便得到了卷积膨胀的卷积核
- 这样一来,对于一个的卷积核,设膨胀率(即相邻元素之间的插0个数)为,则其感受野增大到
- 想更深入的了解可以参考: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模块。
- 对于一个的标准卷积核,ESP模块将其分解为以下三步:
Step-1: Reduce(Point-wise convolutions):个的卷积核,将维的输入feature map降至维
Step-2: Split & Transform(Spatial pyramid of dilated convolutions):使用个不同膨胀率的卷积核对上一步输出的feature map并行进行卷积,将会得到个相同大小的feature map
Step-3*: HFF(Hierarchical feature fusion,图中未体现):分层特征融合,即将上一步得到的个相同大小的feature map按照一定规则进行拼接,得到最终的输出feature
ESP模块详解
- ESP模块的参数量为,其中每部分参数数量如下,加一起就是了:
- Reduce部分:
- Split部分:
- ESP模块的感受野大小为,这个比较好理解,其实就是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。为了适配不同的应用场景,引入了超参数,其实就是ESP模块的重复堆叠个数。因为在网络前两个stage(),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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!