首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文概览主要语义分割网络:FCN,SegNet,U-Net……

本文来自 CSDN 网站,译者蓝三金

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

图1:输入图像(左),FCN-8s 网络生成的语义分割图(右)(使用 pytorch-semseg 训练)

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,然后是一个解码器网络。这些架构之间的不同主要在于解码器网络。解码器的任务是将编码器学习到的可判别特征(较低分辨率)从语义上映射到像素空间(较高分辨率),以获得密集分类。

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

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

Pytorch:https://github.com/meetshah1995/pytorch-semseg

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

▌Fully Convolution Networks (FCNs) 全卷积网络

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

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

关键特点:

特征是由编码器中的不同阶段合并而成的,它们在语义信息的粗糙程度上有所不同。

低分辨率语义特征图的上采样使用通过双线性插值滤波器初始化的反卷积操作完成。

从 VGG16、Alexnet 等现代分类器网络进行知识转移的优秀样本来实现语义细分。

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

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

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

图4:FCN-8s 网络架构

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

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

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

图6:反卷积(卷积转置)

空洞卷积

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

论文链接:https://arxiv.org/abs/1411.4038

▌SegNet

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

图7:SegNet 架构

关键特点:

SegNet 在解码器中使用去池化对特征图进行上采样,并在分割中保持高频细节的完整性。

编码器不使用全连接层(和 FCN 一样进行卷积),因此是拥有较少参数的轻量级网络。

图8:去池化

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

论文链接:https://arxiv.org/abs/1511.00561

▌U-Net

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 竞赛中关于医学图像分割获胜的解决方案中的一部分。

论文链接:https://arxiv.org/abs/1505.04597

▌Fully Convolutional DenseNet

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

图10:全卷积 DenseNet 架构

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

论文链接:https://arxiv.org/abs/1611.09326

▌E-Net 和 Link-Net

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

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

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

LinkNet 架构类似于一个梯形网络架构,编码器的特征图(横向)和解码器的上采样特征图(纵向)相加。还需要注意的是,由于它的通道约减方案(channel reduction scheme),解码器模块包含了相当少的参数。大小为 [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 上进行分割。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180601A1HU8X00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com