图像语义分割综述(semantic segmentation) 上篇

2023-11-11

本文对图像语义分割近年来的主要发展做一个综述性的介绍。

翻译了以下两篇博文,并进行了整合。

https://www.jeremyjordan.me/semantic-segmentation/ 

http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review

  1. 语义分割的定义

语义分割是计算机视觉中十分重要的领域,它是指像素级地识别图像,即标注出图像中每个像素所属的对象类别。下图为语义分割的一个实例,其目标是预测出图像中每一个像素的类标签。

Screen-Shot-2018-05-17-at-7.42.16-PM

这里需要和实例分割区分开来。它没有分离同一类的实例;我们关心的只是每个像素的类别,如果输入对象中有两个相同类别的对象,则 分割本身不将他们区分为单独的对象。

常见的应用包括:

  • 自动驾驶汽车:我们需要为汽车增加必要的感知,以了解他们所处的环境,以便自动驾驶的汽车可以安全行驶;下图为自动驾驶过程中实时分割道路场景;

deeplabcityscape

  • 医学图像诊断:机器可以增强放射医生进行的分析,大大减少了运行诊断测试所需的时间;下图是胸部X光片的分割,心脏(红色),肺部(绿色以及锁骨(蓝色);

è¸é¨Xåç

简单来说,分割的目标一般是将一张RGB图像(height*width*3)或是灰度图(height*width*1)作为输入,输出的是分割图,其中每一个像素包含了其类别的标签(height*width*1). 为了清晰起见,使用了低分辨率的预测图,但实际上分割图的分辨率应与原始输入的分辨率相匹配。

input to label

其中,与处理标准分类值的方式类似,我们使用one-hot编码对类标签进行处理,实质上是为每个可能的类创建相应的输出通道。

one-hot 编码可查看https://www.cnblogs.com/daguankele/p/6595470.html, 包括意义及方法。

ä¸ç­

最后,可以通过argmax将每个深度方向像素矢量折叠成分割图,我们可以通过将它覆盖在原图上,它会照亮图像中存在特定类的区域,以便观测(mask)。

overlay

2. 方法综述

在深度学习应用到计算机视觉领域之前,人们使用 TextonForest 和 随机森林分类器进行语义分割。卷积神经网络(CNN)不仅对图像识别有所帮助,也对语义分割领域的发展起到巨大的促进作用。

语义分割任务最初流行的深度学习方法是图像块分类(patch classification),即利用像素周围的图像块对每一个像素进行独立的分类。使用图像块分类的主要原因是分类网络通常是全连接层(full   connected   layer),且要求固定尺寸的图像。

2014 年,加州大学伯克利分校的 Long等人提出全卷积网络(FCN),这使得卷积神经网络无需全连接层即可进行密集的像素预测,CNN 从而得到普及。使用这种方法可生成任意大小的图像分割图,且该方法比图像块分类法要快上许多。之后,语义分割领域几乎所有先进方法都采用了该模型。

除了全连接层,使用卷积神经网络进行语义分割存在的另一个大问题是池化层。池化层虽然扩大了感受野、聚合语境,但因此造成了位置信息的丢失。但是,语义分割要求类别图完全贴合,因此需要保留位置信息。 有两种不同结构来解决该问题。  第一个是编码器--解码器结构。编码器逐渐减少池化层的空间维度,解码器逐步修复物体的细节和空间维度。编码器和解码器之间通常存在快捷连接,因此能帮助解码器更好地修复目标的细节。U-Net是这种方法中最常用的结构。     第二种方法使用空洞/带孔卷积(dilated/atrous   convolutions)结构,来去除池化层。

  • encoder-decoder 结构的提出

针对语义分割任务构建神经网络架构的最简单的方法是简单地堆叠多个卷积层(使用same填充以保留需要的维度)并输出最终的分割图。这通过特征映射的连续变换直接学习从输入图像到其对应分割的映射。但在整个网络中保持全分辨率的计算成本非常高。

æªå±ï¼2018å¹´5æ19æ¥ï¼å¨-12.32.20-PM

对于深度卷积网络,浅层主要学习低级的信息,随着网络越深,学习到更高级的特征映射。为了保持表达能力,我们通常需要增加特征图的数量(通道数),从而可以得到更深的网络。对于图像分类来说,由于我们只关注图像“是什么”(而不是位置在哪),因而我们可以通过阶段性对特征图降采样(downsampling)或者带步长的卷积(例如,压缩空间分辨率)。然而对于图像分割,我们希望我们的模型产生全分辨率语义预测。

图像分割领域现在较为流行的是编码器/解码器结构,其中我们对输入的空间分辨率进行下采样,生成分辨率较低的特征映射,它能高效地进行分类。随后,上采样可以将特征还原为全分辨率分割图。

Screen-Shot-2018-05-16-at-10.33.29-PM

  • 上采样的方法

我们有许多方法可以对特征图进行上采样。池化操作通过对将小区域的值取成单一值(例如平均或最大池化)进行下采样,同样的,上池化操作就是将单一值分配到更高的分辨率进行上采样。

Screen-Shot-2018-05-19-at-12.54.50-PM

其中,转置卷积是迄今为止最流行的方法,因为它允许我们使用可学习的上采样。

æªå±ï¼2018å¹´5æ19æ¥ - å¨ -  51å¹´3æ12æ¥ï¼PM

典型的卷积运算将采用滤波器视图中当前值的点积并为相应的输出位置产生单个值,而转置卷积基本上相反。对于转置卷积,我们从低分辨率特征图中获取单个值,并将滤波器中的所有权重乘以该值,将这些加权值投影到输出要素图中。

æªå±ï¼2018å¹´5æ21æ¥ - å¨ -  29å¹´1æ11æ¥ï¼PM

对于某些大小的滤波器会在输出特征映射中产生重叠(例如,具有步幅2的3x3滤波器 - 如下面的示例所示),若将重叠值简单地加在一起,这往往会在输出中产生棋盘格子状的伪影(artifact)。

这并不是我们需要的,因此最好确保您的滤镜大小不会产生重叠。

padding_strides_transposed

 

下一章将会继续介绍主流的几种模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像语义分割综述(semantic segmentation) 上篇 的相关文章

  • Java 中 try-catch,throw和throws的使用

    Java 中的异常有很多 这种异常机制 可以帮助处理程序中未知的错误 关于异常的处理有try catch 程序块 throw throws 以下分别对这三种进行介绍 一 try catch try catch用来捕获代码段的异常并做出处理
  • SQL语句知识大全

    目录导航 一 SQL简介 1 什么是数据库 2 数据库分类 3 SQL 是什么 4 SQL 能做什么 5 RDBMS 二 基础语法 1 创建数据库 2 删除数据库 3 创建表 4 删除新表 5 增加一个列 6 添加主键 7 创建索引 8 创
  • python实现物体定位

    前段时间利用实验室的器材写了一个小小的项目 简单的整理了一下 并不完善 现在分享一下 实验的内容是 使用卫星定位信息接收器 接收物体的位置信息 包括经度纬度等等 然后解析这些数据 然后根据经度纬度等信息通关百度地图API获取物体的具体位置信
  • 分享常用JDBC连接参数

    oracle 驱动 oracle jdbc driver OracleDriver URL jdbc oracle thin
  • 依靠自我

    必读网 http www beduu com 整理 依靠自我 我们需要爱默生式的思想家 当所有的编译工作都完成之后 我突然发现自己在编译过程中经常出现的 为什么要编译爱默生的文章 的疑问都变得多余了 也就是说 我突然认为 在中国重提爱默生是
  • iOS:如何在iphone、ipad上安装一些常用命令行命令

    iOS 如何在iphone ipad上安装一些常用命令行命令 相信对Linux Unix比较熟悉的朋友 在iphone或 ipad越狱后发现通过Cydia可以安装OpenSSH 一定都想安装上并且通过ssh登录上去看看 但是登录后却发现几乎

随机推荐

  • jsch jar包连接不上ssh报Algorithm negotiation fail 错误

    参考 JSchException Algorithm negotiation fail问题解决之路 GreatQing的个人页面 OSCHINA 中文开源技术交流社区 1 jsch jar包连接不上ssh报Algorithm negotia
  • python 报错error193_WindowsError:[错误193]%1不是在Python有效的Win32应用程序

    I wish to import liblas module in Python 2 7 on window 64bit If I import the module with IDLE Python GUI I have no probl
  • 相较稳定的红包算法实现/c语言实现

    红包的分配分布 个人认为能够运用到正态分布是极好 运气好的人少 运气差的人也少 但是本篇算法并不打算利用正态分布的特性来实现分配红包算法 本人太菜 而是一个产生红包相对稳定 一定程度上也算一个是符合正太分布特性的算法 世间很多事物的分布一定
  • 爬虫的请求参数字典中含有相同的键该怎么办?

    目录 针对GET方法 针对POST方法 针对GET方法 比如一个网站get方法的链接是 https www baidu com assist test get name test age 20 class age 18 可以看出该方法传递的
  • 计算机网络 学习摘要(8) - 音视频服务/IPv6协议

    概述 音视频常用的协议 实时流RTSP协议 实时运输协议RTP 实时传送控制协议RTCP H 323 以及会话发起协议SIP 声音采用的是PCM编码 不同的是数据率影响音质 互联网本身是非等时的 音视频传输需要时间间隔等时 互联网提供的音频
  • BigDecimal精度丢失,给前端返回String类型,ToStringSerializer。

    bigDecimal长度太长 返回给前端 精度会丢失 即后几位都会变成0 解决办法 给前端返回字符串类型 加注解 JsonSerialize using ToStringSerializer class JsonSerialize usin
  • 蓝桥杯历届-带分数

    蓝桥杯历届 带分数 标题 带分数 100 可以表示为带分数的形式 100 3 69258 714 还可以表示为 100 82 3546 197 注意特征 带分数中 数字1 9分别出现且只出现一次 不包含0 类似这样的带分数 100 有 11
  • 使用Chrome调试JavaScript的断点设置和调试技巧

    使用Chrome调试JavaScript的断点设置和调试技巧 投稿 hebedich 字体 增加 减小 类型 转载 时间 2014 12 16 这篇文章主要介绍了使用Chrome调试JavaScript的断点设置和调试技巧 需要的朋友可以参
  • centos7 开机启动流程

    开机启动流程 开机启动流程的意义 1 掌握让某个软件开机自动运行 2 开机不能正常启动 是什么原因 或者哪个环节出现了问题 3 防止黑客植入木马 去查询黑客会把木马放到哪些地方 POST 上电自检 gt 加载BIOS Basic Input
  • 处理点云数据 点云与生成前视图

    创建点云数据中的前视图 前视图投影 为了将激光雷达传感器的前视图平面化为二维图像 必须将三维空间中的点投影到可以展开的圆柱形表面上 以将其平面化 下面公式见论文Vehicle Detection from 3D Lidar Using Fu
  • 快捷指令_快捷指令怎么用?玩转快捷指令(捷径)全攻略 看完你就是老司机!...

    快捷指令大全下载 快捷指令 捷径 下载 https m zmtc com jiejing 下载安装快捷指令 请复制以上网址 在iOS设备自带的 Safari 浏览器中打开进行下载与安装即可 快捷指令果粉朋友一定不会陌生 不过一直以来 我们主
  • Spring框架概述 --- 常用注解

    Spring框架概述 常用注解 装配注解 SpringMVC注解 Spring配置注解 装配注解 Spring 提供了以下多个注解 这些注解可以直接标注在 Java 类上 将它们定义成 Spring Bean Component 该注解用于
  • tomcat端口被占用解决办法

    tomcat启动时出现Address already in use JVM Bind 的原因是因为端口被占用 有可能是因为多次启动tomcat或者启动了多个tomcat 或者是其他应用程序或者服务占用了 错误日志如下 严重 Standard
  • C++学习之用数组实现顺序表

    开始学习数据结构 路还长 加油 用C 的template实现顺序表SequenceList 第一次上传完整代码 比较菜 SequenceList h ifndef SEQ LIST H define SEQ LIST H include
  • 【100%通过率 】【华为OD机试 c++/java/python】最小调整顺序次数【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个队列 但是这个队列比较特殊 可以从头部添加数据 也可以从尾部添加数据 但是只能从头部删除数据 输入一个数字n 会依次添加数字1 n 也就
  • JavaScript中sort方法排序不正确解决办法

    假如你想对一个数组排序 在JS中你会想到sort函数 例如 var arr 1 100 20 200 40 50 120 10 arr sort console log arr 控制台中可以看到结果是 1 10 100 120 20 200
  • 气压计MS5611编程操作流程

    文章更新版本 时间 备注 修订人 V0 1 发布于 2019 09 21 11 03 46 初始版本 libo 文章目录 一 开发笔记 二 初始化与工作流程 1 从PROM读取出厂校准值 2 启动温度AD转换 读取AD值 3 启动气压AD转
  • TaskCompletionSource

    概括 TaskCompletionSource
  • 极速加密文件夹: 一个2秒加密文件夹的Windows文件夹加密软件

    大部分朋友的电脑上 经常会有一些重要文件 隐私照片和视频不想让别人轻易可以访问或者打开 尤其你的电脑可能会被别人偶尔使用的时候 加密保护就尤其重要了 不少Windows用户通常使用ZIP等压缩工具 将文件夹压缩成压缩包并加上密码进行文件保护
  • 图像语义分割综述(semantic segmentation) 上篇

    本文对图像语义分割近年来的主要发展做一个综述性的介绍 翻译了以下两篇博文 并进行了整合 https www jeremyjordan me semantic segmentation http blog qure ai notes sema