语义分割--(DeepLabv3+)Encoder-Decoder with Atrous Separable Convolution for Semantic
语义分割--(DeepLabv3+)Encoder-Decoder with Atrous Separable Convolution for Semantic ..
DeepLabv3+
Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
Abstract
空间金字塔模块在输入feature上应用多采样率扩张卷积、多接收野卷积或池化,探索多尺度上下文信息。 Encoder-Decoder结构通过逐渐恢复空间信息来捕捉清晰的目标边界。
论文在PASCAL VOC 2012上验证了模型的有效性,在没有添加任何后端处理的情况下达到了89%mIoU.
Introduction
在DeepLabv3+中,使用了两种类型的神经网络,使用空间金字塔模块和encoder-decoder结构做语义分割。
DeepLabv3+结合这两者的优点,在DeepLabv3的基础上拓展了一个简单有效的模块用于恢复边界信息。如下图所示:
- (a): 即DeepLabv3的结构,使用ASPP模块获取多尺度上下文信息,直接上采样得到预测结果
- (b): encoder-decoder结构,高层特征提供语义,decoder逐步恢复边界信息
- ©: DeepLabv3+结构,以DeepLabv3为encoder,decoder结构简单
DeepLabv3的top layer输出的feature中有丰富的语义信息,可通过扩张卷积依据计算资源限制控制计算密度,配合一个decoder模块用于逐渐恢复边界信息。
- 论文提出了一个全新的encoder-decoder架构,使用DeepLabv3作为encoder模块,并添加了一个简单却有效的decoder模块
- 在我们提出的encoder-decoder架构中,可通过扩张卷积直接控制提取encoder特征的分辨率,用于平衡精度和运行时间
- 论文将Xception结构应用于分割任务中,在ASPP和decoder模块中加入深度分离卷积,获得到强大又快速的模型
- 模型达到了新的state-of-the-art,同时我们给出了模型设计分析细节和模型变体
- 以后开源TensorFlow代码(估计得等到2018CVPR或者ECCV完全结束~)
Related Work
**空间金字塔池化:**如PSPNet使用多个不同gird的池化,DeepLab的ASPP模块平行的使用不同扩张率的扩张卷积,执行空间金字塔合并获取多尺度信息。在多个benchmark获得不错的结果。
Encoder-Decoder: encoder-decoder结构在多个计算机视觉任务上获得成功,例如人类姿态估计、目标检测和语义分割。通常,encoder-decoder网络包含:
在这领域上基础上,我们使用DeepLabv3作为encoder模块,并增加一个简单又有效的的decoder模块获取空间信息。
Methods
本节简单回顾DeepLabv3架构,提出改进后的Xception模型,介绍扩张卷积和深度分离卷积。
Encoder-Decoder with Atrous Convolution
- encoder输出的feature的output_stride=16output\_stride=16output_stride=16,经过双线性上采样4倍得到FAF_AFA,FAF_AFA的output_stride=4output\_stride=4output_stride=4
- 再取encoder中对应着相同分辨率(即output_stride=4output\_stride=4output_stride=4)的特征层,经过1×11×11×1卷积降通道,此时输出的feature记为FBF_BFB。这里为什么要经过1×11×11×1卷积降通道,是因为此分辨率的特征通道较多(256或512),而FAF_AFA输出只有256,故降通道以保持与FAF_AFA所占比重,利于模型学习。
- 将FAF_AFA和FBF_BFB做concat,再经过一个3×33×33×3卷积细化feature,最终再双线性上采样4倍得到预测结果
使用分离卷积改进Xcetpion
扩张分离卷积
Atrous Convolution:
扩张卷积在DeepLab系列,Understand Convolution for Semantic Segmentation, Dilated Residual Networks 上都介绍过。这里简单说一下:
考虑到二维信号上使用空洞卷积,对于位置iii,在输入为xxx上应用滤波器www,输出为yyy:
y[i]=∑kx[i+r⋅k]w[k]y[i]=\sum_{k}x[i+r·k]w[k]y[i]=k∑x[i+r⋅k]w[k]
其中速率rrr在采样点之间引入r−1r-1r−1个零,有效的将感受野从k×kk×kk×k扩展到ke=k+(k−1)(r−1)k_e=k+(k-1)(r-1)ke=k+(k−1)(r−1),而不增加参数和计算量。
Depthwise separable convolution:
深度分离卷积在MobileNet里面重点讲过,这里简单说一下:
深度可分离卷积干的活是:把标准卷积分解成深度卷积(depthwise convolution)和逐点卷积(pointwise convolution)。深度卷积对每个通道独立使用空间卷积,逐点卷积用于结合深度卷积的输出。深度分离卷积可以大幅度降低参数量和计算量。
我们将扩张卷积核深度分离卷积结合到一起,即扩张分离卷积。扩张分离卷积能够显著的减少模型的计算复杂度并维持相似的表现。
Modified Aligned Xcetpion
摘自MSRA COCO Detection & Segmentation Challenge 2017 Entry。
论文进一步改进了MSRA的工作以适应语义分割任务,具体如下:
- 更深的Xception结构,不同的地方在于不修改entry flow network的结构,为了快速计算和有效的使用内存
- 所有的最大池化操作替换成带下采样的深度分离卷积,这能够应用扩张分离卷积扩展feature的分辨率
- 在每个3×33×33×3的深度卷积后增加BN层和ReLU
改进后的Xception为encodet网络主体,替换原本DeepLabv3的ResNet101.
Experiment
Decoder Design Choise
使用1×11×11×1卷积减少来自低级feature的通道数
最终采用了[1×1,48][1×1,48][1×1,48]来做通道降维。
是否需要3×33×33×3卷积逐步获取分割结果,
实验部分包括使用1×1,2561×1,2561×1,256的卷积,一组、二组、三组的3×3,2563×3,2563×3,256卷积,使用3×3,1283×3,1283×3,128的卷积,结果如下:
结果显示使用两组3×3,2563×3,2563×3,256卷积性能最佳。
使用那部分的低级特征帮助提供细节
论文实验了如果使用Conv2Conv2Conv2和Conv3Conv3Conv3同时预测,Conv2Conv2Conv2上采样2倍后与Conv3Conv3Conv3结合,再上采样2倍,结果如下:
这并没有显著的提升性能,考虑到计算资源的限制,论文最终采样简单的decoder方案,即取Conv2Conv2Conv2上采样后再与top feature concatenate。
ResNet-101 as Network Backbone
Baseline: 在下表的第一组。都没有使用decoder。测试了不同output_strideoutput\_strideoutput_stride,多尺度输入,左右翻转操作。
Adding decoder: 下表的第二组。采用的encoder。平均多增加了20B的计算消耗。
Coarser feature maps: 测试了使用output_stride=32output\_stride=32output_stride=32,这样计算速度更快。但是相对于output_stride=16output\_stride=16output_stride=16准确率下降了1-2%左右。
可以看到使用多尺度MSMSMS计算量计算量增加一个数量级,使用左右翻转FlipFlipFlip计算量翻倍。
Xception as Network Backbone
ImageNet pretraining: 改进后的Xception网络在ImageNet-1K上做了预训练。训练设置如下:
选项 | 配置 |
---|---|
优化器 | Nesterov momentum optimizer,momentum = 0.9 |
学习率 | 初始学习率0.05,2个epochs衰减0.94 |
weight_decay | 4e-5 |
硬件 | 同步使用50 GPUs |
batchsize | 每个GPU取32 |
image size | 299x299 |
可以看到Modified Xception性能要好点。
整体的使用Modified Xception做为网络骨架,使用如下几种变体:
- Baseline: 不使用decoder.
- Adding decoder: 添加了decoder.
- Using depthwise separable convolution: 在ASPP和decoder中使用深度分离卷积。计算量下降了30-40%.
- Pretraining on COCO: 在MS-COCO数据集上预训练
- Pretraining on JFT: 在IamgeNet-1K和JFT-300M上预训练
可以看到使用深度分离卷积可以显著降低计算消耗。
与其他先进模型在VOC12的测试集上对比:
在目标边界上的提升
使用trimap实验测量模型在分割边界的准确度。计算边界周围扩展频带(称为trimap)内的mIoU。结果如下:
与双线性上采样相比,加decoder的有明显的提升。trimap越小效果越明显。
Conclusion
论文探索了Xception和深度分离卷积在模型上的使用,进一步提高模型的速度和性能。模型在VOC2012上获得了新的state-of-the-art表现。
转载于:https://www.cnblogs.com/yumoye/p/11306195.html
语义分割--(DeepLabv3+)Encoder-Decoder with Atrous Separable Convolution for Semantic相关推荐
- deeplab v3+---Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
一.摘要: 1.spp是什么? 问题:分割 我们提出了什么: 1.deeplab v3+ 在deeplab v3的基础上加了一个简单的decoder模块来改善分割结果,尤其是对于边界区域 2.我们采用 ...
- Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
完整代码:https://github.com/jfzhang95/pytorch-deeplab-xception class DeepLab(nn.Module):def __init__(sel ...
- 论文阅读:Enconder-Decoder with Atrous Separabel Convolution for Semantic Image Segmentation(deeplabv3+)
语义分割系列论文-Enconder-Decoder with Atrous Separabel Convolution for Semantic Image Segmentation(deeplabv ...
- Pytorch 语义分割DeepLabV3+ 训练自己的数据集
照葫芦画瓢总结记录了一下DeepLab分割系列,并对Deeplab V3++实现 一.DeepLab系列理解 1.DeepLab V1 原文:Semantic image segmentation w ...
- 语义分割Deeplabv3+论文解读
论文链接 Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation https://arxiv ...
- 【语义分割】ASPP:Rethinking Atrous Convolution for Semantic Image Segmentation
文章目录 一.主要思想 二.实现 三.代码 一.主要思想 为了提高对不同尺度目标的语义分割,作者串联或并联使用不同扩张率的空洞卷积来实现对多尺度上下文的语义信息捕捉. Atrous Spatial P ...
- 语义分割——DeepLabv3+的学习笔记~
1 前言 听说DeepLabv3+是现在最优秀的语义分割框架~ 2 学习笔记 2.1 DeepLabv3+用到了CRF的技术吗? 没有,好像是通过增加context模块实现的:也就是利用了上下文的信息 ...
- 对象上下文语义分割:OCR论文笔记(Object-Contextual Representations for Semantic Segmentation )
对象上下文语义分割:OCR 原文:Object-Contextual Representations for Semantic Segmentation 论文链接: https://arxiv.org ...
- 人人必须要知道的语义分割模型:DeepLabv3+
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 图像分割是计算机视觉中除了分类和检测外的另一项基本任务,它意 ...
最新文章
- 电子狗显示连接不上服务器,大家觉得我这样做得对吗?行车记录仪新名词:云狗...
- java 判断数的位数_Java判断数字位数的两种方法
- (剑指Offer)面试题19:二叉树的镜像
- 你学废了 Mybatis 动态批量修改吗?
- 项目整体管理:项目整体管理实现过程
- Linux安装配置Java1.8开发环境
- [TJOI2015]线性代数(最小割)
- 记录一个layui框架之自定义模块出现的问题
- 面试必备|ID3、C4.5、CART、RF、boosting、Adaboost、GBDT、xgboost模型
- Xendesktop 5.0与view 4.5对比的看法
- 华为Mate 40系列或采用双处理器方案:国行版仍为麒麟芯
- 20165223《网络对抗技术》Exp3 免杀原理与实践
- Abp集成Quartz.net记录
- 7.Linux 的文件权限和目录配置
- Java学习笔记(JDBC数据库编程常用接口)
- 计算机组成与体系结构——指令的基本概念——2020.11.19
- 数字图像处理-基本知识总结
- SAP-MM MRP类型详解
- 【Python数据分析】二手车价格预测
- 域控制器丢失NETLOGON目录的解决办法
热门文章
- 在Android中使用RecyclerView
- 英语学习app源码_无纸化英语学习APP击败%89英语学习者
- python计算相关性显著性p值_基于python实现计算两组数据P值
- python对数据进行统计分析_python获取ELK数据进行统计分析
- svd pca matlab,从SVD到PCA——奇妙的数学游戏
- mysql执行ref_MySql执行分析
- python image模块需要安装吗_python Image模块安装
- 2020天津理工大学计算机考研录取名单,天津理工大学2020年硕士研究生拟录取名单公示...
- java volatile 基本类型_Java中Volatile关键字详解(转)
- 服务器搜索文件命令,Centos文件搜索命令的讲解