【图像分割模型】多分辨率特征融合—RefineNet
这是专栏《图像分割模型》的第8篇文章。在这里,我们将共同探索解决分割问题的主流网络结构和设计思想。
RefineNet,教你在实现特征融合与残差恒等映射的同时,怎么找回降下来的空间分辨率。
作者 | 孙叔桥
编辑 | 言有三
本期论文
《RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation》
1 恢复空间分辨率
在分割任务中,为了提取更复杂的特征、构建更深的神经网络,许多算法往往会以牺牲空间分辨率的方式,在尽量少地增加计算量的前提下,换取特征通道数的增加。虽然这种方式有诸多优点,但是也有一个明显的缺陷——空间分辨率的下降。
尽管我们之前已经了解了诸多图像分割的经典算法,但是其中并没有哪个网络结构能够充分利用完整的空间信息来恢复图像的空间分辨率(包括空洞卷积和编解码结构)。因此,这篇文章我们就共同来看看,如何找回这些丢失的分辨率信息。
下图分别是残差结构和空洞卷积在提取稠密分割结果时的操作流程:
很明显,残差结构直接损失了空间分辨率。虽然空洞卷积在一定程度上减小了残差结构空间分辨率的损失,但是其训练的代价是非常高昂的(即使在GPU上)。出于这种考虑,如下图所示的RefineNet被设计出来了:
下面我们具体聊一下RefineNet的网络结构和设计思想。
2 全局特征的提取与融合
为了让大家对网络结构有一个整体的印象,这里先上网络的整体结构图:
RefineNet总共包括三大模块:残差卷积模块(RCU,Residual Convolution Unit)、多分辨率融合模块(Multi-Resolution Fusion)和串联残差池化模块(Chained Residual Pooling)。
(1) RCU模块
RCU模块的结构如下图所示:
每个RCU模块包括一个ReLU层和一个卷积层,网络结构中,每个分辨率下应用两个串联的RCU模块,用于提取该分辨率下的分割结果的残差,最后以相加的形式校正该分辨率下的原始分割结果。
(2) 多分辨率融合
下图是多分辨率融合部分的详细结构:
在给定了多分辨率下经过处理的分割结果后,各个结果将依次通过一个卷积层和一个上采样层,形成空间分辨率统一的分割结果图。
具体而言,网络首先通过一个卷积层处理输入进来的不同分辨率下的分割结果,从而学习得到各通道下的适应性权重。随后,应用上采样,统一所有通道下的分割结果,并将各通道结果求和。求和结果送入下一个模块。
(3) 串联残差池化
下图是这一模块的结构图:
前两个模块主要用于将不同分辨率下的分割结果进行整合,通过学习得到的残差先校正单独的分割结果;再通过习得的权重,对所有通道下的结果加权求和。而这一部分的作用则是进一步通过残差校正的方式,优化前两步融合得到的分割结果。
这个模块主要由一个残差结构、一个池化层和一个卷积层组成。其中,池化层加卷积层用来习得用于校正的残差。值得注意的是,RefineNet在这里用了一个比较巧妙的做法:用前一级的残差结果作为下一级的残差学习模块的输入,而非直接从校正后的分割结果上再重新习得一个独立的残差。
这样做的目的,RefineNet的作者是这样解释的:可以使得后面的模块在前面残差的基础上,继续深入学习,得到一个更好的残差校正结果。
最后,网络又经过一个一个RCU模块,平衡所有的权重,最终得到与输入空间尺寸相同的分割结果。
3 网络结构变种
除了上述的基础网络结构,RefineNet还可以存在下面几种变种。
(1) 单个RefineNet
(2) 2次级联的RefineNet
(3) 4次级联2倍RefineNet
4 实验结果
RefineNet在NYUv2数据库、PASCAL VOC 2012数据库和Cityscapes数据库下都有实验验证。下表是其在NYUv2下的结果(40类):
下表是其在Cityscapes下的结果:
由于在PASCAL VOC 2012下的对比表格太大,如果感兴趣的话,建议直接查阅原文。下图是语义分割问题上的直观结果:
除了语义分割,RefineNet还可以用于目标理解(object parsing)。下表是其在目标理解上的表现:
下图是RefineNet在目标理解上的直观结果:
总结
本文我们了解了如何利用残差网络将不同分辨率下的分割结果有效融合,并得到原始分辨率下的稠密分割图。到此为止,主流的语义分割网络结构就基本说完了。下期我们进入语义分割的最后一部分:循环神经网络。
本周直播
今日看图猜技术
今日知识汇总
有三AI生态