SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

发表于2016年,作者 Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla, Senior Member

模型结构:

创新点:

在 encoder 部分的最大池化操作时记录了最大值所在位置(索引),然后在 decoder 时通过对应的池化索引实现非线性上采样,这样在上采样阶段就无需学习。上采样后得到的是一个稀疏特征图,再通过普通的卷积得到稠密特征图,再重复上采样。最后再用激活函数得到onehot 分类结果。SegNet 主要比较的是 FCN,FCN解码时用反卷积操作来获得特征图,再和对应 encoder 的特征图相加得到输出。SegNet 的优势就在于不用保存整个 encoder 部分的特征图,只需保存池化索引,节省内存空间;第二个是不用反卷积,上采样阶段无需学习,尽管上采样完以后还要卷积学习。

训练时设置:

对RGB的输入图像做 local contrast normalization,参数初始化用了 he_normal。

评价指标:

参数量,运行时间,内存消耗。

全局精度,分类平均精度,miou,边界精度(semantic contour score,图像对角线0.75%个像素的边界误差计算F1-score)[57,58,59]。这些指标都在权重根据类别调整和未调整两个状态下进行了评估

模型比较:

1、不同 decoder 变体性能比较,主要是 SegNet 和 FCN 的变体,来说明 SegNet 的内存节省和 encoder 部分特征图的重要性

2、用了两个数据集(道路景象分割,室内景象分割),来比较 SegNet 和传统方法,以及 SegNet 和其余的深度学习方法(不同迭代次数下比较)

讨论和展望:

SegNet 虽然在精确度上没有提升,但是考虑到实际操作时的内存和时间消耗,SegNet 表现很好。未来希望设计效率更高的网络,实现实时分割。同时也对深度学习分割结构的预测不确定性感兴趣[69,70]。

备注:

最大池化为了实现平移不变性,在图片有微小平移时依然可以鲁棒。同时最大值一定程度上反映的是边界信息

和DeconvNet的区别在于取消了全连接层,大大减少了参数数量。此外它在反池化后用的卷积,DeconvNet用的反卷积。

重要参考文献:

[2] J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in CVPR, pp. 3431–3440, 2015.

[3] C. Liang-Chieh, G. Papandreou, I. Kokkinos, K. Murphy, and A. Yuille, “Semantic image segmentation with deep convolutional nets and fully connected crfs,” in ICLR, 2015.

[4] H. Noh, S. Hong, and B. Han, “Learning deconvolution network for semantic segmentation,” in ICCV, pp. 1520–1528, 2015.

[57] G. Csurka, D. Larlus, F. Perronnin, and F. Meylan, “What is a good evaluation measure for semantic segmentation?.,” in BMVC, 2013.

[58] J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in https://arxiv.org/pdf/1605.06211v1.pdf, 2016.

[59] D. R. Martin, C. C. Fowlkes, and J. Malik, “Learning to detect natural image boundaries using local brightness, color, and texture cues,” IEEE transactions on pattern analysis and machine intelligence, vol. 26, no. 5,pp. 530–549, 2004.

[69] Y. Gal and Z. Ghahramani, “Dropout as a bayesian approximation: Insights and applications,” in Deep Learning Workshop, ICML, 2015.

[70] A. Kendall, V. Badrinarayanan, and R. Cipolla, “Bayesian segnet: Model uncertainty in deep convolutional encoder-decoder architectures for scene understanding,” arXiv preprint arXiv:1511.02680, 2015.

编辑于 2019-04-21 19:36:13

SegNet 理解与文章结构的更多相关文章

  1. SQL Server 存储(2/8):理解数据记录结构

    在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下. 数据记录存储我们具体的数据,换句话说,它存在 ...

  2. SQL Server :理解数据页结构

    原文:SQL Server :理解数据页结构 我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或 ...

  3. SQL Server :理解数据记录结构

    原文:SQL Server :理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下 ...

  4. 深入浅出理解linux inode结构

    一.inode是什么? 参考文档:http://tech.diannaodian.com/dw/lin/2012/0112/154629.html 做Android底层驱动或者嵌入式Linux的程序猿 ...

  5. 深入浅出理解linux inode结构【转】

    本文转载自:https://blog.csdn.net/fantasyhujian/article/details/9151615 一.inode是什么? 参考文档:http://tech.diann ...

  6. SQL Server 存储(1/8):理解数据页结构

    我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或写入所有数据页.页有不同的类型,像数据页,GA ...

  7. 转一篇关于vuex简单理解的文章

    学习vuex半天摸不着头脑无意间发现了这篇文章 对vuex做了一个简单的阐述比较有助于我的理解 现在分享出来希望能给一些朋友一点帮助  这个是原文地址 http://www.ituring.com.c ...

  8. Orchard运用 - 理解App_Data目录结构

    了解一个系统,应该基本上要了解目录结构及其组织形式.这样对于开发人员更是必备的知识,比如开发模块最终安装到哪,主题Themes是如何配置启用. 今天跟大家分享其实是个笔记记录,就是看到有一篇文章介绍A ...

  9. 转一篇对EJB理解的文章

    1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...

随机推荐

  1. 记一次Eureka启动报Failed to start bean 'eurekaAutoServiceRegistration' 。。。错误

    在一次项目迁移的过程中,新导入了两个依赖,结果项目启动就报错,如下: 主要原因是:Failed to start bean 'eurekaAutoServiceRegistration'; neste ...

  2. leetcode — clone-graph

    import java.util.*; /** * Source : https://oj.leetcode.com/problems/clone-graph/ * * * Clone an undi ...

  3. Js的reduce()方法

    Js 数组reduce()方法应用一个函数针对数组的两个值(从左到右),以减至一个值. 语法:array.reduce(callback[, initialValue]) 参数说明: 1)callba ...

  4. Mysql启动时执行文件init-file的使用

    可以在配置文件里指定mysql启动以后初始执行的SQL文件, 其语法是: 在[mysqld]下指定: init-file="D:/mysql/test.sql",  后面为具体的s ...

  5. java-初识引用分类及Map实现类WeakHashMap

    1.同样的,话不多讲直接上代码 (1)认识了解下引用分类及其作用 package com.otherMapProduce; import java.lang.ref.WeakReference; /* ...

  6. Vue项目用了脚手架vue-cli3.0,会报错You are using the runtime-only build of Vue where the template compiler is not available.....

    摘自: https://blog.csdn.net/wxl1555/article/details/83187647 报错信息如下图: 报错原因是:vue有两种形式的代码:一种是compiler(模版 ...

  7. 前端项目git操作命名规范和协作开发流程

    前言 一个项目的分支,一般包括主干 master 和 开发分支 dev,以及若干临时分支 分支命名规范 分支: 命名: 说明: 主分支 master 主分支,所有提供给用户使用的正式版本,都在这个主分 ...

  8. 上海启动5G试用!104页PPT,为你深度解析5G终端的创新和机遇

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源:国泰君安证券 作者:分析师王聪.张阳.陈飞达 导读:2019年是5G元年,各大品牌将陆续推出5G ...

  9. 美团技术沙龙01 - 58到家服务的订单调度&数据分析技术

    1. 2015.4.15 到家服务的订单调度&数据分析技术 58到家· 黄海斌 @xemoaya 2.agenda • 58到家介绍 • 订单管理系统介绍 • 数据分析技术的应用 3.2015 ...

  10. ionic3 Toast组件

    html页面 <button ion-button color="dark" class="button-block" (click)="sho ...