语义分割是为图像中的像素分配标记的过程。
这与分类形成了鲜明的对比,在分类中,一个标签被分配给整个图片。语义分割将同一类的多个对象视为一个实体。另一方面,实例分割将同一类的多个对象视为不同的单个对象(或实例)。通常,实例分割比语义分割更难。语义分割和实例分割之间的比较
本文将探讨一些使用经典和基于深度学习的方法来执行语义分割的方法。此外,还将讨论常用的损失函数的选择和应用。
经典方法
在深度学习时代到来之前,大量的图像处理技术被用来将图像分割成感兴趣的区域。下面列出了一些常用的方法。
灰度分割
最简单的语义分段形式涉及分配区域必须满足的硬编码规则或属性,以便为其分配特定标签。规则可以根据像素的属性(例如灰度级强度)来构建。使用此技术的一种方法是拆分(Split)和合并(Merge)算法。该算法递归地将图像分割成子区域,直到可以分配标签,然后通过合并它们将相邻的子区域与相同的标签组合。
这种方法的问题是规则必须硬编码。此外,仅用灰色级别的信息来表示复杂的类(如人)是极其困难的。因此,需要特征提取和优化技术来正确地学习这些复杂类所需的表示。
条件随机场
考虑通过训练模型为每个像素分配类来分割图像。如果我们的模型不完美,我们可能会得到自然界不可能得到的噪声分割结果(如图中所示,狗像素与猫像素混合)。
将带标签dog的像素与带标签cat的像素混合(图c),更真实的分割结果如图d所示
可以通过考虑像素之间的先验关系来避免这些问题,例如,对象是连续的,因此附近的像素往往具有相同的标签。为了模拟这些关系,我们使用条件随机场(CRF)。
CRF是一种用于结构化预测的统计建模方法。与离散分类器不同,CRF可以在进行预测之前考虑“相邻上下文”,比如像素之间的关系。这使得它成为语义分割的理想候选。本节探讨CRF在语义分割中的应用。
图像中的每个像素都与一组有限的可能状态相关联。在我们的示例中,目标标签是可能的状态集。将一个状态(或标签,u)分配给单个像素(x)的成本称为它的一元成本(unary cost)。为了对像素之间的关系建模,我们还考虑了将一对标签(u,v)分配给一对像素(x,y)的成本,即成对成本(pairwise cost)。我们可以考虑它的近邻像素对(Grid CRF)或者我们可以考虑图像中的所有像素对(Dense CRF)
Dense vs Grid CRF
所有像素的一元和成对成本之和被称为CRF的energy (或成本/损失)。可以最小化该值以获得良好的分割输出。
深度学习方法
深度学习极大地简化了执行语义分割的管道,并产生了令人印象深刻的质量结果。在本节中,我们将讨论用于训练这些深度学习方法的流行模型体系结构和损失函数。
1.模型架构
全卷积网络(FCN)是用于语义分割的最简单、最流行的架构之一。在论文FCN for Semantic Segmentation中,作者使用FCN首先通过一系列卷积将输入图像下采样到更小的尺寸(同时获得更多通道)。这组卷积通常称为编码器。然后通过双线性插值或一系列转置卷积对编码输出进行上采样。这组转置卷积通常称为解码器。
FCN中的下采样和上采样
这种基本架构虽然有效,但也有一些缺点。其中一个缺点是由于转置卷积(或反卷积)操作的输出不均匀重叠而出现棋盘伪影(Checkerboard Artifacts)。
棋盘伪影的形成
另一个缺点是由于编码过程中的信息丢失而在边界处的分辨率较差。
有几种解决方法可以提高基本FCN模型的性能。下面是一些很受欢迎的解决方法
- U-Net
U-Net是对简单FCN架构的升级。它具有从卷积块的输出到同一层转置卷积块的相应输入的skip connections。
U-Net
这种skip connections 允许梯度更好地传递,并提供来自图像大小的多个尺度的信息。来自更大范围(上层)的信息可以帮助模型更好地分类。来自更小范围(更深层次)的信息可以帮助模型更好地分段/定位。
- Tiramisu模型
Tiramisu模型类似U-Net,不同之处是它使用Dense块进行卷积和转置卷积,就像DenseNet论文中所做的那样。Dense块由若干层卷积组成,在这些卷积层中,前面所有层的特征映射都用作后面所有层的输入。由此产生的网络具有极高的参数效率,可以更好地访问较早层的特征。
Tiramisu Network
这种方法的缺点是,由于多个机器学习(ML)框架中的连接操作的性质,它的内存效率不是很高(需要运行大型GPU)。
- MultiScale方法
一些深度学习模型显式地引入了合并来自多个尺度的信息的方法。例如,金字塔场景解析网络(PSPNet)使用四种不同的核大小执行池化操作(max或average),并跨越CNN的输出特征映射,例如ResNet。然后,使用双线性插值来对所有池输出和CNN输出特征映射的大小进行采样,并将所有这些输出特征映射沿着通道轴连接。在该级联输出上执行最终卷积以生成预测。
PSPNet
Atrous(Dilated)卷积提供了一种有效的方法来组合多个尺度的特征而不会大量增加参数的数量。通过调节dilation rate,相同的filter使其权重值在空间中spread得更远。这使它能够学习更多全局背景。
级联的Atrous Convolutions
DeepLabv3论文使用不同扩张率的Atrous卷积从多个尺度捕获信息,图像大小没有显著损失。他们尝试以级联方式(如上所示)使用Atrous卷积,并以Atrous Spatial Pyramid Pooling的形式(如下所示)以并行方式使用Atrous卷积。
Parallel Atrous Convolutions
- 混合CNN-CRF方法
一些方法使用CNN作为特征提取器,然后使用这些特征作为Dense CRF的一元成本(潜在)输入。由于CRF能够模拟像素间关系,因此这种混合CNN-CRF方法提供了良好的结果。
使用CNN和CRF组合的方法
某些方法将CRF纳入神经网络本身,如CRF-as- rnn,其中Dense CRF被建模为循环神经网络。这支持端到端训练,如上图所示。
2.损失函数
与普通分类器不同,必须为语义分段选择不同的损失函数。以下是一些用于语义分割的常用损失函数:
- Pixel-wise Softmax with Cross Entropy
用于语义分割的标签大小与原始图像相同。标签可采用one-hot编码形式表示,如下图所示:
用于语义分段的One-Hot 格式
由于标签是一种方便的One-Hot 形式,因此可以直接作为计算交叉熵的ground truth (target)。然而,在应用交叉熵之前,必须在预测输出上逐像素地应用softmax,因为每个像素可以属于我们的任何目标类。
- Focal Loss
在RetinaNet的论文中引入的Focal Loss,建议在严重类不平衡的情况下,升级到标准交叉熵损失。
考虑如下图所示的标准交叉熵损失方程(蓝色)。即使在我们的模型对像素类(比如80%)非常有信心的情况下,它也有一个有形的损失值(在这里,大约为0.3)。另一方面,当模型对一个类有信心(即80%的置信度损失接近0)时,Focal Loss(紫色,gamma=2)对模型的惩罚并不大。
标准交叉熵(蓝色)与Focal Loss有不同的伽玛值
让我们通过一个直观的例子来探讨为什么这是重要的。假设我们有一个10000像素的图像,只有两个类:背景类(单热形式为0)和目标类(单热形式为1)。让我们假设97%的图像是背景,3%的图像是目标。现在,假设我们的模型80%确定背景像素,但只有30%确定目标类像素。
在使用交叉熵的同时,由于背景像素引起的损失(97% of 10000) * 0.3等于等于2850 并且由于目标像素引起的损失等于(3% of 10000) * 1.2等于360。显然,由于更自信的阶级所造成的损失占主导地位,并且模型学习目标阶层的动机很小。相比之下,由于焦点损失,背景像素引起的损失等于(97% of 10000) * 00.这使得模型能够更好地学习目标类。
- Dice Loss
Dice Loss是另一种流行的损失函数,用于具有极端类不平衡的语义分割问题。在V-Net论文中引入Dice Loss用于计算预测类和ground truth类之间的重叠。Dice 系数(D)表示如下:
Dice 系数
我们的目标是最大化预测类和ground truth类之间的重叠(即最大化Dice 系数)。因此,我们通常最小化(1-D) 以获得相同的目标,因为大多数机器学习(ML)库仅提供最小化的选项。
Dice 系数的导数
尽管Dice Loss对于具有类不平衡的样本效果很好,但计算其导数的公式(如上所示)在分母中具有平方项。当这些值很小时,我们可能会得到很大的梯度,导致训练不稳定。
应用
语义分段用于各种现实生活中。以下是语义分段的一些重要用例。
自动驾驶
语义分割用于识别车道,车辆,人和其他感兴趣的对象。所得结果可用于智能决策,以正确引导车辆。
自动驾驶汽车的语义分割
自动驾驶汽车的一个限制是性能必须是实时的。解决上述问题的一个方法是将GPU与车辆本地集成。为了提高上述解决方案的性能,可以使用较轻(低参数)的神经网络,也可以实现边缘拟合神经网络的技术。
医学图像分割
语义分割用于识别医学扫描中的显著元素。这对鉴别肿瘤这种异常特别有用。算法的准确性和较低的召回率对这些应用具有重要意义。
医学扫描的分割
我们还可以自动化一些不太重要的操作,比如从三维语义分割扫描中估计器官的体积。
场景理解
语义分割通常是场景理解和视觉问答(VQA)等复杂任务的基础。场景图或标题通常是场景理解算法的输出
场景理解
时尚产业
在服装行业中,语义分割用于从图像中提取服装项目,从而从零售商店中提供类似的建议。更高级的算法可以在图像中"重新设计"特定的衣物。
卫星(或航空)图像处理
语义分割用于从卫星图像中识别陆地类型。典型的使用案例涉及分割水体以提供准确的地图信息。其他高级用例包括绘制道路,识别作物类型,识别免费停车位等。
卫星/航空图像的语义分割
结论
深度学习极大地增强和简化了语义分割算法,为现实应用中的更广泛采用铺平了道路。由于研究界一直在努力提高这些算法的准确性和实时性,本文中列出的概念并不详尽。然而,本文介绍了这些算法的一些流行变体及其实际应用。
1.《多个扫描件怎么拆分?总结很全面速看!语义分割的简单指南》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《多个扫描件怎么拆分?总结很全面速看!语义分割的简单指南》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3008635.html