通俗易懂理解SegNet语义分割模型

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。

一、参考资料

深度学习之图像分割—— SegNet基本思想和网络结构以及论文补充

一文带你读懂 SegNet(语义分割)

二、相关介绍

1. 上采样(Upsampling)

关于上采样的详细介绍,请参考另一篇博客:Upsampling上采样相关技术

3. 转置卷积(Transposed Convolution)

关于转置卷积的详细介绍,请参考另一篇博客:深入浅出理解转置卷积Conv2DTranspose

三、SegNet网络模型

1. SegNet的创新点

SegNet与U-net网络相似,主要的区别是提出了最大池化索引,通过记录池化的位置,在上采样时恢复特征信息。具体来说,SegNet在进行池化操作时,记录池化所取值的位置,在上采样时直接用当时记录的位置进行反池化(UpPool),这样做的作用是更好的保留边界特征信息。

2. 池化索引(pooling indices)

2.1 最大池化(Max-Pooling)

Pooling 在CNN中是使得图片缩小一半的手段,通常有Max-PoolingAverage-Pooling两种 Pooling 方式,下图所示的是Max-PoolingMax-Pooling 是使用一个2x2的filter,取出这4个权重最大的一个,原图大小为4x4,Pooling 之后大小为2x2,原图左上角粉色的四个数,最后只剩最大的6,这就是max的意思。

在这里插入图片描述

2.2 池化索引的原理

SegNet是如何记录池化位置的呢?答案就是通过池化索引(pooling indices)。

在SegNet中的 Pooling 与传统 Pooling 多了一个index功能,也就是每次 Pooling,都会保存通过max选出的权值在2x2 filter中的相对位置,对上图的6来说,6在粉色2x2 filter中的位置为(1, 1)(index从0开始),黄色的3的index为(0, 0)。同时,从网络框架图可以看到绿色的 pooling 与红色的 upsampling 通过 pool indices 相连,实际上是 pooling 后的indices输出到对应的 upsampling(由于网络结构是对称的,因此第1次的 pooling 对应最后1次的 upsamping,如此类推)。

Upsamping 就是 Pooling 的逆过程,index在 Upsampling 过程中发挥作用,Upsamping使得图片尺寸变大2倍。我们清楚的知道 Pooling 之后,每个filter会丢失了3个权重,这些权重是无法复原的,但是在 Upsamping 层中可以得到在 Pooling 中相对 Pooling filter 的位置。所以Upsampling 中先对输入的特征图放大两倍,然后把输入特征图的数据根据 Pooling indices 放入,如下图所示,Unpooling 对应上述的 Upsamplingswitch variables 对应 Pooling indices

在这里插入图片描述

2.3 SegNet与FCN对比

对比FCN可以发现,SegNet在 Unpooling 时用index信息,直接将数据放回对应位置,后面再接Conv训练学习。这个上采样不需要训练学习(只是占用了一些存储空间)。而FCN利用转置卷积(Transposed Convolution)对 feature map 进行 upsampling,这一过程需要学习,同时将encoder阶段对应的 feature map 做通道降维,使得通道维度和 upsampling 相同,这样就能做像素相加(Add),得到最终的decoder输出。

在这里插入图片描述

3. SegNet网络结构

SegNet是基于Encoder-Decoder的网络结构,Encoder的backbone采用VGG-16(去除FC层)。SegNet网络结构,如下图所示:

在这里插入图片描述

在Encoder过程中,通过卷积提取特征,SegNet使用 padding=same 的卷积,即执行卷积操作后保持图像原始尺寸;在Decoder过程中,同样使用使用 padding=same 的卷积对缩小后的特征图进行上采样,不过卷积的作用是为了丰富上采样的图像信息,使得在Encoder的Pooling过程丢失的信息可以通过学习通过Decoder得到。然后对上采样后的图像进行卷积处理,来完善图像中物体的几何形状,将encoder中获得的特征还原到原来图像的具体的像素点上。最后利用 soft-max 多分类器对Decoder输出的特征图进行逐像素分类(pixel-wise classification)。

4. SegNet性能对比

在这里插入图片描述

从上面表格中可以看出:

  • SegNet比FCN和DeepLabv1慢,因为SegNet包含解码器架构。它比DeconvNet更快,因为它没有全连接层。
  • SegNet在训练和测试期间的内存要求都很低。并且模型尺寸比FCN和DeconvNet小得多。

四、相关经验

(TensorFlow)代码实现

github代码:Tensorflow-SegNet

五、参考文献

[1] Badrinarayanan V, Kendall A, Cipolla R. Segnet: A deep convolutional encoder-decoder architecture for image segmentation[J]. IEEE transactions on pattern analysis and machine intelligence, 2017, 39(12): 2481-2495.

[2] Badrinarayanan V, Handa A, Cipolla R. Segnet: A deep convolutional encoder-decoder architecture for robust semantic pixel-wise labelling[J]. arxiv preprint arxiv:1505.07293, 2015.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/348340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于爬虫爬取网页时遇到的乱码问题的解决方案。

目录 前言解决措施 前言 最近,我像爬取一下三国演义这本书籍的全部内容。 网站的网址为:https://www.shicimingju.com/book/sanguoyanyi.html 但是我爬取出来的结果是这样的 会遇到乱码。 经过我多方面的调试发现,就是网页的编码和我pycha…

mysql8版本批量造4000个数据SQL

需求: 测试工作中修改单需要构造单元下4000个组合的数据,写个博客来记录,其他类似的可以举一反三。 具体sql: 实现1个产品1个单元下插入4000个组合数据 思路: 在MySQL 8中实现循环插入4000条具有不同主键的记录&a…

jquery多选框

使用hbuilder <!DOCTYPE html> <html><head><meta charset"GBK"><title></title></head><body><table id"myTable"> <tr> <td>黄1</td> </tr> <tr> <td>…

echarts 玫瑰饼图 俩个共用一个图例 可同时改变

export const getRosePie (option {}) > {return {legend: {textStyle: {color: #B0D0E9}},tooltip: {},dataset: {// source: [// [flag, 已解决, 未解决],// [设备告警, 86, 10],// [环境告警, 41, 30],// [任务告警, 24, 67]// ]source: option.source},series…

【Web前端实操15】利用Grid布局完成九宫格

相关知识点&#xff1a; 创建多列 column-count 属性指定了需要分割的列数 列与列之间的间隙 column-gap 属性指定了列与列间的间隙 列边框 column-rule-style 属性指定了列与列间的边框样式 column-rule-width 属性指定了两列的边框厚度 column-rule-color 属性指定了…

如何在 Kotlin Multiplatform 库的 API 中避免请求 Android Context

如何在 Kotlin Multiplatform 库的 API 中避免请求 Android Context 假设你正在进行 Kotlin Multiplatform 项目的开发。 你需要从通用代码中获取用户的 GPS 位置&#xff0c;并且目前没有现成的库可以实现该功能。 这时&#xff0c;你决定编写一个新的 Kotlin Multiplatform …

数据结构——静态链表

1.定义&#xff1a; &#xff08;1&#xff09;单链表&#xff1a;各个结点散落在内存中的各个角落&#xff0c;每个结点有指向下一个节点的指针(下一个结点在内存 中的地址); &#xff08;2&#xff09;静态链表&#xff1a;用数组的方式来描述线性表的链式存储结构: 分配一…

Windows中Zookeeper与kafka的安装配置

一、Zookeeper安装与使用 1.安装包下载 直接在官网下载即可Apache ZooKeeper。 下载后直接解压到本地即可。 2.环境配置 1> 在目录中下增加data和log文件夹 2> 解压目录下的 conf 目录&#xff0c;将目录中的 zoo_sample.cfg 文件&#xff0c;复制一份&#xff0c;重…

STC89C51单片机

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

【pytorch】pytorch学习笔记(续1)

p22&#xff1a;1.加减乘除&#xff1a; &#xff08;1&#xff09;add(a,b)&#xff1a;等同于ab。 &#xff08;2&#xff09;sub(a,b)&#xff1a;等同于a-b。 &#xff08;3&#xff09;mul(a,b)&#xff1a;等同于a*b。 &#xff08;4&#xff09;div(a,b)&#xff1a…

低成本扫码点餐:1000元全包

在数字化时代&#xff0c;扫码点餐已经成为餐饮行业的标配。然而&#xff0c;对于许多小规模或初创的餐饮企业来说&#xff0c;开发一套完整的扫码点餐系统是一项成本高昂的任务。今天&#xff0c;我们将向您介绍一个低成本、高效的方法&#xff0c;让您用1000块钱轻松搞定一套…

反光衣穿戴识别摄像机

反光衣穿戴识别摄像机是一种基于图像识别技术的智能设备&#xff0c;旨在识别和监测道路上穿戴反光衣的行人和工作者&#xff0c;以提高道路交通安全。 反光衣穿戴识别摄像机利用高清摄像头捕捉道路上的实时图像&#xff0c;并通过图像处理算法进行人体检测和识别&#xff0c;识…

Programming Abstractions in C阅读笔记:p248-p253

《Programming Abstractions in C》学习第69天&#xff0c;p248-p253总结&#xff0c;总计6页。 一、技术总结 “A generalized program for two-player games”如标题所示&#xff0c;该小节强调要学会从一个复杂的程序中抽象出通用的内容——这也是本书的主旨——“Program…

RocketMQ源码阅读-十-事务消息

RocketMQ源码阅读-十-事务消息 交互流程事务消息发送Producer发送事务消息Broker处理结束事务请求Broker 生成 ConsumeQueue 事务消息回查Broker发起回查Producer 接收回查 总结 交互流程 事务消息交互流程图如下&#xff1a;事务消息发送步骤如下&#xff1a; 生产者将半事务…

40元一碗的面,卖不动了?

一、在熙熙攘攘的商场中&#xff0c;两家门店“格格不入” 周五&#xff08;1月19日&#xff09;下午&#xff0c;人群从写字楼向购物中心转移。6点前后&#xff0c;北京合生汇商场的多个过道、上下行扶梯已经熙熙攘攘&#xff0c;B1、B2层的美食街区更是热闹。 一片喧哗中&…

GIS项目实战07:Eclipse资源分享

官网下载&#xff1a;Eclipse Downloads | The Eclipse Foundation 百度网盘分享&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1YBKw8k0a0DouSWZmDg8fYw 提取码&#xff1a;1234 &#xff08;链接失效请私信&#xff09; 无需安装&#xff0c;解压即可使用

小程序系列--12使用 npm 包

一、Vant Weapp 1. 什么是 Vant WeappVant Weapp 是有赞前端团队开源的一套小程序 UI 组件库&#xff0c;助力开发者快速搭建小程序应用。它所使用的是 MIT 开源许可协议&#xff0c;对商业使用比较友好。 官方文档地址 https://youzan.github.io/vant-weapp 2. 安装 Vant 组…

Power BI - 5分钟学习新增度量值

每天5分钟&#xff0c;今天介绍Power BI新增度量值 在 Power BI Desktop 中&#xff0c;你可以创建度量值。度量值用于计算表达式的结果。 在创建自己的度量值时&#xff0c;需要使用DAX语言。 DAX包括超过200个函数、运算符等&#xff0c;几乎可以计算任何数据分析所需的结果…

智能风控体系之divergence评分卡简介

评分卡模型的出现据说最早是在20世纪40年代&#xff0c;Household Finance and Spiegel和芝加哥邮购公司第一次尝试在贷款决策过程中使用信用评分.但是这两家公司都终止了这项业务。后来&#xff0c;在20世纪50年代末&#xff0c;伊利诺伊州的美国投资公司&#xff08;AIC&…

【C语言】素数的N种代码形式

The words written in front 大家好&#xff0c;我是xiaoxie,希望你看完之后对你能有所帮助&#xff0c;不足之处&#xff0c;请批评指正&#xff01; 希望可以和大家一起交流学习进步&#xff01; Introduction 大家都知道&#xff1a;“质数又称素数。一个大于1的自然数&a…