语义分割简介

原文地址:https://meetshah1995.github.io/semantic-segmentation/deep-learning/pytorch/visdom/2017/06/01/semantic-segmentation-over-the-years.html

介绍

图像的语义分割是将输入图像中的每个像素分配一个语义类别,以得到像素化的密集分类。虽然自 2007 年以来,语义分割/场景解析一直是计算机视觉社区的一部分,但与计算机视觉中的其他领域很相似,自 2014 年Long等人首次使用全卷积神经网络对自然图像进行端到端分割,语义分割才产生了大的突破。


FCN-8s 架构在 Pascal VOC 2012 数据集上的性能相对以前的方法提升了20%,达到了62.2%的mIOU。这种架构是语义分割的基础,此后一些较新的和更好的体系结构都基于此架构。

全卷积网络(FCNs)可以用于自然图像的语义分割、多模态医学图像分析和多光谱卫星图像分割。与 AlexNet、VGG、ResNet 等深度分类网络类似,FCNs 也有大量进行语义分割的深层架构。

我总结了 FCN、SegNet、U-Net、FC-Densenet E-Net 和 Link-Net、RefineNet、PSPNet、Mask-RCNN 以及一些半监督方法,例如 DecoupledNet 和 GAN-SS,并为其中的一些网络提供了PyTorch实现。在文章的最后一部分,我总结了一些流行的数据集,并展示了一些网络训练的结果。

网络架构

一般的语义分割架构可以被认为是一个编码器-解码器网络。编码器通常是一个预训练的分类网络,像 VGG、ResNet,然后是一个解码器网络。这些架构不同的地方主要在于解码器网络。解码器的任务是将编码器学习到的可判别特征(较低分辨率)从语义上投影到像素空间(较高分辨率),以获得密集分类。

不同于分类任务中深度网络的最终结果(即类存在的概率)是唯一重要的事,语义分割不仅需要在像素级有判别能力,还需要有能将编码器在不同阶段学到的可判别特征投影到像素空间的机制。不同的架构采用不同的机制(跳远连接、金字塔池化等)作为解码机制的一部分。

一些上述架构和加载数据的代码可在以下链接获得:

  • Pytorchmeetshah1995/pytorch-semseg

这篇论文 对语义分割(包括 Recurrent Style Networks)作了一个更正式的总结。

Fully Convolution Networks (FCNs) 全卷积网络

语义分割是计算机视觉中的基础任务,我们通常会使用基于 CNN 加 CRF 的方法或直接使用对抗性的训练实现端到端的分割。本文简要介绍了这两种方法及它们的特点。

 

人类是如何描述场景的?我们可能会说「窗户下有一张桌子」,或者「沙发右边有一盏灯」。图像理解的关键在于将一个整体场景分解成几个单独的实体,这也有助于我们推理目标的不同行为。

当然,目标检测方法可以帮助我们绘制某些确定实体的边框,但人类对场景的理解能以像素级的精细程度对每一个实体进行检测并标记精确的边界。我们已经开始发展自动驾驶汽车和智能机器人,这些都需要深入理解周围环境,因此精确分割实体变得越来越重要。

什么是语义分割?

语义分割是计算机视觉中的基本任务,在语义分割中我们需要将视觉输入分为不同的语义可解释类别,「语义的可解释性」即分类类别在真实世界中是有意义的。例如,我们可能需要区分图像中属于汽车的所有像素,并把这些像素涂成蓝色。

来源:Zhao 等人的 ICNet(2017):语义分割的演示视频。

虽然像聚类这样的无监督方法可以用于分割,但其结果不一定是有语义的。这些方法无法对它们训练的类进行细分,但是在搜索区域界限方面更加擅长。

与图像分类或目标检测相比,语义分割使我们对图像有更加细致的了解。这种了解在诸如自动驾驶、机器人以及图像搜索引擎等许多领域都是非常重要的。因此,本文讨论的主题是使用深度学习方法进行有监督的语义分割。

数据集和指标

目前有一些常用于训练语义分割模型的数据集:

Pascal VOC 2012:有 20 类目标,这些目标包括人类、机动车类以及其他类,可用于目标类别或背景的分割Cityscapes:50 个城市的城市场景语义理解数据集Pascal Context:有 400 多类的室内和室外场景Stanford Background Dataset:至少有一个前景物体的一组户外场景。

来自 Stanford Background Dataset 的示例图像,该数据集的图像大致为 320 *240 像素,还包括指向每块像素所属类别的整数矩阵。

用于评估语义分割算法性能的标准指标是平均 IOU(Intersection Over Union,交并比),IoU 定义如下:

这样的评价指标可以判断目标的捕获程度(使预测标签与标注尽可能重合),也可以判断模型的精确程度(使并集尽可能重合)。

流程

一般而言,在高层次上,应用于语义分割模型的流程是:

我们将在下文中继续讨论流程中的分类器和后处理阶段。

架构和方法

用卷积神经网络分类

最近的语义分割架构一般都用卷积神经网络(CNN)为每个像素分配一个初始类别标签。卷积层可以有效地捕捉图像中的局部特征,并以层级的方式将许多这样的模块嵌套在一起,这样 CNN 就可以试着提取更大的结构了。通过一系列卷积捕捉图像的复杂特征,CNN 可以将一张图的内容编码为紧凑表征。

但为了将单独的像素映射给标签,我们需要将标准 CNN 编码器扩展为编码器-解码器架构。在这个架构中,编码器使用卷积层和池化层将特征图尺寸缩小,使其成为更低维的表征。解码器接收到这一表征,用通过转置卷积执行上采样而「恢复」空间维度,这样每一个转置卷积都能扩展特征图尺寸。在某些情况下,编码器的中间步骤可用于调优解码器。最终,解码器生成一个表示原始图像标签的数组。

Yasrab 等人文章(2016)中 SCNet 的编码器-解码器架构。

在许多语义分割架构中,CNN 旨在最小化的损失函数是交叉熵损失。该目标函数度量的是预测像素概率分布(在所有类上)和实际的概率分布的差异。

然而,对语义分割来说,交叉熵损失并不理想。因为对一张图来说,交叉熵损失是每一个像素损失的和,它并不鼓励邻近像素保持一致。因为交叉熵损失无法在像素间采用更高级的结构,所以交叉熵最小化的标签预测一般都是不完整或者是模糊的,它们都需要进行后续处理。

用条件随机场优化

来自 CNN 的原始标签一般都是「缺失(patchy)」图像,在图像中有一些小区域的标签可能不正确,因此无法匹配其周围的像素标签。为了解决这种不连续性,我们可以用一种平滑的形式。我们需要确保目标占据图片中的连续区域,这样给定的像素和其周围像素的标签就是一样的。

为了解决这个问题,有一些架构使用了条件随机场(CRF),使用原始图像中像素的相似性重新精炼 CNN 的标签。

条件随机场案例。

条件随机场是由随机变量组成的图,在这种情况下,每个顶点表示:

确定像素的 CNN 标签(绿色顶点 X_i)确定像素的实际类别标签(黄色顶点 Y_i)

边会编码两类信息:

(1)蓝色:两个像素的实际类别,即它们之间的依赖关系(2)红色:对于给定像素的 CNN 原始预测和实际标签之间的依赖关系

每个依赖性关系都具有势能,这是一个关于两个相关随机变量值的函数。例如,当相邻像素的实际目标标签相同时,第一类依存关系的势能较高。直观地讲,当目标标签是隐藏变量时,会根据概率分布产生可观察的 CNN 像素标签。

为了用 CRF 精炼标签,我们首先通过交叉验证用训练数据学习图模型的参数。然后,为了使概率 P(Y_1, Y_2, … Y_n | X_1, X_2,…X_n)最大化,对参数进行调整。CRF 的输出是原始图像像素的最终的目标标签。

实际上,CRF 图是完全连接的,也就意味着即使是从物理角度上讲相距很远的像素节点也可以共享边。这样的图有数十亿的边,从计算上讲难以进行精确处理。CRF 架构倾向于使用高效的近似技术进行处理。

分类器架构

CNN 分类后跟着 CRF 精炼只是一个可能的语义分割解决方法。也有论文叙述了其它的一些优秀方法:

U-Net(2015,https://arxiv.org/pdf/1505.04597.pdf)通过产生原始训练数据的扭曲版而增加训练数据。这一步使 CNN 编码器-解码器变得更加鲁棒以抵抗这些形变,并能从更少的训练图像中进行学习。当它在少于 40 张图的生物医学数据集上训练时,IOU 值仍能达到 92%。DeepLab(2016,https://arxiv.org/pdf/1606.00915.pdf)将 CNN 编码器-解码器和 CRF 精炼过程相结合以产生目标标签(如前文所述,作者强调了解码器的上采样)。空洞卷积(也称扩张卷积)在每一层都使用大小不同的卷积核,使每一层都能捕获各种比例的特征。在 Pascal VOC 2012 测试集中,这个架构的平均 IOU 达到了 70.3%。Dilation10(2016,https://arxiv.org/pdf/1511.07122.pdf)是一种扩张卷积的替代方法。完整流程是将扩张卷积的「前端模块」连接到内容模块上,再用 CRF-RNN 进行下一步处理。通过这样的构造,Dilation10 在 Pascal VOC 2012 测试集上的平均 IOU 值达到了 75.3%。

其他训练方案

我们最近的训练方案偏离了分类器和 CRF 模型。这些方法不是独立地优化不同模块,而是采用端到端的方法。

完全可微分的条件随机场

Zheng 等人建立的 CRF-RNN 模型引入了一种可以将分类和后处理合并为单一端到端的模型,该模型可以同时优化这两个阶段。因此可以自动学习诸如 CRF 高斯核权重这样的参数。他们将推理逼近算法的步骤重整为卷积,并使用循环神经网络(RNN)对具有完全迭代性质的推理算法进行建模。

来自 FCN-8s、DeepLab 和 CRF-RNN 的两个示例图及其分割结果。注意 CRF-RNN,它在端到端的模型中优化了 CRF,因而产生了更少的斑点,图像也更准确。

对抗训练

近期的另一个工作重点是使用对抗性训练获得更高阶的一致性。受生成对抗网络(GAN)的启发,Luc 等人训练了用于语义分割的标准 CNN 以及试着学习区分真实图分割和预测图分割的对抗网络。分割网络旨在产生对抗网络无法从真实分割中区别出来的预测分割。

这个方法的直观想法是希望我们的分割看起来尽可能真是。如果其它网络可以从真实分割中简单地将我们的预测结果区别出来,那么就说明我们的预测结果不够好。

来源:Luc 等人的论文,使用对抗性网络进行语义分割

随时间的分割

我们要如何预测未来目标会在哪呢?我们可以建模场景中的分割过程而解决这一问题。这适用于机器人或自动驾驶,在这两个问题中对物体的运动建模有助于计划。

我们首先在 Luc 等人(2017)的文章中发现了这一点。这篇文章说到,与预测未来的帧然后再进行分割相比,直接预测未来的语义分割则要求更高的性能。

他们使用了自回归模型,在自回归模型中他们用过去的分割预测下一次分割 S_t+1。为了预测之后的分割 S_t+2,他们将过去的 S_i 与预测出的 S_t+1 相结合再推断,依此类推得出所有的序列。

该训练策略用于从之前的分割预测未来的分割。L_t 是一个可以捕获预测分割和真实分割之间差异的损失函数。来源:Luc 等人的论文,Predicting Deeper into the Future of Semantic Segmentation。

他们比较了模型在不同时间尺度的表现:在 Cityscapes 数据集上评估下一帧(短时间)、下一个 0.5 秒(中等时间)和下一个 10 秒(长时间)的表现。他们发现,在时间较长时模型的表现不佳,但是在短期和中期时间范围中,模型性能都很好。

结语

许多诸如 U-Net 这样的方法,遵循最基本的结构:我们应用深度学习(卷积网络),其次是用经典概率技术进行后处理。虽然卷积网络的原始输出并不完美,但是后处理能利用人类先验知识更好地进行分割,以得到「好的」标签。

其余诸如对抗学习这样的方法,作为分割的端到端解决方案有非常强大的性能。与之前讨论的 CRF 不同,端到端的技术不需要人们对单独的组件建模以完善原始预测值。由于这些方法的表现优于多级流程,未来研究可能会越来越重视端到端的算法。

   

我们将当前分类网络(AlexNet, VGG net 和 GoogLeNet)修改为全卷积网络,通过对分割任务进行微调,将它们学习的表征转移到网络中。然后,我们定义了一种新的架构,它将深的、粗糙的网络层的语义信息和浅的、精细的网络层的表层信息结合起来,来生成精确和详细的分割。我们的全卷积网络在 PASCAL VOC(在2012年相对以前有20%的提升,达到了62.2%的平均IU),NYUDv2 和 SIFT Flow 上实现了最优的分割结果,对于一个典型的图像,推断只需要三分之一秒的时间。

 


 

图2:FCN 端到端密集预测流程

 

 

关键特点:

  • 特征是由编码器中的不同阶段合并而成的,它们在语义信息的粗糙程度上有所不同。
  • 低分辨率语义特征图的上采样使用经双线性插值滤波器初始化的反卷积操作完成。
  • 从 VGG16、Alexnet 等现代分类器网络进行知识转移的优秀样本来实现语义细分。

 


 

图3:将全连接层转换成卷积层,使得分类网络可以输出一个类的热图。

 

 

如上图所示,像VGG16分类网络的全连接层(fc6fc7)被转换为全卷积层。它生成了一个低分辨率的类的热图,然后用双线性初始化的反卷积,并在上采样的每一个阶段通过融合(简单地相加)VGG16中的低层(conv4conv3)的更加粗糙但是分辨率更高的特征图进一步细化特征。在这里可以找到更加详细的 netscope 风格的网络可视化。

在传统的分类 CNNs 中,池化操作用来增加视野,同时减少特征图的分辨率。这对于分类任务来说非常有用,因为分类的最终目标是找到某个特定类的存在,而对象的空间位置无关紧要。因此,在每个卷积块之后引入池化操作,以使后续块能够从已池化的特征中提取更多抽象、突出类的特征。

 


 

图4:FCN-8s 网络架构

 

 

另一方面,池化和带步长的卷积对语义分割是不利的,因为这些操作造成了空间信息的丢失。下面列出的大多数架构主要在解码器中使用了不同的机制,但目的都在于恢复在编码器中降低分辨率时丢失的信息。如上图所示,FCN-8s 融合了不同粗糙度(conv3conv4fc7)的特征,利用编码器不同阶段不同分辨率的空间信息来细化分割结果。

语义分割简介_第1张图片     语义分割简介_第2张图片     
语义分割简介_第3张图片     语义分割简介_第4张图片     

图5:训练 FCNs 时卷积层的梯度 源码

 

第一个卷积层捕捉低层次的几何信息,因为这完全依赖数据集,你可以注意到梯度调整了第一层的权重以使模型适应数据集。VGG 中更深层的卷积层有非常小的梯度流,因为这里捕获的高层次的语义概念足够用于分割。令我惊讶的是迁移学习工作得这么好。

          

图6:(左)反卷积(卷积转置)(右)空洞卷积 源码

 

语义分割架构的另一个重要方面是,对特征图使用反卷积,将低分辨率分割图上采样至输入图像分辨率的机制,或者花费大量计算成本,使用空洞卷积在编码器上部分避免分辨率下降。即使在现代 GPUs 上,空洞卷积的计算成本也很高。distill.pub 上的这篇文章详细介绍了反卷积。

SegNet

2015 SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation Arxiv

SegNet 的新颖之处在于解码器对其较低分辨率的输入特征图进行上采样的方式。具体地说,解码器使用了在相应编码器的最大池化步骤中计算的池化索引来执行非线性上采样。这种方法消除了学习上采样的需要。经上采样后的特征图是稀疏的,因此随后使用可训练的卷积核进行卷积操作,生成密集的特征图。我们将我们所提出的架构与广泛采用的FCN以及众所周知的 DeepLab-LargeFOV,DeconvNet 架构进行比较。比较的结果揭示了在实现良好的分割性能时所涉及的内存与精度之间的权衡。

 


 

图7:SegNet 架构

 

 

关键特点:

  • SegNet 在解码器中使用去池化对特征图进行上采样,并在分割中保持高频细节的完整性。
  • 编码器不使用全连接层(和 FCN 一样进行卷积),因此是拥有较少参数的轻量级网络。

 


 

图8:去池化

 

 

如上图所示,编码器中的每一个最大池化层的索引都被存储起来,用于之后在解码器中使用那些存储的索引来对相应的特征图进行去池化操作。虽然这有助于保持高频信息的完整性,但当对低分辨率的特征图进行去池化时,它也会忽略邻近的信息。

U-Net

MICCAI 2015 U-Net: Convolutional Networks for Biomedical Image Segmentation Arxiv

U-Net 架构包括一个捕获上下文信息的收缩路径和一个支持精确本地化的对称扩展路径。我们证明了这样一个网络可以使用非常少的图像进行端到端的训练,并且在ISBI神经元结构分割挑战赛中取得了比以前最好的方法(一个滑动窗口的卷积网络)更加优异的性能。我们使用相同的网络,在透射光显微镜图像(相位对比度和 DIC)上进行训练,以很大的优势获得了2015年 ISBI 细胞追踪挑战赛。此外,网络推断速度很快。一个512x512的图像的分割在最新的 GPU 上花费了不到一秒。

 


 

图9:U-Net 架构

 

 

关键特点:

  • U-Net 简单地将编码器的特征图拼接至每个阶段解码器的上采样特征图,从而形成一个梯形结构。该网络非常类似于 Ladder Network 类型的架构。
  • 通过跳远拼接连接的架构,在每个阶段都允许解码器学习在编码器池化中丢失的相关特性。

U-Net 在 EM 数据集上取得了最优异的结果,该数据集只有30个密集标注的医学图像和其他医学图像数据集,U-Net 后来扩展到3D版的 3D-U-Net。虽然 U-Net 最初的发表在于其在生物医学领域的分割、网络的实用性以及从非常少的数据中学习的能力,但现在已经成功应用其他几个领域,例如 卫星图像分割,同时也成为许多 kaggle竞赛 中关于医学图像分割的获胜的解决方案的一部分。

Fully Convolutional DenseNet

2016 The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation Arxiv

在本文中,我们扩展了 DenseNets,以解决语义分割的问题。我们在城市场景基准数据集(如 CamVid 和 Gatech )上获得了最优异的结果,没有使用进一步的后处理模块和预训练模型。此外,由于模型的优异结构,我们的方法比当前发布的在这些数据集上取得最佳的网络的参数要少得多。

 


 

图10:全卷积 DenseNet 架构

 

 

全卷积 DenseNet 使用 DenseNet 作为它的基础编码器,并且也以类似于U-Net的方式,在每一层级上将编码器和解码器进行拼接。

2016 ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation Arxiv
2017 LinkNet: Feature Forwarding: Exploiting Encoder Representations for Efficient Semantic Segmentation Blog

在本文中,我们提出了一种新颖的深度神经网络架构,称为 ENet(efficient neural network),专门为需要低延迟操作的任务创建。ENet 比当前网络模型快18倍,少用75倍的 FLOPs,参数数量少79倍,并且提供相似甚至更好的准确率。我们在 CamVid、Cityscapes 和 SUN 数据集上进行了测试,展示了与现有的最优方法进行比较的结果,以及网络准确率和处理时间之间的权衡。

LinkNet 可以在 TX1 和 Titan X 上,分别以 2fps 和 19fps 的速率处理分辨率为 1280x720 的图像。

         

图11:(左)LinkNet 架构(右)LinkNet 中使用的编码器和解码器模块

 

LinkNet 架构类似于一个梯形网络架构,编码器的特征图(横向)和解码器的上采样特征图(纵向)相加。还需要注意的是,由于它的通道约减方案,解码器模块包含了相当少的参数。大小为[H, W, n_channels]的特征图先通过1*1卷积核得到大小为[H, W, n_channels / 4]的特征图,然后使用反卷积将其变为[2*H, 2*W, n_channels / 4],最后使用1*1卷积使其大小变为[2*H, 2*W, n_channels / 2],因此解码器有着更少的参数。这些网络在实现相当接近于最优准确率的同时,可以实时地在嵌入式 GPU 上进行分割。

Mask R-CNN

2017 Mask R-CNN                                                                                                        Arxiv

该方法被称为 Mask R-CNN,以Faster R-CNN 为基础,在现有的边界框识别分支基础上添加一个并行的预测目标掩码的分支。Mask R-CNN 很容易训练,仅仅在 Faster R-CNN 上增加了一点小开销,运行速度为 5fps。此外,Mask R-CNN 很容易泛化至其他任务,例如,可以使用相同的框架进行姿态估计。我们在 COCO 所有的挑战赛中都获得了最优结果,包括实例分割,边界框目标检测,和人关键点检测。在没有使用任何技巧的情况下,Mask R-CNN 在每项任务上都优于所有现有的单模型网络,包括 COCO 2016 挑战赛的获胜者。

 



 
    


 
    

图12:(上)Mask R-CNN 分割流程
(下)原始 Faster-RCNN 架构和辅助分割分支

 

 

Mask R-CNN 架构相当简单,它是流行的 Faster R-CNN 架构的扩展,在其基础上进行必要的修改,以执行语义分割。

关键特点:

  • 在Faster R-CNN 上添加辅助分支以执行语义分割
  • 对每个实例进行的 RoIPool 操作已经被修改为 RoIAlign ,它避免了特征提取的空间量化,因为在最高分辨率中保持空间特征不变对于语义分割很重要。
  • Mask R-CNN 与 Feature Pyramid Networks(类似于PSPNet,它对特征使用了金字塔池化)相结合,在 MS COCO 数据集上取得了最优结果。

在2017-06-01的时候,在网络上还没有 Mask R-CNN 的工作实现,而且也没有在 Pascal VOC 上进行基准测试,但是它的分割掩码显示了它与真实标注非常接近。

PSPNet

CVPR 2017 PSPNet: Pyramid Scene Parsing Network                     Arxiv

在本文中,我们利用基于不同区域的上下文信息集合,通过我们的金字塔池化模块,使用提出的金字塔场景解析网络(PSPNet)来发挥全局上下文信息的能力。我们的全局先验表征在场景解析任务中产生了良好的质量结果,而 PSPNet 为像素级的预测提供了一个更好的框架,该方法在不同的数据集上达到了最优性能。它首次在2016 ImageNet 场景解析挑战赛,PASCAL VOC 2012 基准和 Cityscapes 基准中出现。

 



 
    


 
    

图13:(上)PSPNet 架构
(下)使用 netscope 实现的可视化的空间金字塔池化

 

 

关键特点:

  • PSPNet 通过引入空洞卷积来修改基础的 ResNet 架构,特征经过最初的池化,在整个编码器网络中以相同的分辨率进行处理(原始图像输入的1/4),直到它到达空间池化模块。
  • 在 ResNet 的中间层中引入辅助损失,以优化整体学习。
  • 在修改后的 ResNet 编码器顶部的空间金字塔池化聚合全局上下文。

 



 
    

图14:图片展示了全局空间上下文对语义分割的重要性。它显示了层之间感受野和大小的关系。在这个例子中,更大、更加可判别的感受野()相比于前一层()可能在细化表征中更加重要,这有助于解决歧义

 

 

PSPNet架构目前在 CityScapesADE20K 和 Pascal VOC 2012 中有最优结果。

RefineNet

CVPR 2017 RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation Arxiv

在这里,我们提出了 RefineNet,一个通用的多路径优化网络,它明确利用了整个下采样过程中可用的所有信息,使用远程残差连接实现高分辨率的预测。通过这种方式,可以使用早期卷积中的细粒度特征来直接细化捕捉高级语义特征的更深的网络层。RefineNet 的各个组件使用遵循恒等映射思想的残差连接,这允许网络进行有效的端到端训练。

 



 
    


 
    

图15:(上)RefineNet 架构
(下)建立 RefineNet 的块 - 残差卷积单元,多分辨率融合和链式残差池化

 

 

RefineNet 解决了传统卷积网络中空间分辨率减少的问题,与 PSPNet(使用计算成本高的空洞卷积)使用的方法非常不同。提出的架构迭代地池化特征,利用特殊的 RefineNet 模块增加不同的分辨率,并最终生成高分辨率的分割图。

关键特点:

  • 使用多分辨率作为输入,将提取的特征融合在一起,并将其传递到下一个阶段。
  • 引入链式残差池化,可以从一个大的图像区域获取背景信息。它通过多窗口尺寸有效地池化特性,利用残差连接和学习权重方式融合这些特征。
  • 所有的特征融合都是使用sum(ResNet 方式)来进行端到端训练。
  • 使用普通ResNet的残差层,没有计算成本高的空洞卷积

G-FRNet

CVPR 2017 G-FRNet: Gated Feedback Refinement Network for Dense Image Labeling Arxiv

本文提出了 Gated Feedback Refinement Network (G-FRNet),这是一种用于密集标记任务的端到端深度学习框架,解决了现有方法的局限性。最初,GFRNet 进行粗略的预测,然后通过在细化阶段有效地集成局部和全局上下文信息,逐步细化细节。我们引入了控制信息前向传递的门控单元,以过滤歧义。

 




    


 
    

图16:(上)G-FRNet 架构
(下)门控细化单元

 

 

上述大多数架构都依赖于从编码器到解码器的简单特征,使用拼接去池化或简单的加和。然而,在编码器中,从高分辨率(较难判别)层到对应的解码器中相应的上采样特征图的信息,可能或不能用于分割。在每个阶段,通过使用门控细化反馈单元,控制从编码器传送到解码器的信息流,这样可以帮助解码器解决歧义,并形成更相关的门控空间上下文。 
另一方面,本文的实验表明,在语义分割任务中,ResNet是一个远优于VGG16的编码器。这是我在以前的论文中找不到的。

半监督语义分割

DecoupledNet

NIPS 2015 Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation Arxiv

与现有的将语义分割作为基于区域分类的单一任务的方法相反,我们的算法将分类和分割分离,并为每个任务学习一个单独的网络。在这个架构中,通过分类网络识别与图像相关的标签,然后在分割网络中对每个识别的标签执行二进制分割。它通过利用从桥接层获得的特定类的激活图来有效地减少用于分割的搜索空间。

 




    
 

 

图17:DecoupledNet 架构

 

这也许是第一个使用全卷积网络进行语义分割的半监督方法。

关键特点:

  • 分离分类和分割任务,从而使预训练的分类网络能够即插即用(plug and play)。
  • 分类和分割网络之间的桥接层生成突出类的特征图(k类),然后输入分割网络,生成一个二进制分割图(k类)
  • 但是,这个方法在一张图像中分割k类需要传递k次

基于GAN的方法

2017 Semi and Weakly Supervised Semantic Segmentation Using Generative Adversarial Network Arxiv

特别地,我们基于生成对抗网络(GANs)提出了一种半监督框架,它包含一个生成器网络以提供额外的用于多类别分类器的训练样本,作为在 GAN 框架中的判别器,从K个可能的类中为样本分配一个标签y或者将其标记为一个假样本(额外的类)。为了确保 GANs 生成的图像质量更高,随之改进像素分类,我们通过添加弱标注数据来扩展上述框架,即我们向生成器提供类级别的信息。

 



 
    
 

 

图18:弱监督(类级别标签) GAN

 



 
    
 

 

图19:半监督GAN

 

数据集

数据集 训练数量 测试数量 类别数量
CamVid 468 233 11
PascalVOC 2012 9963 1447 20
NYUDv2 795 645 40
Cityscapes 2975 500 19
Sun-RGBD 10355 2860 37
MS COCO 80000 40000 80
ADE20K 20210 2000 150

结果

                    
                    
                    

 

图20:FCN-8s 生成的样本语义分割图(使用 pytorch-semseg 训练)来自 Pascal VOC 验证集

你可能感兴趣的:(语义分割简介)