我对FastFCN的理解
FastFCN:重新思考膨胀卷积在语义分割主干网络中的作用
扩张卷积=膨胀卷积=空洞卷积
一、前言
1.解决的问题
时下的语义分割模型通常在主干网络中使用扩张卷积来获得高分辨率的特征图,但是这样做会增加计算复杂度和内存占用。
该论文提出了一种新型的联合上采样模块JPU(Joint Pyramid Upsampling)以取代扩张卷积,该方法有效降低了计算复杂度和内存占用,能够在多种已有模型中应用,并且不损失甚至会对最终精度有一定的提升。
2.引入
(a)语义分割方法大多应用了全卷积神经网络(FCN)来完成这一任务,但是全卷积网络的原始网络是为图像分类任务设计的,通过逐步下采样(stride conv和池化层)得到一个富含语义信息但是分辨率很低的特征图;
(b)为了获得最终的高分辨率特征图,一些方法将原始的FCN作为编码器来获取深层语义信息,增加解码器模块以融合来自编码器的多各层次的特征图以获取高分辨率特征图,如图b所示,如Unet,SegNet等;
(c)更进一步的,DeepLab方法一处FCN最后两层下采样操作并引入扩张卷积来保持特征图感受野不变,后跟一个多尺度的语义模块从而得到最终效果,如图c所示,扩张卷积提高了最终特征图的分辨率,大大提升了编解码语义分割方法的分割精度,然而正如摘要中提到,扩展卷积大大增加了计算复杂度和内存占用,限制了其在实时问题上的应用。
因此:
该论文针对这一问题对出了新型的联合上采样模块JPU,通过一系列的实验证明,在计算复杂度和内存占用都显著减少的同时模型精度并无明显降低。
综合来看论文的主要贡献在于:
新型的JPU模块来取代时空复杂度较高的扩张卷积;
计算时间和内存显著降低的同时模型精度有所上升;
该方法在Pascal Context数据集和ADE20K数据集上都达到了同类中的最优。
二、方法
1.框架
为了获得分辨率更高的最终特征图,DilatedFCN移除了原始FCN中后两层下采样操作,并添加扩张卷积。该论文则要寻找能够取代这种操作并且在不损精度的条件下提速的方法来获得与DilatedFCN相同的高分辨率特征图。
论文首先将DialtedFCN移除的下采样层还原,如上图所示,文中方法的主干网络和原始FCN相同,五次下采样操作每次都缩小两倍,为了获得和DilatedFCN相同尺寸的特征图,应用JPU模块,它融合Conv3,4,5三层特征图,通过多尺度语义模块后得到最终的预测结果。
2.JPU模块
联合金字塔上采样(Joint Pyramid Upsampling)
2.1背景
Joint Upsampling 给定一个低分辨率的目标图像和高分辨率引导图像,联合上采样旨在通过从引导图像中转移细节和结构来生成高分辨率目标图像。
图(a)一维空洞卷积(dilation rate = 2)的说明,可以分为以下三个步骤:
- 根据索引的奇偶性将输入特征f_in分成两组f_in_0和f_in_1;
- 用相同的卷积层处理每个特征,得到 f_out_0 和 f_out_1;
- 将生成的两个特征交错合并得到输出特征 f_out;
图(b)Stride Convolution 步幅卷积的提出是为了将输入特征转换为空间分辨率降低的输出特征。这相当于以下两个步骤:
- 用正则卷积处理输入特征 f_in 以获得中间特征 f_m;
- 去除具有奇数索引的元素,从而产生f_out ;
2.2改写为联合上采样
我们方法的主干与 DilatedFCN 之间的区别在于最后两个卷积阶段。
以第 4 个卷积阶段(Conv4)为例,在 DilatedFCN 中,输入特征图首先经过一个常规卷积层处理,然后是一系列空洞卷积(d=2);
不同的是,我们的方法首先使用步幅卷积(s=2)处理输入特征图,然后使用几个常规卷积来生成输出。
2.3用 CNN 解决
论文使用 CNN 模块来近似优化过程
上图为JPU模块,将backbone输出的不同大小的特征图(conv5、conv4、conv3)上采样至同样大小,融合后得到yc,接着使用dilation不同(分别为1/2/4/8)的卷积核进行卷积,从而输出特征图的感受野大小。
三、结果
1.模型对比
上图为ENCNet和ENCNet+JPU的预测结果(图片分别来自Pascal Context验证集和ADE20K验证集),上图可以明显看出JPU增加感受野的好处,山脉能够被正确识别。
2.实验结果
作者在多个数据集上测试了JPU的效果,上图为ADE20K验证集上的模型分割效果,可以看出JPU模块明显提高了模型的分割效果。
Reference
1.深度学习(9):FastFCN论文翻译与学习
2.图像语义分割(14)-FastFCN: 重新思考语义分割模型主干网络中的扩张卷积
3.【第五期论文复现赛-语义分割】FastFCN
我对FastFCN的理解相关推荐
- 深度学习(五):FastFCN代码运行、测试与预测
目录 0 前言 1 环境配置 1.1 安装python包 1.2 下载detail-api 1.3 运行prepare_pcontext.py 1.4 运行 prepare_ade20k.py 2 训 ...
- 深度学习(9):FastFCN论文翻译与学习
FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic FastFCN:重新思考膨胀卷积在语义分割主干网络中的作用 注 ...
- 通用解题法——回溯算法(理解+练习)
积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...
- stream流对象的理解及使用
我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...
- Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)
1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...
- java局部变量全局变量,实例变量的理解
java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...
- 智能文档理解:通用文档预训练模型
预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...
- 熵,交叉熵,散度理解较为清晰
20210511 https://blog.csdn.net/qq_35455503/article/details/105714287 交叉熵和散度 自己给自己编码肯定是最小的 其他的编码都会比这个 ...
- mapreduce理解_大数据
map:对不同的数据进行同种操作 reduce:按keys 把数据规约到一起 看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop 与MapReduce的整体有所了解了. [前言 ...
最新文章
- vue+elementui项目打包后样式变化问题
- 他是娱乐圈最低调的人,甘当多年绿叶,没想到竟是鲁迅的侄子
- 机器学习实战(十)利用K-means算法对未标注数据分组
- 你真的理解CAP理论吗?
- 使用 C# 编程对RTF文档的支持
- [原创]红马版验证码实现(中文+变形+噪点)
- 【bzoj2929】[Poi1999]洞穴攀行 网络流最大流
- Unity3D之NGUI基础2:使用NGUI
- 《linux核心应用命令速查》连载三:sa:报告、清理并维护进程统计文件
- 构造一个日期类java,java 日期类
- IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520
- ​突破数据存储瓶颈,Aibee实现场景化AI的有效落地
- 关于SCM供应链管理系统开发思路
- 我的世界联机侠 v2.1.1官方正式版
- python如何做一个财务报表_用python帮财务小姐姐自动生成财务报表
- 优秀站长工具推荐之百度统计热力图用户体验要素
- python not in函数用法,pandas is in和not in的使用说明
- Jetson TX2 安装 D435i ROS驱动
- vin接口车架号vin查询车型
- 获取硬件序列号(注册机)
热门文章
- 学习Python的 第六天Day6, 今天你get了吗❤
- 现有的画笔和创建自己的画笔
- 以太坊·食品溯源案例
- galaxy+note8+android+8.0,太遗憾了!三星Galaxy S8和Note8无缘安卓10更新
- aws云服务器查看系统版本,Amazon EC2是什么?Amazon EC2云服务器常见问题汇总
- 看2010年***们干啥 安全问题及早预防
- 31、查询1990年出生的学生名单(重点year)
- 日版iphone4有锁机用激活卡激活
- 【笔记】_findnext x64报错解决办法:改为 intptr_t handle; //x64
- MVC中使用PartialView方法