1. 出处
2017 CVPR
2. 问题
重复的二次采样操作如池化,卷积会导致图像分辨率快速下降。
一种解决方案是使用反卷积作为上采样操作,来生成高分辨率的特征图。反卷积操作无法恢复低维特征,因为已经在前向传播阶段中的下采样操作中丢失了。低维信息对边界和细节的精确预测是至关重要的。DeepLab使用空洞卷积产生大的感受野,不需要下采样图片。这个方法有两个限制:
- 需要对大量的细节(高分辨率)特征图做卷积,计算昂贵。
- 空洞卷积是一种粗糙的sub-sample方式,会丢失重要细节
另一种解决方案是利用来自中间层的特征,生成高分辨率的预测,比如FCN方法。来自中间层的特征能够描述目标的mid-level表示,仍然能保持空间信息。这种信息是对前几层特征的补充,而且对深层高维特征的补充,但仍然缺乏空间信息。
3. 解决方案
提出了RefineNet,一个一般的多路改进网络,能够显式地利用下采样过程中所有可用的信息,使用long-range残差连接实现高分辨率预测。RefineNet能够混合粗糙的高维语义特征和细粒度的低维特征,生成高分辨率的语义特征图。这样保证了网络能够很容易的通过网络的long-range残差连接反向传播到较早的低维层。
捕获高维语义特征的更深层可以使用前几层细粒度的特征来直接改善。RefineNet的独立组件根据恒等映射习惯利用残差连接,使得更高效的end-to-end训练。使用连接的残差池化,捕获丰富的上下文背景。
4. 整体结构
将预训练的Resnet根据特征图的分辨率分成4个block,利用4个级联的结构-refinenet单元,每一个都和一个resnet块和上一步refinenet块直接相连。
-
RefineNet-3的目标是使用来自RefineNet-3的高分辨率的特征来修正RefineNet-4输出的低分辨率的特征。最后一步,高分辨率的特征图传入softmax层,进行最终预测,得到密集的分数图。分数图然后上采样匹配原始图像大小。
作者把Resnet block和RefineNet模块之间的饿连接就叫做long-range残差连接
在前向传播过程中,long-range残差连接convey编码了visual细节的低维特征来修正粗糙的高维特征图。
4.1 RefineNet介绍
- RefineNet block的第一部分是一个适应性的卷积集合,主要用于微调Resnet的预训练权重。
每个input path通过2个RCU线性传递
-
RCU 残差卷积单元是原始resnet卷积单元的简单版本,移除了bn层。
-
Multi-resolution fusion
所有的path input通过Multi-resolution fusion block融合进一个高分辨率的特征图。
首先通过卷积生成相同维度的特征图,然后上采样小特征图至最大的分辨率。最后将所有特征图求和。
-
Chained residual pooling
链式的残差池化用于捕获大图像范围的背景上下文。使用多种窗口大小来pool特征,通过可学习的权重来融合这些特征。
这个组件是将多个池化块连接起来,每个池化块由一个最大池化和一个卷积层组成。当前池化块可以重用之前池化操作的结果,因此不需要使用大的池化窗口就可以从大region获取特征。
所有池化块的输出特征图通过残差连接的求和操作和输入特征图融合。
池化层后边的卷积层的作用:求和操作的加权层,卷积层能调节训练过程池化块的重要性。
-
Output convolutions
RefineNet包括short-range和long-range残差连接,短期残差连接指的是一个RCU或残差池化组件中的local shortcut,长期连接指的是RefineNet模块和ResNet块之间的连接。
5. 启发
-
高维语义特征能够帮助图像区域的类别识别,低维特征能生成尖锐、细节的边界,用于高分辨率预测。
如何高效利用中间层特征仍然是一个开放性问题。
-
作者对所有的卷积单元引入残差连接,使得梯度能够高效反向传播,使得多级联RefineNet得到高效训练。
-
作者在Chained residual pooling中使用了ReLU层,ReLU对于随后的池化操作非常有效,使得模型对于学习率的变化不那么敏感。