参考代码:DUpsampling
1. 概述
导读:目前流行的语义分割网络架构都是编解码结构的,往往在解码器的最后是添加一个upsampling(图像的双线性插值)实现decoder输出与训练标注的尺寸一致,但是对于这样的实现文章指出这是一种过于简单且非数据依赖的操作,可能会导致结果并非最优。对此这篇文章从upsampling角度出发,从而提出了一种新的上采样方式DUpsampling(data-dependent upsampling),文章提出的方法使用最小化映射误差的方式计算变化矩阵(可以通过 1 ∗ 1 1*1 1∗1的卷积实现),从而将upsampling与标注数据关联起来,从而使得pixel-wise的输出更加准确,尤其是在一些低分辨率特征尺寸是原输入图像的 1 16 , 1 32 \frac{1}{16},\frac{1}{32} 161,321的时候文章的方法能获取较为明显的提升,并且采用了这样的upsampling方法可以在网络设计的时候极大减少decoder部分的计算量,因而文章提出的upsampling方法具有如下的优点:
1)极大提升网络重建分割结果的能力,并且减少decoder计算量(使用文章的策略);
2)文章的犯法具有较好的扩展性,能够在当前的很多分割网络上使用;
文章的方法在PASCAL VOC与PASCAL Context两个数据集上达到了SOTA,其性能分别为88.1%和52.5%mIoU。
在图1中展示的是DeepLab-V3的编解码结构,其中在stride为8与4的时候进行了一次上采样操作。
文章指出这样的结构其实是限制了分割的性能,其采用的双线性上采样算法并没有考虑像素之间的关联性,是数据无关的。这样的结果就导致了网络需要较浅层(更高分辨率)的特征做融合,从而构建更加精细的分割结果,但是这样随之会产生两个问题:
- 1)将原有网络的stride从32降低到8,并且使用膨胀卷积扩大感受野,这样会导致较大的计算与内存开销,从而限制了整体网络的运算速度;
- 2)decoder为了更好的分割结果需要融合stride=4的特征,因而分割网络的性能很大程度上依赖于低层次的特征,这正是使用普通非数据依赖双线性上采样的结果。这样的decoder结构限制了进行特征融合的空间,将网络限制到了局部解里面。而使用文章的方法就可以将为了性能而引入高分辨率特征的约束打破;
2. 方法设计
2.1 网络结构
若分割网络解码器输出的特征图为 F ∈ R H ^ ∗ W ^ ∗ C ^ F\in R^{\hat{H}*\hat{W}*\hat{C}} F∈RH^∗W^∗C^,而对应的标注为 Y ∈ { 0 , 1 , 2 , … , C } H , W , Y ∈ { 0 , 1 } H ∗ W ∗ C Y\in \{0,1,2,\dots,C\}^{H,W},Y\in\{0,1\}^{H*W*C} Y∈{ 0,1,2,…,C}H,W,Y∈{ 0,1}H∗W∗C,那么特征图与标注之间的尺度比例关系为 H ^ H = W ^ W = 1 16 o r 1 32 \frac{\hat{H}}{H}=\frac{\hat{W}}{W}=\frac{1}{16}or\frac{1}{32} HH^