定义

语义分割:将图像按照类别分割成不同的区域。等价于对每个像素进行分类

区别于:实例分割,which 分割不同的实体,仅考虑前景物体。全景分割:前景区分实体,背景仅考虑类别。

应用

  • 自动驾驶:将行人、车辆、行车道、人行道、交通标志、房屋、草地、树木等按类别分割出来,从而辅助车辆对路况进行识别和感知。

  • 人像分割:将人物和背景分隔开来,实现更多搭配。

  • 智能遥感:分辨地表物体类别,监测不同季节地表水域变化等。

  • 医疗诊断:识别肿瘤等。

基本思路

  • 先验知识:物体内部颜色接近,物体交界颜色变化。但是不同物体颜色可能接近,物体内部颜色也可能包含多种颜色。

  • 逐像素分类,直观上我们要做这样一件事情,如图所示。

更进一步,我们将原始的RGB三通道图像通过卷积神经网络进行一系列的特征提取后,转化为$N$个通道,$N$就是图像中类别的个数,在每个通道上,是针对每个类别的逐像素二分类任务,最后在所有通道的相同位置使用$argmax$就可以得到原始RGB图像在该位置点的类别。

  • 全连接层的卷积化,如图,将图像分类的网络的分类器向量转化为卷积核,那么就可以在提取的特征图上继续卷积,最后的输出增加了通道信息,类别的 one-hot 编码就存放到了通道中。

  • 评价指标

网路结构

因为语义分割要求输出的图像尺寸和原始输入的一样,所以在网络前向传播的过程中要保持特征图大原始大小,如上图所示,但是这样做的话就会使得计算量非常大。这与图像分类任务不同,因为图像分类不会关注位置信息,卷积过程中可以随意使用stride, pooling 进行下采样来减小图像尺寸进而减小参数量和计算量。为了减小计算量,下采样的 encoder 是必须的,那么很自然需要寻找恢复原始图像大小尺寸的 decoder 技术。

上采样技术

上采样技术分为两类:可学习参数的和不可学习的。

  • 不可学习参数的如图:
    • 双线性差值

其中双线性差值(Bilinear interpolation)使用较多,简单来说如图,我们可以先通过$Q_{11}$,$Q_{12}$,来表达 $R_1$,然后通过$Q_{21}$,$Q_{22}$来表达 $R_2$,然后再通过 $R_1$, $R_2$ 来表达 $P$,注意这里x和y都是自变量,因为双线性差值是针对的二维的情况。

  • 可学习参数的:转置卷积(Transposed Convolution)。转置卷积的运算步骤如下,s:步距,p:填充
    • 在输入特征图元素间填充 $s-1$ 行0,$s -1$列 0
    • 在输入特征图四周填充 $k-p-1$行0,$k-p-1$列0
    • 将卷积核参数上下、左右翻转
    • 做正常卷积运算(p=0,s=1)

蓝色是输入,绿色是输出,阴影是卷积核. 图片来自here

【s=1,p=0,k=3】s-1=0; k-p-1=2 行列间填0个0,四周填2个0,然后做正常卷积

【s=2,p=0,k=3】s-1=1; k-p-1=2 行列间填1个0,四周填2个0,然后做正常卷积

【s=2,p=1,k=3】s-1=1; k-p-1=1 行列间填1个0,四周填1个0,然后做正常卷积

其中上下、左右翻转如下:

转置卷积顾名思义就是利用了矩阵的转置,假设一个正向卷积:

可以看到,只是利用了等效卷积矩阵的转置,把从输出的矩阵转化为了和输入形状一样大小的矩阵,而这个运算恰好和使用原始卷积核的上下左右翻转后的卷积核在输出上做相应的填充后再普通卷积的运算结果一致,所以才有了开头说的计算转置卷积的步骤。

FCN 全卷积网络

有了转置卷积做上采样的decoder,和全连接层的卷积化,就可以将众多的图像分类网络应用到语义分割中了。

其中来自2015CVPR的FCN(Fully Convolutional Network) 是第一个端到端的针对像素级预测的全卷积网络。

FCN 根据转置卷积的上采样率又分为了三种,分别是32倍、16倍、8倍上采样率,其中后两种还添加了跳层,这样上采样个信息可以更加丰富,还有其他的解释,但我觉得可以从神经网络的【可学习空间】角度进行比较。

【添加skip connection】效果对比

U-Net

添加跳层的另一个典型网络就是U-Net,它是一种分层结构,添加的跳层在encoder和decoder对应维度上进行特征拼接,由于当时提出该网络时,padding和stride技术并没有大行其道,所以encoder和decoder的细节略显复杂,但该论文是针对医学图像分割提出的,如果考虑到 problem domain那就另当别论了。

Advanced U-Net variants

除了U-Net的encoder-decoder跳层,还可以添加小跳层,也就是在block内部使用残差网络。注意到这个结构的跳层无处不在,除了decoder部分不采用大跳层外,encoder的每个block的输出结合了所有的layer的直接输出和累计输出。

上下文信息context

感受野有什么用?

【PSPNet 2016】

DeepLab系列

DeepLab是语义分割的又一系列工作,主要贡献:

  • 使用空洞卷积解决网络的下采样问题
  • 使用条件随机场 CRF 作为后处理手段,精细化分割图
  • 使用多尺度的空洞卷积(ASPP模块)捕捉上下文信息

DeepLab v1 发表于2014年,后于2016、2017、2018年提出v2、v3、v3+版本。

  • 空洞卷积

对特征图进行下采样(pooling,stride)的一个好处是,在给定过滤器大小不变的情况下,它扩大了后续过滤器的感受野(相对于输入)。采用大过滤器的参数效率低下,所以下采样的方法比增加过滤器大小更可取,但是下采样降低了空间分辨率。扩张卷积提供了一种在保留完整空间维度的同时获得更大视野的替代方法。一些架构将最后几个池化层换成具有连续更高扩张率的空洞卷积,以保持相同的视野,同时防止空间细节丢失。 然而,用空洞卷积完全替换池化层通常在计算上仍然过于昂贵。

  • 条件随机场

  • ASPP:空间金字塔池化

总结

MMSegmentation

代码地址

视频讲解

打赏作者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHA