经典语义分割网络 - 图1

FCN

论文:Fully Convolutional Networks for Semantic Segmentation 代码:略 发表:CVPR 2015

image.png

摘要

  • 证明了卷积网络本身可以端到端训练一个像素到像素任务,在语义分割方面超过了最先进的水平;
  • 构建了全卷积网络,该网络接收任意大小的输入,并通过有效的推理和学习产生相应大小的输出;
  • 定义并详细描述了完全卷积网络的空间,解释了它们在空间密集型预测任务中的应用,并与先前的模型建立了联系;
  • 将当代分类网络调整为完全卷积网络,并通过微调将其学习到的表示转移到分割任务中;
  • 定义了一个skip架构,该架构将来自深层、粗糙层的语义信息与来自浅层、精细层的外观信息相结合,以产生准确而详细的分割。

用于密集预测的自适应分类器

分类网络转为密集预测网络
经典的分类网络,包括LeNet、AlexNet及其更深层的继承者,表面上接受固定大小的输入,并产生非空间输出。这些网络的全连接层具有固定的尺寸,并抛弃了空间坐标。然而,这些完全连接的层也可以被视为内核覆盖整个输入区域的卷积。这样做会将它们投射到完全卷积的网络中,这些网络接受任何大小的输入,并输出分类图。
image.png
像素分类
如下图所示,高位特征图上每个位置点的类别可视为该点在原始图像感受野范围内图像的一个分类任务,这样每个点的类别便可转换为一个分类任务,这样对每个点进行分类后便可得到一个分辨率很低的粗分割图。
image.png
卷积复用
若对每个点的分类视为对原始图像中一个局部区域图像的分类任务,那么每个分类任务中的卷积网络所进行的计算存在大量重复情况。这些冗余的计算是不必要的,只需进行一次卷积便可,也就是说多个分类任务的卷积是可以复用的。这样这个网络就可转换为一个端到端的全卷积网络。
image.png

上采样学习

上述密集分类器只能得到的粗分割。结果如何得到原始尺寸的分割图,原文首先提到了一种减少子采样以及移位缝合的方法,但这是一种折衷的方法。效果不如上采样学习方法有效,尤其是上采样可以结合跳层使用,上采样的方法包括线性插值和反卷积,原本使用双线性插值。

跳跃连接

如下图1所示,全卷积网络的分割结果非常粗糙,FCN通过添加跳连解决这个问题。跳连将最终预测层与步幅更细的较低层结合起来。将细层和粗层结合起来,模型可以根据全球结构进行局部预测。
image.png
跳连方式为:首先将浅层特征通过1*1卷积预测一个概率分布,然后将高层特征预测的概率分布进行上采样,然后相加再上采样到原始尺寸。
image.png

实验结果

image.png


UNet

论文:U-Net: Convolutional Networks for Biomedical Image Segmentation 代码:略 发表:MICCAI 2015

image.png

要点

  • 提出弹性形变数据增强方法来解决医学图像标注数据少的问题;
  • 提出了一种对称收缩扩张(U型)网络结构可以同时获取上下文信息和位置信息
  • 建议使用加权损失,分离目标在损失函数中获得更大权重。

解决的问题

主要解决基于patch预测像素类别的方法存在的问题,包括:

  • 由于需要逐patch地输入来进行预测,存在冗余计算,因此效率低下;
  • 定位准确性和获取上下文信息不可兼得,大的patches需要更多的max-pooling,这样会减少定位准确性,因为最大池化会丢失目标像素和周围像素之间的空间关系,而小patches只能看到很小的局部信息,包含的背景信息不够。

网络结构

相比FCN,一个重要修改是,在上采样部分,引入大量的特征通道,允许网络将上下文信息传播到更高分辨率的层。因此,扩展路径或多或少与收缩路径对称,并产生U形结构。
image.png

加权损失

加权的交叉熵损失:
image.png
权重计算方式如下:
image.png

数据增强

  • 使用3×3的粗网格上的随机位移向量生成平滑变形;
  • 位移从标准偏差为10像素的高斯分布中采样。然后使用双三次插值计算每像素的位移;
  • 收缩路径则最后层添加Dropout进一步的隐式数据扩充。

PSPNet

论文:Pyramid Scene Parsing Network 代码:略 发表:CVPR 2017

image.png

摘要

  • 提出金字塔池模块(pyramid pooling module)和提出的金字塔场景解析网络(PSPNet),可以聚合基于不同区域的上下文信息,来挖掘全局上下文信息的能力
  • 全局先验表示在场景解析任务上产生了良好的效果,PSPNet为像素级的预测提供了一个更好的框架

贡献点

  • 提出了一个金字塔场景解析网络,在基于FCN的像素预测框架中嵌入困难的场景上下文特征;
  • 基于深度监督损失,开发了一种有效的深度ResNet优化策略;
  • 构建了一个实用的系统,用于最先进的场景解析和语义分割,其中包括所有关键的实现细节。

核心出发点

  • 基于FCN的模型的主要问题是缺乏适当的策略来利用全局场景类别线索。对于典型的复杂场景理解,需要获得全局图像级特征。

网络结构

image.png
Pyramid Pooling模块融合了4种不同金字塔尺度的特征,第一行红色是最粗糙的特征——全局池化,后面三行是不同尺度的池化特征。为了保证全局特征的权重,如果金字塔共有N个级别,则在每个级别后使用1×1的卷积将对于级别通道降为原本的1/N。再通过双线性插值获得未池化前的大小,最终concat到一起。
金字塔等级的池化核大小是可以设定的,这与送到金字塔的输入有关。论文中使用的4个等级,核大小分别为1×1,2×2,3×3,6×6。

深监督辅助损失

在ResNet101的基础上做了改进,除了使用后面的softmax分类做loss,额外的在第四阶段添加了一个辅助的loss,两个loss一起传播,使用不同的权重,共同优化参数。后续的实验证明这样做有利于快速收敛。推理阶段丢弃辅助损失。
image.png
辅助损失权重最优设为0.4
image.png


SegNet

论文:SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation 代码:略 发表:TPAMI 2017

image.png

摘要

解码器网络的作用是将低分辨率编码器特征映射映射到全输入分辨率特征映射,以进行像素级分类。SegNet的新颖之处在于解码器对其低分辨率输入特征映射进行上采样的方式。具体地说,解码器使用在相应编码器的最大池化步骤中计算的池化索引来执行非线性上采样。这样就不需要学习增加样本。上采样的地图是稀疏的,然后用可训练的过滤器进行卷积,以生成密集的特征地图。

网络架构

image.png

池化索引上采样

对比FCN可以发现SegNet在Unpooling时用index信息,直接将数据放回对应位置,后面再接Conv训练学习。这个上采样不需要训练学习(只是占用了一些存储空间)。反观FCN则是用transposed convolution策略,即将feature 反卷积后得到upsampling,这一过程需要学习,同时将encoder阶段对应的feature做通道降维,使得通道维度和upsampling相同,这样就能做像素相加得到最终的decoder输出。
image.png


RefineNet

论文:RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation 代码:略 发表:CVPR 2017

image.png

摘要

  • 提出了多路径网络,利用多级别的抽象用于高分辨率语义分割;
  • 通过使用带残差连接的同态映射构建所有组件,梯度能够在短距离和长距离传播,从而实现端到端的训练;
  • 提出了链式残差池化模块,从较大的图像区域俘获背景上下文。使用多个窗口尺寸获得有效的池化特征,并使用残差连接和学习到的权重融合到一起。

网络架构

RefineNet可以分为三个主要部分: 1. 特征输入首先经过两个Residual模块的处理; 2. 之后是不同尺寸的特征进行融合。所有特征上采样至最大的输入尺寸,然后进行加和。上采样之前的卷积模块是为了调整不同特征的数值尺度; 3. 最后是一个链式的pooling模块。最后再经过一个Residual模块即得RefineNet的输出。
image.png
残差卷积模块RCU(Residual Conv Unit)
模块中包含激活(ReLU)和卷积(Conv3x3)操作,然后使用加法将前后的特征图融合,这在设计上ResNet思想相同。

多分辨率融合模块(Multi-Resolution fuse)
将前面多种分辨率的特征图输入到融合模块内后,首先采用卷积层获得尺寸不变的特征图;然后使用上采样操作将所有特征图扩展为尺寸相同的新特征图;最后,使用Sum操作融合所有的特征图。

链式残差池化模块(Chained Residual Pooling)
此模块的目的是从大的背景区域中俘获上下文信息,多个池化窗口能获得有效的特征,并使用学习到的权重进行融合。


DeepLabV3+

论文:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation 代码:略 发表:ECCV 2018

image.png

摘要

  • 空间金字塔池模块能够通过以多种速率和多个有效视场探测传入特征,对多尺度上下文信息进行编码,编解码结构网络网络可以通过逐渐恢复空间信息来捕获更清晰的对象边界。Deeplabv3+建议结合两种方法的优点。
  • 进一步并将深度可分离卷积应用于阿托斯空间金字塔池和解码器模块,从而形成更快、更强的编解码网络。

对DeepLabV3的改进

使用Encoder-Decoder架构(b)改进DeepLabv3(a)得到DeepLabV3+。
image.png

网络架构

DeepLabv3+模型的整体架构如图所示,它的Encoder的主体是带有空洞卷积的DCNN,可以采用常用的骨干网络如ResNet,然后是带有空洞卷积的空间金字塔池化模块(Atrous Spatial Pyramid Pooling, ASPP),主要是为了引入多尺度信息;相比DeepLabv3,v3+引入了Decoder模块,其将底层特征与高层特征进一步融合,提升分割边界准确度。
image.png


参考