语义分割是将标签分配给图像中的像素。

一、图像分类与语义分割不同点?

池化层可以增加感受野,同时减少特征图的分辨率。这对于分类来说十分有效,其对象的空间位置无关重要,并能提取出更多抽象、突出的特征。然而,池化和带步长的卷积对语义分割是不利的,因为降低特征图分辨率意味着空间信息的丢失,如精确的边缘形状。因此语义分割提出的几种典型的网络都致力于恢复编码器中因降低分辨率而丢失的信息。

二、语义分割方法

经典方法包括灰度分割、条件随机场CRF等。

近几年提出的深度学习语义分割架构大致分为两种:

1)一般是encoder-decoder网络。编码器通常是一个预训练的分类网络,如VGG16、ResNet。主要区别在于解码器,其任务是将编码器学习到的可判别特征(较低分辨率)从语义上投影到像素空间(具有较高分辨率),以获得密集分类。

1、FCN Fully Convolution Network

小结-语义分割

将分类网络VGG的全连接层转换成全卷积层(将全连接操作更换为卷积操作可以同时保留位置信息及语义信息,达到给每个像素分类的目的),它生成了一个低分辨率的类的heatmap,而不是类别。

然后需要上采样至输入图像分辨率大小,使用经双线性插值初始化的反卷积。

由于直接将全卷积结果进行反卷积得到结果比较粗糙,文中通过跳跃结构实现精细分割,将不同池化层(conv3、conv4)的结果进行上采样,然后通过融合(简单的相加)这些结果来优化输出,分为FCN-32s,FCN-16s,FCN-8s三种。

FCN的优:可以接受任意大小的输入图像(没有全连接层),更加高效。

缺点:结果不够精细,没有考虑像素之间的关系,缺乏空间一致性。

2、SegNet

创新点:解码器对较低分辨率输入特征图进行上采样的方式。

解码器的每一层都对应着编码器中的一层(解码器也有13层)。解码器使用了在相应编码器的最大池化步骤中计算的池化索引来执行非线性上采样。这种方法消除了学习上采样的需要。但经上采样(反池化upsampling)后的特征图是稀疏的,因此随后使用可训练的卷积核进行卷积操作,生成密集的特征图。

小结-语义分割

缺点:这种在解码器中使用池化索引来对相应的特征图进行反池化操作的上采样方式。虽然这有助于保持高频信息的完整性,但当对低分辨率的特征图进行反池化时,它也会忽略邻近的信息。

3、U-Net

U-Net将编码器的特征图skip connections至每个阶段对应的解码器上采样特征图,从而形成一个U型结构。这可以在每个阶段都允许解码器学习在编码器池化中丢失的相关特征。

小结-语义分割

4、ENet

本文主要应用于实时像素级语义分割,之前提出的分割的神经网络,如SegNet、FCN都使用的VGG16,但这些网络需要大量的参数和很长的推断时间。

创新点:本文使用ResNets观点,设计了ENet bottleneck module。

创建了一个与之前不同的编码-解码结构,其体系结构不再是编码解码对称,而是由一个大编码器和一个小解码器组成,其动机为编码器应能够以与原始分类架构类似的方式工作,即对较小分辨率的数据进行操作并提供信息处理和过滤。而decoder主要是对encoder的输出做上采样,对细节做细微调整。

小结-语义分割小结-语义分割

2)使用简单的分类器,然后与作为后处理步骤的条件随机场CRF级联。

CNN-CRF方法:使用CNN作为特征提取器,然后使用这些特征作为Dense CRF的一元成本输入。由于条件随机场CRF能够模拟像素间关系,因此其作为后处理,能恢复边界细节,达到准确定位效果。这种混合CNN-CRF方法也提供了良好的结果。例如:DeepLab。

相关文章:

  • 2021-04-01
  • 2021-08-21
  • 2021-07-17
  • 2021-05-12
  • 2021-08-29
  • 2021-04-26
  • 2021-04-27
  • 2021-06-28
猜你喜欢
  • 2021-07-31
  • 2021-09-11
  • 2021-11-11
  • 2021-12-05
  • 2021-12-02
  • 2021-05-19
相关资源
相似解决方案