语义分割网络综述
概览
本文以 HRNet 论文 为主,介绍语义分割相关工作,具体可分为:
- 学习低分辨率表示:FCN、Deeplab系列、PSPNet
- 恢复高分辨率表示:U-Net,Hourglass,SegNet,DeconvNet
其中Hourglass和U-Net相似,DeconvNet与SegNet相似,不单独介绍 - 高低分辨率并行学习:HRNet
一、学习低分辨率表示
FCN
出发点
- LeNet、AlexNet、VGGNet、GoogLeNet主要用于分类,具有平移不变性(translation invariance)
- 这些网络需要固定的输入
创新点
- 将后面的全连接层换成卷积层,实现密集预测,用于语义分割。其中卷积层采用反卷积层(backwards convolution / deconvolution),由双线性差值权值初始化反卷积核。后面会大致介绍反卷积操作。
- 采用跳接结构,融合深层(包含了分类信息)与中层(包含了位置信息)的特征,提升输出的特征准确率
反卷积
关于反卷积的详细说明,可查看我的另一篇博客反卷积的理解。
Deeplab-v1
结构
基于VGGNet,在FCN基础上修改,文章没有总体结构图,下面放VGGNet结构
创新点
-
将最后两个maxpooling的stride由2改为1,提高输出分辨率
-
将上述pooling层后面的卷积层改成空洞卷积,提高感受野
pooling+普通卷积和空洞卷积都能增加感受野,不同的是前者的卷积所作用的输入特征图分辨率更低,而空洞卷积无须降低特征图分辨率,因而能够提高特征密度
-
结合CRFs,恢复细节轮廓
与FCN相比
- 不需要可学习的上采样参数
Deeplab-v2
创新点
- backbone换成ResNet-101
- 采用空洞空间金字塔池化ASPP
Deeplab-v3
创新点
-
加深网络(增加网络深度)
复制ResNet第4个Block,采用不同rate的空洞卷积进行级联,见下图。
-
改进的ASPP(增加网络宽度,相比于第一点,这一点在后续工作中用的更多)
a. 随着空洞卷积rate增大,有效的卷积核权重变少,因而增加1×1卷积
b. 为了增加全局信息,对上层输出特征图进行空间平均池化
c. 将这几个分支在通道维度上拼接后接入1×1卷积层,融合各分支特征
-
移除CRF
Deeplab-v3.5
创新点
- 提出Depthwise separable convolution,由depthwise convolution和pointwise convolution组成,如下图中(a)和(b)。这两种卷积分别提取空间和通道信息,大大减少参数量和计算量。其中depthwise convolution由空洞卷积替换,如下图中©
- 提出encoder-decoder结构,实际上是在网络后面增加了一些结构,融合中层信息,采用双线性差值上采样以恢复分辨率
- 修改Xception
a. 更深的Xception
b. 所有的池化层替换为带步长的depthwise separable convolution
c. 在所有3×3卷积后面接上BN和ReLU,借鉴于BobileNet
PSPNet
创新点
- 提出空间金字塔池化(SSP)
a. 经过4个不同尺度的池化
b. 1×1卷积降低通道数为原来的1/4
c. 双线性差值上采样以恢复输入分辨率
d. 和输入特征图合并
- 增加辅助loss
能够优化学习过程,文章好像没具体说是什么loss。
二、恢复高分辨率表示
U-Net
网络结构
创新点
- 采用反卷积上采样
- 在decoder中融合encoder中对应的特征信息(同Hourglass)
- 无padding卷积+Overlap-tile策略,以适配较大尺寸的输入图像(医学图像的特点)
当图像较大时,可以通过滑窗方式对图像进行逐步预测。当滑窗处于边界部分时,如下右图中黄色部分,此时感受野为蓝色区域,其中的空白部分由黄色区域镜像来填充,如下左图所示,不同于原来的以0值或均值来填充的操作。
特点
为什么适用于医学图像:
- 医学图像的低级特征同样很重要,因此需要有U-Net的浅层-深层连接结构
- 医学图像一般较大,需要Overlap-tile策略
- 医学图像一般样本少,因此U-Net需要设计成轻量级
SegNet
网络结构
创新点
- 采用Pooling Indices记住池化操作时选取的值的位置,在上采样反池化操作中将值放入记录的位置,其余位置置零。(同 DeconvNet)
由于网络采用对称的encoder-decoder结构,因此decoder中的每个反池化操作在encoder中都有与之对应的池化操作。反池化后的特征图是稀疏的,需要经过卷积层丰富其特征内容。
与U-Net区别
- 在decoder采用反池化操作,而不是结合encoder中对应的特征图
- U-Net没有使用VGG中的conv5部分,而SegNet采用了全部的VGG结构
三、HRNet
结构
- Parallel Multi-Resolution Convolutions
多分辨率并行的卷积
- Repeated Multi-Resolution Fusions
重复的多分辨率信息融合
- Representation Head
下图分别对应HRNetV1、HRNetV2、HRNetV2p。分别适用于人体姿态估计、语义分割和目标检测。其中(b)图中的融合方式为:低分辨率图双线性插值到高分辨率后拼接,再经过1×1卷积层融合这4个分支信息。而©图中则进一步对输出进行下采样,得到多个level的输出。
- Instantiation
将前三种结构安装到一起,得到最终的HRNet结构,如下图所示。