ESPNet/ESPNetV2:空洞卷积金字塔 | 轻量级网络
ESPNet系列的核心在于空洞卷积金字塔,每层具有不同的dilation rate,在参数量不增加的情况下,能够融合多尺度特征,相对于深度可分离卷积,深度可分离空洞卷积金字塔性价比更高。另外,HFF的多尺度特征融合方法也很值得借鉴
来源:晓飞的算法工程笔记 公众号
ESPNet
论文: ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation
Introduction
ESPNet是用于语义分割的轻量级网络,核心在于ESP模块,该模块包含point-wise卷积和空洞卷积金字塔,分别用于降低计算复杂度以及重采样各有效感受域的特征。ESP模块比其它卷积分解方法(mobilenet/shufflenet)更高效,ESPNet能在GPU/笔记本/终端设备上达到112FPS/21FPS/9FPS。
ESP module
ESP模块将标准卷积分解成point-wise卷积和空洞卷积金字塔(spatial pyramid of dilated convolutions),point-wise卷积将输入映射到低维特征空间,空洞卷积金字塔使用$K$组$n\times n$空洞卷积同时重采样低维特征,每个空洞卷积的dilation rate为$2^{k-1}$,$k={1, \cdots, K}$。这种分解方法能够大量减少ESP模块的参数量和内存,并且保持较大的有效感受域。
Width divider K
对于输入输出维度为$M$和$N$,卷积核大小为$n\times n$的标准卷积,需要学习的参数量为$n2MN$,有效感受域为$n2$。超参数$K$用来调节ESP模块的计算复杂度,首先使用point-wise卷积将输入维度从$M$降为$\frac{N}{K}$(reduce),然后将低维特征分别使用上述的空洞卷积金字塔进行处理(split and transform),最后将K组空洞卷积的输出合并(merge)。ESP模块包含$\frac{MN}{K}+\frac{(nN)2}{K}$参数,有效感受域为$[(n-1)2{K-1} + 1]^2$,在参数和感受域方面都有一定的提升。
Hierarchical feature fusion (HFF) for de-gridding
论文发现,尽管空洞卷积金字塔带来更大的感受域,但直接concate输出却会带来奇怪网格纹路,如图2所示。为了解决这个问题,在concate之前先将输出进行层级相加,相对于添加额外的卷积来进行后处理,HFF能够有效地解决网格纹路而不带来过多的计算量。另外,为了保证网络的梯度传递,在ESP模块添加了一条从输入到输出的shortcut连接。
Relationship with other CNN modules
论文列举了部分轻量级网络的核心模块进行了对比,可以看到ESP模块在参数量/内存/感受域方面都有很不错的数值。
ESPNet
图4为ESPNet的演进过程,$l$为特征图大小,相同$l$的模块具有相同大小的特征图,红色和绿色模块分别为下采样和上采样模块,一般无说明即$\alpha_2=2$、$\alpha_3=8$。
Experiments
这里只列举了部分实验,具体的其它实验可以去看看论文。
替换图4d中的ESP模块进行实验对比。
与其它语义分割模型进行对比。
Conclusion
ESPNet是语义分割的轻量级网络,在保证轻量化的同时,针对语义分割的场景进行了核心模块的设计,使用空洞卷积金字塔进行多感受域的特征提取以及参数量的减少,并且使用HFF来巧妙消除网格纹路,十分值得借鉴。
ESPNetV2
论文: ESPNetv2: A Light-weight, Power Efficient, and General Purpose Convolutional Neural Network
Introduction
模型轻量化共包含3种方法,分别为模型压缩,模型量化以及轻量化设计。论文设计了轻量级网络ESPNetv2,主要贡献如下:
- 通用的轻量化网络结构,能够支持视觉数据以及序列化数据,即能支持视觉任务和自然语言处理任务。
- 在ESPNet基础上,加入深度可分离空洞卷积进行拓展,相对于ESPNet拥有更好的精度以及更少的参数。
- 从实验来看,ESPNetv2在多个视觉任务上有较好的准确率和较低的参数量,任务包括图像分类、语义分割、目标检测。
- 设计了cyclic learning rate scheduler,比一般的固定学习率的scheduler要好。
Depth-wise dilated separable convolution
假设输入为$X\in \mathbb{R}^{W\times H\times c}$,卷积核为$X\in \mathbb{K}^{n\times n\times c \times \hat{c}}$,输出为$Y\in \mathbb{R}^{W\times H\times \hat{c}}$,标准卷积、分组卷积,深度分离卷积以及深度可分离空洞卷积的参数量和有效感受域如表1所示。
EESP unit
论文基于深度可分离空洞卷积以及分组point-wise卷积改进ESP模块,提出了EESP(Extremely Efficient Spatial Pyramid)模块。原始的ESP模块结构如图1a所示,论文首先将point-wise卷积替换为分组point-wise卷积,然后将计算量较大的空洞卷积替换为深度可分离空洞卷积,最后依然使用HFF来消除网格纹路,结构如图1b所示,能够降低$\frac{Md+n2d2K}{\frac{Md}{g}+(n^2+d)dK}$倍计算复杂度,$K$为空洞卷积金字塔层数。考虑到单独计算$K$个point-wise卷积等同于单个分组数为$K$的point-wise分组卷积,而分组卷积的在实现上更高效,于是改进为图1c的最终结构。
为了更高效地学习多尺度特征,论文提出下采样版本的EESP模块(Strided EESP with shortcut connection to an input image),主要进行以下改进:
- 修改深度可分离空洞卷积为stride=2的版本。
- 为模块原本的shortcut添加平均池化操作。
- 将element-wise相加操作替换为concate操作,这样能增加输出的特征维度。
- 为防止随着下采样产生的信息丢失,添加一条连接输入图像的shortcut,该路径使用多个池化操作来使其空间大小与模块输出的特征图一致,然后使用两个卷积来提取特征并调整维度,最后进行element-wise相加。
Network architecture
ESPNetv2的网络结构如表2所示,ESSP模块的每个卷积后面都接BN层以及PReLU,模块最后的分组卷积的PReLU在element-wise相加后进行,$g=K=4$,其它与ESPNet类似。
Cyclic learning rate scheduler
在图像分类的训练中,论文设计了循环学习率调度器,在每个周期$t$,学习率的计算为:
$\eta_{max}$和$\eta_{min}$分别为最大和最小学习率,$T$为循环周期。
循环学习率调度器的可视化如图4所示。
Experiments
图像分类性能对比。
语义分割性能对比。
目标检测性能对比。
文本生成性能对比。
Conclusion
ESPNetv2在ESPNet的基础上结合深度分离卷积的设计方法,进行了进一步的模型轻量化,结合了更丰富的特征融合,模型能够拓展到多种任务中,具有很不错的性能。
CONCLUSION
ESPNet系列的核心在于空洞卷积金字塔,每层具有不同的dilation rate,在参数量不增加的情况下,能够融合多尺度特征,相对于深度可分离卷积,深度可分离空洞卷积金字塔性价比更高。另外,HFF的多尺度特征融合方法也很值得借鉴。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
ESPNet/ESPNetV2:空洞卷积金字塔 | 轻量级网络的更多相关文章
- MobileNetV1/V2/V3简述 | 轻量级网络
MobileNet系列很重要的轻量级网络家族,出自谷歌,MobileNetV1使用深度可分离卷积来构建轻量级网络,MobileNetV2提出创新的inverted residual with line ...
- CNN中各类卷积总结:残差、shuffle、空洞卷积、变形卷积核、可分离卷积等
CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中 ...
- 轻量级网络 - PVANet & SuffleNet
一. PVANet 论文:PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection [点击下载] C ...
- 图像分类丨浅析轻量级网络「SqueezeNet、MobileNet、ShuffleNet」
前言 深度卷积网络除了准确度,计算复杂度也是考虑的重要指标.本文列出了近年主流的轻量级网络,简单地阐述了它们的思想.由于本人水平有限,对这部分的理解还不够深入,还需要继续学习和完善. 最后我参考部分列 ...
- SqueezeNet/SqueezeNext简述 | 轻量级网络
SqueezeNet系列是比较早期且经典的轻量级网络,SqueezeNet使用Fire模块进行参数压缩,而SqueezeNext则在此基础上加入分离卷积进行改进.虽然SqueezeNet系列不如Mob ...
- ShuffleNetV1/V2简述 | 轻量级网络
ShuffleNet系列是轻量级网络中很重要的一个系列,ShuffleNetV1提出了channel shuffle操作,使得网络可以尽情地使用分组卷积来加速,而ShuffleNetV2则推倒V1的大 ...
- 深度学习原理与框架- tf.nn.atrous_conv2d(空洞卷积) 问题:空洞卷积增加了卷积核的维度,为什么不直接使用7*7呢
空洞卷积, 从图中可以看出,对于一个3*3的卷积,可以通过使用增加卷积的空洞的个数,来获得较大的感受眼, 从第一幅图中可以看出3*3的卷积,可以通过补零的方式,变成7*7的感受眼,这里补零的个数为1, ...
- Dilated Convolutions 空洞卷积
Dilated Convolutions,中文一般称为空洞卷积或者扩张卷积,是一种改进的图像卷积方法. 扩张卷积工作示意图如下: 图a是普通的卷积,感受野是3*3,相当于扩充dilation=0 图b ...
- 空洞卷积(dilated Convolution) 与感受野(Receptive Field)
一.空洞卷积 空洞卷积是是为了解决基于FCN思想的语义分割中,输出图像的size要求和输入图像的size一致而需要upsample,但由于FCN中使用pooling操作来增大感受野同时降低分辨率,导致 ...
随机推荐
- django获取choices的显示值
1,models.py #订单表 class Orders(models.Model): status_cat = ( ('0', '待装货'), ('1', '正在运输'), ('2', '已到达目 ...
- .netcore3.1——应用AutoMapper
多层架构中存在多种模型,如视图模型ViewModel,数据传输对你DTO,ORM对象等,这些数据在层与层之间进行传输必须涉及类型之间的转换. AutoMapper是一个对象-对象映射器,作用是通过设置 ...
- Astra示例程序库正式上线啦
新上线的Astra示例程序库提供了基于多种编程语言和框架使用Astra的例子.借助这个示例程序库,你可以在短时间内建构起数据库.创建多个表.装载示例数据并部署基于Cassandra的应用程序. 什么是 ...
- java中给多个微信好友自动发信息
package weixin; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatrans ...
- java中对list集合中的数据按照某一个属性进行分组
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Ite ...
- JavaDailyReports10_11
********************************** 验证码 AWT Swing 1 package nanshen; 2 3 import java.awt.Container; 4 ...
- SLA
服务级别协议[编辑] 维基百科,自由的百科全书 跳到导航跳到搜索 本条目可参照外语维基百科相应条目来扩充. 若您熟悉来源语言和主题,请协助参考外语维基扩充条目.请勿直接提交机械翻译,也不要翻译 ...
- 一台PC端安装多店仓信息的删除
如图所示,安装了多店仓,想要删除其中莫一店仓信息! 步骤一:先找到对应目录,一般默认的目录为C:\Users\xxxx\AppData\Roaming\WebPos2.0\bosnatweiniman ...
- spring boot 集成 Apache CXF 调用 .NET 服务端 WebService
1. pom.xml加入 cxf 的依赖 <dependency> <groupId>org.apache.cxf</groupId> <artifactId ...
- java interface和class中的协变
协变 Java中的协变是指,当发生继承时,子类中重写父类的方法时,可以返回父类方法返回类型的子类型.比如: class SuperClass{} class SubClass extends Supe ...