当前位置: 首页 > news >正文

超像素、语义分割、实例分割、全景分割 傻傻分不清?

在计算机视觉中,图像分割是个非常重要且基础的研究方向。简单来说,图像分割(image segmentation)就是根据某些规则把图片中的像素分成不同的部分(加不同的标签)。

图像分割中的一些常见的术语有:superpixels(超像素)、Semantic Segmentation(语义分割)、Instance Segmentation(实例分割)、Panoptic Segmentation(全景分割)。他们之间到底有什么区别呢?如果你对这几个术语非常了解了,那么恭喜你!可以直接把文章拖到结尾,顺手点个广告,就可以返回了(笑)。

不过很多刚接触这个领域的同学有点搞不太清楚上面的区别,那么跟我一起来学习一下吧!

 

superpixels(超像素)

第一次听说这个超像素很容易理解错误,以为是在普通的像素基础上继续像微观细分,如果这样理解就恰好理解反了,其实超像素是一系列像素的集合,这些像素具有类似的颜色、纹理等特征,距离也比较近。用超像素对一张图片进行分割的结果见下图,其中每个白色线条区域内的像素集合就是一个超像素。需要注意的是,超像素很可能把同一个物体的不同部分分成多个超像素。

超像素最早的定义来自2003年 Xiaofeng Ren等人的一篇论文《Learning a Classification Model for Segmentation》。

其中超像素中比较常用的一种方法是SLIC(simple linear iterative clustering),是Achanta 等人2010年提出的一种思想简单、实现方便的算法,将彩色图像转化为CIELAB颜色空间和XY坐标下的5维特征向量,然后对5维特征向量构造距离度量标准,对图像像素进行局部聚类的过程。SLIC算法能生成紧凑、近似均匀的超像素,在运算速度,物体轮廓保持、超像素形状方面具有较高的综合评价,比较符合人们期望的分割效果。

Semantic Segmentation(语义分割)

语义分割还是比较常见的,就是把图像中每个像素赋予一个类别标签(比如汽车、建筑、地面、天空等),比如下图就把图像分为了草地(浅绿)、人(红色)、树木(深绿)、天空(蓝色)等标签,用不同的颜色来表示。

不过这种分割方式存在一些问题,比如如果一个像素被标记为红色,那就代表这个像素所在的位置是一个人,但是如果有两个都是红色的像素,这种方式无法判断它们是属于同一个人还是不同的人。也就是说语义分割只能判断类别,无法区分个体。

但很多时候我们更需要个体信息,想要区分出个体怎么办呢?继续往下看吧

Instance Segmentation(实例分割)

实例分割方式有点类似于物体检测,不过物体检测一般输出的是 bounding box,实例分割输出的是一个mask。

实例分割和上面的语义分割也不同,它不需要对每个像素进行标记,它只需要找到感兴趣物体的边缘轮廓就行,比如下图中的人就是感兴趣的物体。该图的分割方法采用了一种称为Mask R-CNN的方法。我们可以看到每个人都是不同的颜色的轮廓,因此我们可以区分出单个个体。

Panoptic Segmentation(全景分割)

最后说说全景分割,它是语义分割和实例分割的结合。如下图所示,每个像素都被分为一类,如果一种类别里有多个实例,会用不同的颜色进行区分,我们可以知道哪个像素属于哪个类中的哪个实例。比如下图中黄色和红色都属于人这一个类别里,但是分别属于不同的实例(人),因此我们可以通过mask的颜色很容易分辨出不同的实例。

现在是不是对这几个术语了然于胸了呢!

 

欢迎关注公众号:计算机视觉life,一起探索计算机视觉新世界~

转载于:https://www.cnblogs.com/CV-life/p/10188920.html

相关文章:

  • webpack压缩图片之项目资源优化
  • 内存释放
  • 我的译作
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • 百度排名公式最新版
  • Day6:html和css
  • NAT技术及其应用
  • Verilog实现同步FIFO
  • 做个md5查询站(3)数据格式
  • C语言博客作业06--结构体文件
  • 事件类型
  • 英语数字读法
  • bootstrp的datetimepicker插件获取选定日期
  • 08年cpu
  • VMware网络适配器的选择
  • ➹使用webpack配置多页面应用(MPA)
  • 30天自制操作系统-2
  • Android交互
  • Apache Zeppelin在Apache Trafodion上的可视化
  • canvas 绘制双线技巧
  • Cookie 在前端中的实践
  • django开发-定时任务的使用
  • Java知识点总结(JavaIO-打印流)
  • Redux系列x:源码分析
  • Shadow DOM 内部构造及如何构建独立组件
  • vue.js框架原理浅析
  • 聊聊redis的数据结构的应用
  • 区块链将重新定义世界
  • 微信小程序填坑清单
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 小程序开发中的那些坑
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #单片机(TB6600驱动42步进电机)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (九)信息融合方式简介
  • (九十四)函数和二维数组
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转载)Linux网络编程入门
  • .NET 4.0中的泛型协变和反变
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net 调用php,php 调用.net com组件 --
  • .NET 读取 JSON格式的数据
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET中GET与SET的用法
  • .NET中使用Protobuffer 实现序列化和反序列化
  • [ C++ ] STL---string类的模拟实现
  • [ C++ ] STL---仿函数与priority_queue
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具