介绍

对于语义分割任务而言,高层次的语义特征有助于图像区域的分类识别,而低层次的视觉特征有助于生成更加清晰、细节的边界,尤其是对于高分辨率图像而言。为了充分利用网络中间层的特征,本论文提出了RefineNet。

主要贡献:

  1. 提出了一种多路径精修网络(multi-path refinement network)RefineNet,它能利用多种级别的特征,从而进行高分辨率的语义分割。该模型很灵活,可以通过不同的级联方式形成多种结构。
  2. 级联的RefineNet可以高效地端到端训练,这对模型性能很重要。RefineNet中的所有组件都遵循残差连接(residual connection)的设计方式,因此梯度能直接通过短距离(short-range)和长距离(long-range)的残差连接进行传播。
  3. 提出一种新的网络组件,称为链式残差池化(chained residual pooling)。它能从很大的图像区域中捕捉背景上下文信息。
  4. RefineNet在7个公开数据集上取得了state-of-the-art的结果:PASCAL VOC 2012、PASCAL-Context、NYUDv2、SUNGRBD、CityScapes、ADE20K、Person-Parts(object parsing)。特别地,RefineNet在PASCAL VOC 2012上取得了83.4的IoU分数,超过了DeepLab。

方法

Multi-Path Refinement

RefineNet提供一种通用的方法来将粗略的高级语义特征与细腻的低级特征融合到一起,来生成高分辨率的特征图。该设计的一个重要方面是保证梯度能较为容易地通过长距离残差连接在网络中反向传播,从而保证网络能端到端训练。

对于一个标准的多路径结构,我们将预训练的ResNet根据输出特征图的大小分为4个block,并使用由4个RefineNet block构成的4-级联结构,每个RefineNet block与一个ResNet block的输出(即long-range residual connection)以及级联结构中的上一个RefineNet block相连。事实上,该结构可以有多种变体,例如一个RefineNet block可以与多个ResNet block相连。

1.png

如上图(c)所示,我们用RefineNet-m表示与ResNet block-m的输出相连接的RefineNet block。虽然所有RefineNet block内部结构相同,但它们不共享参数。从下到上:我们首先将ResNet block-4的输出连接到RefineNet-4,RefineNet-4只有一条输入路径,它的作用是使用一些额外的卷积使预训练的ResNet权重适应当前任务(语义分割);接下来,我们将RefineNet-4的输出和ResNet block-3的输出输入到RefineNet-3,因此RefineNet-3有2条输入路径,它的作用是使用来自ResNet block-3的高分辨率特征对RefineNet-4输出的低分辨率特征图进行精修;类似地,RefineNet-2与RefineNet-1重复上述过程;最后,将RefineNet-1输出的高分辨率特征图输入到一个softmax层来产生score map;这个score map再使用双线性插值上采样到原始图像大小。

RefineNet

2.png

RefineNet block的结构如上图所示。

残差卷积单元(Residual convolution unit) 如上图(b)所示,每个RefineNet block的第一部分包括一个adaptive convolution set,主要用于微调预训练的ResNet的权重。为此,每条路径的输入串行经过两个残差卷积单元(RCU,简化版ResNet单元,去除了BN层)。对于RefineNet-4,输入路径滤波器的数量设为512;对于其他RefineNet block,每条输入路径滤波器的数量设为256。

多分辨率融合(Multi-resolution fusion) 如上图(c)所示,所有路径的特征图通过多分辨率融合模块融合为高分辨率特征图。该模块首先用一个卷积来适应输入,生成信道数相同的特征图(采用所有路径中最小的信道数),然后将所有(较小的)特征图上采样到所有路径中最大的分辨率大小,最后将所有特征图相加进行融合。如果只有一条输入路径(如RefineNet-4),则特征图会略过这个模块不发生任何改变。

链式残差池化(Chained residual pooling) 如上图(d)所示,这个模块的目标是从较大的图像区域捕捉背景上下文信息。它能高效地使用多种窗口大小对特征进行池化并融合到一起。这个组件由多个池化块(pooling block)组成,每个包含一个池化层和一个卷积层。每个池化块将前面的池化块的输出作为输入,最后将所有池化块的输出相加融合。池化块中的卷积起到"加权"的作用,我们期待它能学习到池化块的重要程度。在实验中,我们使用两个池化块,步长均为1。

输出卷积层(Output convolutions) 每个RefineNet block的最后一步是另一个残差卷积单元(RCU),目的是对多路径融合特征进行非线性变换,生成用来进一步处理或预测的特征。因此每个block有三个RCU。我们在RefineNet-1之后,softmax预测之前添加两个额外的RCU。特征的信道数经过这个模块后保持不变。

RefineNet中的恒等映射

在RefineNet的所有组件中,我们都使用了"残差连接"的设计方式,从而便于梯度传播。注意在链式残差池化块中,我们使用了一个ReLU,它对后面的池化操作序列的有效性十分重要,并降低了模型对学习率的敏感性。

在RefineNet中,我们既有短距离的残差连接,也有长距离的残差连接。

  • 短距离残差连接(short-range residual connections):每个RCU或残差池化组件中的short-cut连接。
  • 长距离残差连接(long-range residual connections):RefineNet block与ResNet block之间的连接。

实验

Object Parsing

3.png

Semantic Segmentation

4.png

5.png

RefineNet变体

6.png

Last modification:August 11th, 2019 at 11:13 pm
如果觉得我的文章对你有用,请随意赞赏