图像语义分割

Posted Vinicier

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像语义分割相关的知识,希望对你有一定的参考价值。

图像语义分割

图像语义分割 (Image semantic segmentation)

1. N-cut 方法

N-cut(Normalized cut): 早期一种图划分方法,它的思想主要是通过像素和像素之间的关系权重来综合考虑,根据给出的阈值,将图像一分为二

将像素信息简单描述为距离差,根据距离差来划分图像示例如下图:

在实际运用中,每运行一次 N-cut,只能切割一次图片,为了分割出图像上的多个物体,需要多次运行,下图示例了对原图 a 进行 7 <script type="math/tex" id="MathJax-Element-3">7</script> 次 N-cut 后,每次分割出的结果:

缺点:可以很明显的看到这种简单粗暴的分割方式并不准确,趴在地上的运动员肢体在 b 图中分割出来,而他的手臂则在 h 图中被分割,显然是错误的。

这种优化方式为了避免机器不能很好的分割类似上面例子中 “衣服和肢体颜色反查太大导致分割错误” 的情况,增加了人机交互在分割过程中,需要人工干预参与完成

2. Grab-cut 方法

Grab-cut 方法是:给定一张图片,然后人工在想要抠图(也就是我们说的分割)的区域画一个红框,然后机器会对略小于这个框的内容进行 “主体计算”,嗯,这个 “主体计算” 是我起的名字,为了你们更好的理解背后复杂的设计和公式,因为机器会默认红框中部是用户期望得到的结果,所以将中部作为主体参考,然后剔除和主体差异较大的部分,留下结果。

但是对于复杂一点图片问题就来了,如下图中帽子与背景山的颜色相近,难以区分,加入人工标注后再次运算才得到较好的结果。

总结:Grab-cut 是对N-cut 添加人工交互标注的改进算法,但是缺点也比较明显,首先它是一个二分类,每次运算只能分割一类,多个目标图像就要多次运算;其次,它需要人工干预,这个弱点在批量化处理和智能时代简直是死穴。

3. Deep learning 方法

FCN (2015,CVPR):全卷积网络。

FCN 与CNN 不同的是:CNN 的输入是图像,输出是一个结果值,或者是属于某个类别的概率值,而FCN 的输入是一张图片,输出也是一张图片,学习像素到像素的映射

下图是FCN 与CNN 网络的比较:

CNN 的识别是图像级的识别,也就是从图像到结果,而 FCN 的识别是像素级的识别,对输入图像的每一个像素在输出上都有对应的判断标注,标明这个像素最可能是属于一个什么物体 / 类别。

全卷积体现在:

  • CNN 网络中的后三层,都是一维的向量,计算方式不再采用卷积,所以丢失了二维信息,而 FCN 网络中,将这三层全部转化为 1*1 的卷积核所对应等同向量长度的多通道卷积层,使后三层也全部采用卷积计算,整个模型中,全部都是卷积层,没有向量,所以称为 “全卷积”。
  • FCN 将第 6 层和 7 层分别从 4096 长度的向量转化为 4096 通道的卷积层,第 8 层则是 21 通道的卷积层。之所以第 8 层从 1000 缩减到 21,是因为 FCN 使用的识别库是 PASCAL VOC,在 PASCAL VOC 中有 20 种物体分类,另外一个 background 分类。

FCN 是像素级别的识别,结果是原图大小,所以这里需要采用”反卷积(Deconvolution)“ 或者 “上采样“ 进行图像还原。

在技术上,我们可以对任一层卷积层做反卷积处理,得到最后的图像,比如用第三层 (8s-8 倍放大),第四层 (16s-16 倍放大),第五层 (32s-32 倍放大) 得到的分割结果。

各层还原后的对比图,如下:

以上是关于图像语义分割的主要内容,如果未能解决你的问题,请参考以下文章

语义分割(研究现状技术基础)

2021-10-15 COCO数据集

语义分割(研究现状技术基础)

DeepLabv3+图像语义分割实战:训练自己的数据集

Lecture 11 检测与分割

图像分割:Semantic/Instance/Panoramic Segmentation