图像分割综述

图像分割综述


前言

图像分割(segmentation)指的是将数字图像划分成多个图像子区域的过程。

在实际场景中具有诸多重要应用


在这里插入图片描述
在广义的图像分割中,传统方法和深度方法对于分割有不同的定义。

传统方法:对于图像进行区域划分,核心问题在于:区域间差异性、区域内相似性。本质上属于一个聚类问题

深度方法:对于图像进行像素级分类,核心问题在于:逐像素分类,本质上是一个分类问题

实际上,在深度方法中,对于语义分割又有更加细分的问题定义

语义分割:将前景与后景区分开来

实例分割:将不同的物体分类分割
所以图像分割也可以深入的细分为语义分割和实例分割

一、图像分割的传统方法

在传统方法时代,主要是基于初等图像特征对图像的像素进行划分,本质上,是对一簇像素进行合并的过程。

主要的思路包括:

阈值法根据不同的像素值等级,划分出不同的方法。代表性方法为直方图法

边缘法根据梯度进行区域划分。

区域法以像素为起点,不断合并周围像素成为更大的区域。代表性方法: 区域生长,分水岭算法

轮廓法设定一个初始轮廓,定义函数值对其进行优化逼近物体的真实轮廓。

图论法将区域视为一个整体,不断进行切割。直到切割不动了(满足阈值)。

区域法
区域生长算法

  1. 选择一个像素作为中心点;
  2. 从种子向外扩张,将满足条件的点逐渐地加入种子集合中;
  3. 执行第二步,直到没有新的点加入集合。
    分水岭算法
    在这里插入图片描述
    等整个潮水退去之后看到我们划分的区域
    缺点:有碎点颗粒,如分割草坪时的效果较差
    在这里插入图片描述
    图论法
from skimage import data, segmentation, color
from skimage import graph
from matplotlib import pyplot as plt


img = data.coffee()

plt.imshow(img)

labels1 = segmentation.slic(img, compactness=30, n_segments=400,
                            start_label=1)
out1 = color.label2rgb(labels1, img, kind='avg', bg_label=0)

g = graph.rag_mean_color(img, labels1, mode='similarity')
labels2 = graph.cut_normalized(labels1, g)
out2 = color.label2rgb(labels2, img, kind='avg', bg_label=0)

fig, ax = plt.subplots(nrows=2, sharex=True, sharey=True, figsize=(6, 8))

ax[0].imshow(out1)
ax[1].imshow(out2)

for a in ax:
    a.axis('off')

plt.tight_layout()

在像素图中,每个点和其他点的连线便是一个节点,将图去切分边,来做图像分割。如果不懂图论,可先学习数据结构图整章。
原图:
在这里插入图片描述
分割
在这里插入图片描述
在这里插入图片描述
原理

对于一张图像 I ∈ R M × N I \in \mathcal{R}^{M \times N} IRM×N,对任意两个像素点,都可以衡量其距离 d i j = w ( i , j ) d_{i j}=w(i, j) dij=w(i,j)

把图像定义成一个图结构,其中,每个节点都是一个像素,像素和像素之间的连线为边。

那么将图像进行分割的问题,就变成了如何将图进行拆分

在这里插入图片描述

常规的做法就是,找到一个分割,令下列函数最小
在这里插入图片描述

然而,这种方式会使得较为边缘的区域被单独分割出来。(数据分布不均衡)

分割:让A图和B图尽可能的不相似,
缺点:把类比较散的同一类可能分割为多类
在这里插入图片描述
进行了改进,目前normalized cut算法改进了优化函数,提出了一种归一化距离的方式。

定义总体的距离损失为

做一个归一化从而得到一个好的结果
在这里插入图片描述

二、深度学习

语义分割

数据集
coco数据集:20万张标注数据,150万个对象实例,171个类别
官网地址:coco
在这里插入图片描述
每个图都可当一个数据集。
human parsing dataset: 25403张图像,包含背景共59个类别
传送门:官网
在这里插入图片描述
可将人的图像解析出来。
如今可作为 智慧工地项目的数据基础,交通监控(KITT数据集也常用)
cityscapes: 30类,5000张细致标注数据,20000张精细标注数据
官网:https://www.cityscapes-dataset.com/
在这里插入图片描述

Cityscapes数据集的特点
像素级标注;
提供算法评估接口。

评价指标

  1. 执行时间
  2. 占用内容
  3. 准确度(ACC)
    对于一张图像,得到一个mask,其中任意的像素点来说:
  • 预测结果为i,真实结果为j,记为 p i j p_{ij} pij
    那么正确分类的像素点的比例为:
    P A = ∑ p i i ∑ p i j P A=\frac{\sum p_{i i}}{\sum p_{i j}} PA=pijpii
    MAP: 计算每一类中的正确分类的像素点的比例,然后求平均:
    m A P = 1 k ∑ i = 1 k p i i p i j m A P=\frac{1}{k} \sum_{i=1}^{k} \frac{p_{i i}}{p_{i j}} mAP=k1i=1kpijpii
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
深度学习无监督图像分割是近年来图像分割领域的研究热点之一。与有监督学习方法相比,无监督学习方法不需要标注的数据,因此在实际应用中更加灵活和高效。下面是一些深度学习无监督图像分割综述: 1. “Deep learning for unsupervised image segmentation” (CVPR 2017) 这篇论文提出了一个基于深度学习的无监督图像分割方法。该方法基于自编码器框架,利用重构误差和图像的局部统计信息来进行分割。实验结果表明,该方法在多个数据集上取得了优秀的性能。 2. “Unsupervised deep learning for optical flow estimation and image segmentation”(CVPR 2018) 该论文提出了一种基于深度学习的无监督图像分割方法。该方法结合了光流估计和图像分割任务,利用无监督学习方法学习光流估计和图像分割网络。实验证明,该方法在多个数据集上取得了优秀的性能。 3. “Unsupervised deep image segmentation with clustered discriminative non-negative matrix factorization”(ICCV 2019) 该论文提出了一种基于聚类分析和判别因子非负矩阵分解的无监督图像分割方法。该方法通过学习图像的非负表示来进行分割,同时采用聚类分析来提高分割的准确性。实验证明,该方法在多个数据集上取得了优秀的性能。 4. “Unsupervised deep learning for image segmentation using convolutional autoencoders”(IEEE Access 2020) 该论文提出了一种基于卷积自编码器的无监督图像分割方法。该方法利用卷积自编码器来学习图像的表示,并采用聚类分析来进行分割。实验证明,该方法在多个数据集上取得了优秀的性能。 总的来说,深度学习无监督图像分割是一个重要的研究方向,未来还有很大的发展空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

入门两年的练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值