乐趣区

语义分割浅析

背景
对图像而言,常见的任务是:

图像分类:提取类别特征,如:VGG19 网络
目标检测:提取类别,位置特征,如:YOLO 网络
语义分割(实例分割):提取类别,位置特征,针对每个像素,如:Deeplab 网络

我们知道,在做图像分类的时候,一般会在模型的最后添加全连接层 +softmax 用于预测。但是,全连接层会把卷积学习到的类别,位置特征抽象成一维的概率信息,可以识别整个图片的类别,不能标识每个像素的类别。因此,为了保留图像特征我们将全连接层替换为卷积层。

这样,模型的输出不再是一维,而是二维的图。

由于特征图经过一系列的卷积和池化后(保持特征不变性,增大感受野,节省计算资源等)造成分辨率降低,丢失大量细节和边缘信息,因此我们需要通过一定的手段还原原图分辨率。

不同的模型会采取不同的还原方式,图上以 FCN 为例,采用反卷积还原分辨率并使用加和的方式找回下采样阶段丢失的信息,直接把编码阶段的特征图加到解码阶段中来。
基石 FCN 模型
FCN 阐释了如何将 CNN 应用到语义分割问题上,是深度学习应用此问题的基石。

文章开始,我们谈到模型最后的全连接层不适用与分割任务,需要替换成卷积层,以此获取二维的特征图然后接 softmax,对每个像素点进行分类。

先通过卷积,池化下采样,然后上采样还原分辨率。上采样一般有两种方式:双线性插值(Deeplab),反卷积(FCN)。

Google DeepLab v1
DeepLab 是针对语义分割任务提出的模型,主要使用 DCNN(深度卷积网络),CRF(条件随机场),空洞卷积做像素级预测。DCNN 在语义分割中存在两个主要问题:

下采样带来的分辨率下降,细节信息丢失
平移不变性,限制了定位精度

针对以上问题,Deeplab 采用空洞卷积扩大感受野,获取更多的上下文信息。使用全连接条件随机场(DenseCRF)提高模型捕获细节的能力。DCNN 以 VGG16 模型为后端网络,将 FC 层全部转为卷积层,改成全卷积网络形式。最后的两个池化层不下采样,通过 2 或 4 的采样率空洞卷积对特征图扩大感受野,缩小步幅。模型训练的时候讲 VGG16 的权重做微调,损失函数取输出特征图 ground truth 下采样 8 倍做交叉熵和;测试时取输出图双线性上采样得到的结果(DCNN 预测物体的位置是粗略的,没有确切的轮廓,针对此问题采用全连接的 CRF 提升分割精度)。
Google DeepLab v2
DeepLab v2 相比 DeepLab v1 基础层由 VGG16 改为 ResNet,添加多尺度和 ASPP 模块得到更好的分割结果。

空洞卷积作为密集预测的强大工具,可以扩大感受野,在不增加参数量和计算量的同时获取更多的上下文。
提出 ASPP(空洞空间卷积池化金字塔),并行的采用多采样率的空洞卷积进行探测,以多个比例捕获对象及图像上下文。
组合 DCNN 和概率模型,改善分割边界结果。

模型运行步骤:

输入经过改进的 DCNN(带空洞卷积和 ASPP 模块)
通过双线性插值恢复原图大小(FCN 采用反卷积)
通过全连接的 CRF 细化预测结果,得到最终输出

Google DeepLab v3
DeepLab v3 相比 DeepLab v2:

重新讨论了空洞卷积的使用,让我们在级联模块和空间金字塔池化的框架下,能够获取更大的感受野从而获取多尺度信息。
改进 ASPP 模块,由不同采样率的空洞卷积和 BN 层组成。
使用大采样率的 3 ×3 空洞卷积,因为图像边界响应无法捕获远距离信息,会退化为 1 ×1 卷积,因此将图像级特征融合到 ASPP 模块。
没有使用 CRF 做后期优化处理

Google DeepLab v3+
DeepLab v3+ 采用编码器,解码器结构,通过使用解码器模块改善物体边缘的分割结果,还尝试使用 Xception 作为编码器。如图所示,空间金字塔池化可以池化不同分辨率的特征图来捕获上下文信息。编码器解码器结构可以捕获锋利的边界。先 4 倍上采样,然后与编码器中的特征图合并,最后 4 倍上采样恢复到原始图像大小。encoder 就是 DeepLab V3,通过修改 ResNet101 最后两 (一) 个 block 的 stride,使得 output stride 为 8(16)。之后在 block4 后应用改进后的 Atrous Spatial Pyramid Pooling,将所得的特征图 concatenate 用 1×1 的卷积得到 256 个通道的特征图。在 decoder 中,特征图首先上采样 4 倍,然后与 encoder 中对应分辨率低级特征 concatenate。在 concatenate 之前,由于低级特征图的通道数通常太多(256 或 512),而从 encoder 中得到的富含语义信息的特征图通道数只有 256,这样会淡化语义信息,因此在 concatenate 之前,需要将低级特征图通过 1×1 的卷积减少通道数。在 concatenate 之后用 3×3 的卷积改善特征,最后上采样 4 倍恢复到原始图像大小。
U-Net 网络
U-Net 网络可以利用较少的数据集进行端到端训练,医学领域应用较多(医学领域的标注数据获取成本很高)。

为了更有效的利用标注数据,采用数据增强的方法(训练样本进行随机弹性形变)
网络由收缩路径获取上下文信息以及一个对称的扩张路径用以精确定位。

如图所示,网络结构由 contracting path 和 expansive path 组成。contracting:

含有重复结构,每个都有 2 个 3 ×3 卷积层,relu 层和 2 ×2 最大池化层
每一次下采样都将特征通道数加倍

expansive path:

每一步都使用反卷积,每次反卷积后将通道数量减半,特征图大小加倍。
反卷积后,将反卷积的结果与 contracting path 中对应的步骤的特征图拼接起来
对拼接后的 map 再进行 2 次 3 * 3 卷积
最后一层卷积核大小为 1 ×1,将 64 通道的特征图转为特定类别数量

退出移动版