【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技术指南文章汇总
前言 本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...
随机推荐
- Feature Fusion for Online Mutual Knowledge Distillation (CVPR 2019)
一.解决问题 如何将特征融合与知识蒸馏结合起来,提高模型性能 二.创新点 支持多子网络分支的在线互学习 子网络可以是相同结构也可以是不同结构 应用特征拼接.depthwise+pointwise,将特 ...
- 12、pytest -- 缓存:记录执行的状态
目录 1. cacheprovider插件 1.1. --lf, --last-failed:只执行上一轮失败的用例 1.2. --ff, --failed-first:先执行上一轮失败的用例,再执行 ...
- All-in-one 的Serving分析
export_func.export(model, sess, signature_name=mission, version=fold + 1) def export(model, sess, si ...
- Socket 实现简单的多线程服务器程序
**********服务器端************* public class ServerSocket{ public static void main(String[] args) throws ...
- 在centos7上进行hadoop-3.1.2的伪分布搭建
第一步:配置网络(静态IP) vi /etc/sysconfig/network-scripts/ifcfg-ens33(网卡名称可能不同) 1. 修改: 将该配置文件中的ONBOOT=no修改为ye ...
- SpringCloud Alibaba微服务实战一 - 基础环境准备
Springcloud Aibaba现在这么火,我一直想写个基于Springcloud Alibaba一步一步构建微服务架构的系列博客,终于下定决心从今天开始本系列文章的第一篇 - 基础环境准备. 该 ...
- 关于JMeter原子性相关探究
1.背景 最近宝路遇到个项目,在使用JMeter过程中引发了一些思考,宝路尝试用各种方式去验证,进而有了今天"JMeter原子性"相关主题. 2.目的 探究JMeter的事务的原子 ...
- PHP后端代码生成微信小程序带参数的二维码保存成jpg图片上传到服务器getwxacodeunlimit
老板最近有点飘了,他要在PC端的网站放一个微信小程序的二维码,并且扫描这个二维码以后要跳到小程序对应的房源详情页. 这是微信官方给出的文档,连接地址:https://developers.weixin ...
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(4)- OTP及其烧写方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子 ...
- bs4-爬取小说
bs4 bs4有两种运行方式一种是处理本地资源,一种是处理网络资源 本地 from bs4 import BeautifulSoup if __name__ == '__main__': fr = o ...