【CV现状-3.1】图像分割
#磨染的初心——计算机视觉的现状
【这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣。可以随意传播,随意喷。所涉及的内容过多,将按如下内容划分章节。已经完成的会逐渐加上链接。】
- 缘起
- 三维感知
- 目标识别
3.0. 目标是什么
3.1. 图像分割
3.2. 纹理与材质
3.3. 特征提取与分类
3.4. 其它 - 目标(和自身)在三维空间中的位置关系
- 目标的三维形状及其改变、目标的位移
- 符号识别
- 数字图像处理
图像分割
为了通过材质、形状、结构识别目标,对图像进行分割应该是必然的选择。在这一点上计算机视觉研究者们算是勉强达成了共识,图像分割甚至被很多研究者列为计算机视觉的基本任务之一了。很多图像分割算法被提了出来,归纳起来可以分为基于阈值的方法、基于聚类的方法、基于区域的方法、基于图割的方法、活动边界模型和水平集、基于卷积神经网络的方法。
基于阈值的方法里,有全局一个阈值的,也有对图像不同区域使用不同阈值的。此类方法的关键在于确定阈值,然而对于大多数图像即使遍历所有的取值也无法找到实现合理分割的阈值,因此该算法常用于符号识别、指纹识别和分割遥感领域中的各种指数图像(水体指数、植被指数、干旱指数、热红外影像)。
凡是认真思考或者亲身尝试过的,都会承认基于聚类的方法的分割结果难以令人接受。所有的聚类算法都直接或者间接假设了类别内部的样本密度高于类别边界的样本密度。观察过一些图像的直方图后就会发现,像素在像元值空间的分布形状通常都类似钟型曲线(只有一个凸起),也就是说按照聚类算法的假设应该将全部像素聚为一类。即使同时使用多个图像通道,这种情况也没有什么改观。没有或者难以使用空间信息是基于聚类的方法的直接缺陷,导致分割结果形状复杂、越过显而易见的边界。通常基于聚类的方法都作为其他算法的预处理步骤,在图像处理领域用于压缩颜色数量。
基于聚类的方法中有一个叫做SLIC的超像素分割算法与基本的聚类算法有较大的不同,首先在图像上均匀的撒上种子点,然后以一定的半径执行KMeans聚类,所使用的距离度量方法考虑到了空间信息。该算法与方格网形划分超像素相比有很大的优势,但是由于聚类算法的用于分割的天然缺陷仍然会导致超像素越过显而易见的边界。如果目标是为了保持形状的准确性,SLIC并不是很好的预处理选择。
基于区域的方法目前包含种子区域生长、区域分裂和合并、分水岭。种子区域生长法的关键在于种子点的选择、相似性的度量、生长规则,其中相似性度量最为关键。常用的相似性度量方法有像元值、颜色、纹理,相似性的度量也是区域分裂和合并法的最关键所在。区域分裂和合并的另外一个关键是分裂和合并的机制。分水岭算法通常应用在梯度图上,将梯度值看作高程值,设想从高程值的局部极小值处向外涌水,整幅图上水位升高的速度是一样的,在两处涌水相遇处修建堤坝。当水位上升至最高点后,所有像素点都被淹没,所有的堤坝形成对图像的分割。分水岭算法对微弱的边缘也有很好的响应,因而也会导致过分割。对于保持形状来说,分水岭加区域分裂和合并应该还有较大的提升空间。
基于图割的方法是将图像分割转换为图的最小割问题,关键在于设置边的权重,这只不过是相似性度量的另一个称呼。因此基于图割的全图分割方法并不会比种子区域生长、区域分裂和合并更好;此外最小割是NP问题,难以最优求解。基于图割的方法中值得一提的是Graphcut和Grabcut,该算法用于分割前背景,需要人工粗略标注部分背景和前景。这两个算法的直接意义在于图像处理领域的交互式前景提取。
活动边界模型和水平集的用处同样在于交互式前景提取,需要人工提供初始前景范围曲线,然后让范围曲线在根据图像数据得到的能量函数的作用下演化,使其向前景边缘逐渐逼近,最终找到前景的边缘,在达到前景边缘时能量函数的取值最小。活动边界模型直接对范围曲线进行演化,而水平集则根据初始范围曲线及图像数据构造出三维曲面,通过三维曲面的演化以及取等值线的方式间接实现范围曲线的演化。前背景的边缘处一定具有较大的梯度,因此能量函数最重要的构造依据就是图像的梯度,仅依靠梯度会陷入局部最优,一般还会加入曲线的曲率和其它先验知识。活动边界模型和水平集方法不过是希望通过曲线和曲面的传递作用以及其它先验突破梯度的局部极大值,在前景分割上的表现不会比基于图割的方法更好,事实也是如此。
基于卷积神经网络的方法包括语义分割、实例分割、全景分割三种,归根到底都是通过已知的样本数据建立像素及其一定范围内领域的像素到实例或者类别的映射。得益于神经网络能够模拟任意函数的优势,在大量样本数据参与训练的条件下所建立出来的映射模型具有较高的准确性。然而机械的映射模型的缺陷也是显而易见的,迁移能力(只能分割猫的网络不能分割狗)和泛化能力(只能分割白猫的网络分割不了花猫)几乎没有。另外由于映射模型过分复杂,输入数据的轻微改变也会导致无法预料的错误(像素攻击)。
以上就是图像分割的所有进展,凡是有过尝试的人都会承认,即使人类也很难从目前图像分割的结果中提取出形状和结构特征。不禁要问,在没有识别出目标的情况下,到底能够分割到什么程度?目前图像分割算法是否还能继续提升?就我个人的感觉,目前的进展还未达到图像分割的极限,虽然不可能达到人类的水平,但是仍然有很大的提升空间。关键的问题是朝着什么方向去提升,也就是应该用什么指标来评价图像分割能力的提升?
目前图像分割算法的评价指标都是基于IOU的,IOU直接强调的是面积,而面积对于图斑来说是区分度非常差的特征。对于很多形状复杂的自然目标来说,IOU大但是形状和结构则相去甚远,因此基于IOU的评价指标对于强调形状和结构没有任何价值。但是目前并没有形状和结构特征的描述方法,仿佛陷入了进退两难的境地。其实不难看出,如果边界是准确的,那么将准确的边界连接起来就能形成准确的分割。边界的少量错位是在所难免的,因此在评价边界的准确性时需要允许一定程度的错位。但是若果边界有缺失,则无论如何也无法恢复形状和结构了。至此,分割算法的一项评价指标就呼之欲出了——边界缺失率。与之对应的另一项评价指标则是——边界冗余率。
【CV现状-3.1】图像分割的更多相关文章
- 【CV现状-3.3】特征提取与描述
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-3.2】纹理与材质
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-3.0】"目标"是什么
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-2】三维感知
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- 【CV现状-1】磨染的初心——计算机视觉的现状:缘起
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- Convolutional Neural Networks 笔记
1 Foundations of Convolutional Neural Networks 1.1 cv问题 图像分类.目标检测.风格转换.但是高像素的图片会带来许多许多的特征. 1.2 边缘检测( ...
- <学习opencv>过滤器和卷积
/*=========================================================================*/ // 过滤器和卷积 /*========== ...
- 深度学习与CV教程(14) | 图像分割 (FCN,SegNet,U-Net,PSPNet,DeepLab,RefineNet)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 计算机视觉--CV技术指南文章汇总
前言 本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...
随机推荐
- PowerMock学习(九)之Mock Answer的使用
关于Mock Answer 上一篇文章,有介绍过关于Arguments Matche的使用,其实 Answer的作用与其比较类似,但是它比 Arguments Matcher 更加强大. Argume ...
- 深入浅出Spring(三)
我为大家简单介绍了一下Spring框架核心内容中的IoC,接下来我们继续讲解另一个核心AOP(Aspect Oriented Programming),即面向切面编程. 1.OOP回顾 在介绍AOP之 ...
- Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean
在阅读Spring Boot源码时,看到Spring Boot中大量使用ImportBeanDefinitionRegistrar来实现Bean的动态注入.它是Spring中一个强大的扩展接口.本篇文 ...
- For input string:"name"
今天写项目的时候遇到了For input string:"name"这个错误,在控制台看报错信息好像是在说类型格式转换错误, 可是我并没有转换格式,这个name是我在jsp页面中使 ...
- JPA配置实体时 insertable = false, updatable = false
当使用JPA配置实体时,如果有两个属性(一个是一般属性,一个是多对一的属性)映射到数据库的同一列,就会报错. 这时,在多对一的@JoinColumn注解中添加insertable = false, u ...
- 相关性不一定等于因果性:从 Yule-Simpson’s Paradox 讲起
1. 两件事伴随发生,不代表他们之间有因果关系 - 从一些荒诞相关性案例说起 在日常生活和数据分析中,我们可以得到大量相关性的结论,例如: 输入X变量,有98%置信度得到Y变量 只要努力,就能成功 只 ...
- Good Bye 2017 A B C
Good Bye 2017 A New Year and Counting Cards 题目链接: http://codeforces.com/contest/908/problem/A 思路: 如果 ...
- 转战C#_001
---------------尽量用最少的语言描述 C# 世界里的所有事物------------------- 1. C#(pronounced "C-sharp") is an ...
- 关于Python的随机数模块,你必须要掌握!
所谓七夕 前几天的文章这个七夕节,用Python为女友绘制一张爱心照片墙吧!收获了最近以来最高的浏览量,没枉费我熬到夜里3点赶出来的热点文章.有付出就总会有所回报,只是看这天来的早晚而已.七夕一个人看 ...
- JavaScript的内存模型
引言 在我们的前端日常工作中,无时无刻不在进行着变量的声明和赋值,你是否也曾碰到过变量声明报错或变量被污染的问题,如果你跟笔者一样碰到过,那么我们应该暂时停下来好好思考问题发生的原因以及如何采取相应的 ...