语义图像分割概览

摘要: 本文讨论如何利用卷积神经网络进行语义图像分割的任务。

语义图像分割,目标是将图像的每个像素标记为所表示的相关类别。由于我们要对图像中的每一个像素进行预测,因此,通常被称为密集预测(dense prediction)。

语义图像分割概览_第1张图片

重要的是,我们不能对同一类别的实例进行分割,而是只关心每个像素的类别。也就是说,如果在输入的图像中有两个相同类别的对象,则分割图不会自动地将它们区分为单独的对象。存在的不同类的模型,称为实例分割模型,它们区分互为同一类的单独对象。

分割模型对于各种任务都很有用,包括:

1.无人驾驶:无人驾驶汽车需具备必要的感知,了解周围环境。

语义图像分割概览_第2张图片

用于自动驾驶的实时分段道路场景。

2.医学图像诊断学

增强放射科专家的分析,并大大减少进行诊断测试所需的时间。

语义图像分割概览_第3张图片

心脏(红色)、肺(绿)和锁骨(蓝色)被分割的胸部X光检查

提出任务

我们的目标是采用RGB彩色图像(高3)或灰度图像(高1),并输出分割图,其中每个像素包含一个表示为整数的类标签(高1)。

注意:为了视觉清晰,我已经标记了一个低分辨率的预测图。在实际中,分割标签分辨率应该与原始输入的分辨率相匹配。

类似于如何处理标准分类值,将通过一个热编码类标签来创建目标——基本上为每个可能的类创建一个输出通道。

语义图像分割概览_第4张图片

通过获取每个深度像素向量的argmax值,可以将一个预测图分解成分割图(如在第一图像中所示)。

将目标叠加在观察目标上。

语义图像分割概览_第5张图片

当覆盖目标(或预测)的单个通道时,我们将其称为掩模(mask),该掩模说明了存在特定类别的图像的区域。

设计一个体系结构

用于设计该任务的神经网络体系结构的一种幼稚的方法是简单地堆叠多个卷积层(具有相同的填充以保持维度),并输出最终分割图。这直接学习了一个通过特征映射的连续变换从输入图像到其对应的分割的映射;然而,在整个网络中保持这种全分辨率的代价是相当大的。

语义图像分割概览_第6张图片

深度卷积网络较早的层倾向于学习低级的概念,而随后的层开发更高级的(和专门的)特征映射。为了保持性能,通常需要增加特征映射(通道)的数量,因为我们在网络中要更深入。

对于图像分类任务,我们只关心图像所包含的内容(而不是它在哪)。因此,我们用汇聚或跨越卷积(即压缩空间分辨率)的方式通过周期性地对特征图进行采样来减轻计算负担。但是,对于图像分割,我们更愿意模型产生一个全分辨率的语义预测。

图像分割模型的一种流行的方法是遵循编码/解码器结构,在这里我们对输入的空间分辨率进行下采样,开发低分辨率的特征映射,这些特征映射被认为在类之间是非常高效的,并且对特征进行上采样,表示成全分辨率的分割图。

语义图像分割概览_第7张图片

采样方法

我们可以用几种不同的方法来进行下采样特征图的分辨率。然而池化操作通过汇总具有单个值的局部区域(例如,平均或最大池)进行下采样,通过将单个值分配到更高分辨率来对分辨率进行共用操作采样。

语义图像分割概览_第8张图片

变换卷积是迄今为止最流行的方法,因为它们允许我们开发一个能被学习的上采样。

语义图像分割概览_第9张图片

而典型的卷积操作将取滤波器视图中的当前值的数量积,并为相应的输出位置产生单个值,变换卷积基本上是相反的。对于变换卷积,我们从低分辨率特征图中取一个值,并用这个值与滤波器中的所有权重相乘,将这些加权值展现到输出特征图中。

语义图像分割概览_第10张图片

通过变换操作的上采样简化1D示例。

对于在输出特征图中产生重叠的滤波器大小(如下述示例中所示的具有2个步幅的3*3滤波器),重叠值被简单地加在一起。不幸的是,这往往会在输出中产生一个棋盘状,这是不可取的,因此最好确保滤波器的大小不会产生重叠。

语义图像分割概览_第11张图片

蓝色为输入,绿色为输出

完全卷积网络

在2014的年末Long等人提出了一种使用“完全卷积”网络训练的端到端、像素到像素的图像分割任务的方法。本文作者提出了将现有的、训练良好的图像分类网络(如AlexNet)作为网络的编码器模块,附加了一个具有变换卷积层的解码器模块,并上采用粗特征图升到一个全分辨率的分割图中。

语义图像分割概览_第12张图片

如下图所示,完整的网络是根据像素交叉熵损失量来训练的。

语义图像分割概览_第13张图片

然而,由于编码器模块将输入的分辨率降低了32倍,因而解码器模块努力产生了细粒度分割(如下所示)

语义图像分割概览_第14张图片

该论文写到:

语义分割面临语义和位置之间的内在矛盾:全局信息决定了局部信息所决定的和在何处解决的问题。结合精细层和粗糙层,使模型在遵从全局结构的条件下作出局部预测。

添加跳转连接

作者通过上采样(阶段性)编码表示来解决这一问题,从早期的层添加“跳转连接”,并总结这两个特征图。

语义图像分割概览_第15张图片

这些从网络中的早期层(在下采样操作之前)的跳转连接应该提供必要的细节,以便重构用于分割边界的精确形状。事实上,我们可以通过添加这些跳转连接来恢复更多细粒度的细节。

语义图像分割概览_第16张图片

Ronneberger等人通过网络上的解码器模块(U-NET结构)的性能,提高完全卷积结构,包括一个捕获上下文的收缩路径和一个对称的扩展路径,能够精确定位。这种更简单的结构已经变得非常流行,并且已经适应了各种分割问题。

语义图像分割概览_第17张图片

注意:由于使用有效填充,原来的结构提出了降低分辨率。然而,一些专业人士选择使用相同的填充,其中填充值是通过在边界处的图像反射获得的。

而Long等人(FCN论文)公布了数据增大(随机镜像和通过将图像转换到最高32像素而来回波动)没有导致明显的性能改善;Ronneberger等人(U-NET论文)相信数据扩大(训练样本的伸缩弹性变形)作为学习的关键概念。

高级 U-Net变形

标准的U-NET模型由在体系结构中的每个“块”的一系列卷积操作组成。正如我在文章中讨论的通用卷积网络结构,存在一些更先进的“块”,可以取代堆叠卷积层。

德罗兹扎尔等人提出了基本堆叠卷积块,以取代残差块。该残余块在标准U-NETE结构中发现的现有的长跳转连接(在编码器和解码器模块的对应特征图之间)旁引入了短跳转连接(块内)。他们公布了训练时短跳转连接允许更快的汇聚,并允许更深层次的模型训练。

基于这些,Jegou等人建议使用密集快,还是遵循U-Net结构,坚决主张“DenseNets的特性使得它们非常适合于语义分割,因为它们自然地引起跳转连接和多尺度监督。”这些密集块是有用的,因为它们从最近层直接与更高层的特征一起带来低层特征,并允许高效特征的重用。

语义图像分割概览_第18张图片

这种体系结构的一个非常重要的方面是,上采样路径在密集块的输入和输出之间没有跳转连接。作者们指出,由于“上采样路径提高了特征图空间的分辨率,所以特征数量的线性增长会对内存要求太高”,因此,只有密集块的输出在解码器模块中传递。

语义图像分割概览_第19张图片

====

FC-DeNeNET103模型在CamVid数据集上取得了最好的结果(OCT 2017)

扩张/暗色卷积

下采样特征图的一个好处是,在给定的滤波器尺寸不变的情况下,它为下面的滤波器扩大了接收域(相对于输入)。回想一下,由于大滤波器参数的低效,这种方法比增加滤波器尺寸更令人满意。然而,这种更广泛的背景是以降低空间分辨率为代价的。

扩张卷积提供了另一种方法来获得广阔的视野,同时保持完整的空间维度。如下图所示,用于扩张卷积的值根据某些特定的扩张率呗间隔开了。

语义图像分割概览_第20张图片

一些架构交换了最后的几个汇聚层,以持续不断地增大扩张率来保持相同的域,同时防止空间细节的损失。然而,它通常还是以太大代价的计算用扩张卷积来完全取代汇聚层。

加权损失方案

Long等人(FCN论文)讨论给每个输出信道的损失加权,以抵消在数据集中存在的类失衡。

在此期间,Ronneberger等人(U-Net论文)讨论一个给每个像素损失加权的方案,在分割对象的边界,每个像素都有一个更高的权值。这种损失加权方案以不连续的方式帮助了其在生物医学图像中的U-NET模型的片段细胞,这使得单个细胞体可以容易地在分割图中被识别出来。

语义图像分割概览_第21张图片

注意分割图是如何在这些细胞周围产生清晰的边界的。

通用数据集

以下为一些常用的数据集,用于训练新的模型和基准。你还可以探索以前的Kaggle竞赛,并了解获胜解决方案如何为给定任务实现分割模型。

文章原标题《An overview of semantic image segmentation》,译者:Mags,审校:袁虎。

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

你可能感兴趣的:(人工智能)