语义分割的解码器问题:依赖数据的解码使灵活的特征聚集成为可能
Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregation
摘要
【背景】最近的语义分割方法利用编码器-解码器结构产生了想要的像素级别的分割预测。解码器的最后一层通常是一个双线性上采样过程,以恢复最终的像素基本的预测。我们经验上表明,这个过于简单且独立于数据的双线性上采样可能导向次最优结果。
【本文工作】本文中,我们提出了依赖数据的上采样(
data-dependent upsampling, DUpsampling
)代替双线性插值。利用了标签空间中的冗余信息,能够从CNN的低分辨率输出中覆盖像素级别的预测。新的上采样层的主要优点在于,很低的分辨率(如 1 16 \frac{1}{16} 161或者 1 32 \frac{1}{32} 321),我们能达到甚至更好的分辨率,并显著减少计算复杂度。原因:(1)新的上采样层很大程度上改善了重建能力。更重要的是(2)基于解码器的灵活性的DUpsampling使用了几乎任意的CNN编码器特征的组合。【试验】在
PASCAL VOC
数据集上的实验表明,计算量更少,我们的解码器是最先进的解码器。最终,没有任何后处理的情况下,装配有我们提出的解码器的框架在两个数据集上取得了最优的结果:在PASCAL VOC
上88.1%的mIOU
,比之前最佳模型少了30%的计算量。在PASCAL Context
上是52.5%的mIOU
。
使用的框架
将原来的上采样,换成下图这种作者自己设计的DUpsampling
:
上采样率通常是16或者32.
F
F
F是CNN的输出,
R
R
R是最终的图。W
代表设计的上采样算法:
超越双线性:依赖数据的上采样
首先看一下最简单的解码器:
F ∈ R H ~ × W ~ × C ~ F\in\mathbb{R}^{\tilde{H}\times\tilde{W}\times\tilde{C}} F∈RH~×W~×C~:编码器CNN的最终输出
Y
∈
{
0
,
1
,
2
,
⋯
,
C
}
H
×
W
Y\in\{0,1,2,\cdots,C\}^{H\times W}
Y∈{0,1,2,⋯,C}H×W:ground truth
标签图
C C C:分割类别数目
C ~ \tilde{C} C~:最终输出的通道数
Y
Y
Y通常被编码成one-hot
,即变成
Y
∈
{
0
,
1
}
H
×
W
×
C
Y\in\{0,1\}^{H\times W\times C}
Y∈{0,1}H×W×C`,F通常是Y的16或32倍。
通常的损失函数是:
L
(
F
,
Y
)
=
L
o
s
s
(
s
o
f
t
m
a
x
(
b
i
l
i
n
e
a
r
(
F
)
)
,
Y
)
L(F,Y)=Loss(softmax(bilinear(F)), Y)
L(F,Y)=Loss(softmax(bilinear(F)),Y)
Loss
通常就是交叉熵损失,通过使用atrous
卷积(带孔卷积),尝试将
Y
Y
Y压缩成
Y
∈
R
H
~
×
W
~
×
C
~
Y \in\mathbb{R}^{\tilde{H}\times\tilde{W}\times\tilde{C}}
Y∈RH~×W~×C~,然后计算
F
F
F和
Y
Y
Y之间的损失。
通过简单的线性投影
(linear projecting
)就可以完成这个压缩。
x
=
P
v
;
v
~
=
W
x
,
P
∈
R
C
~
×
N
x=Pv;\tilde{v}=Wx,P\in \mathbb{R}^{\tilde{C}\times N}
x=Pv;v~=Wx,P∈RC~×N
通过最小化
v
v
v和
v
~
\tilde{v}
v~之间的重建误差得到
P
P
P和
W
W
W:
P
∗
,
W
∗
=
arg
min
P
,
W
∑
v
∥
v
−
v
~
∥
2
=
arg
min
P
,
W
∑
v
∥
v
−
W
P
v
∥
2
\begin{array}{c}{\mathbf{P}^{*}, \mathbf{W}^{*}=\underset{\mathbf{P}, \mathbf{W}}{\arg \min } \sum_{v}\|\boldsymbol{v}-\tilde{\boldsymbol{v}}\|^{2}} \\ {=\underset{\mathbf{P}, \mathbf{W}}{\arg \min } \sum_{\boldsymbol{v}}\|\boldsymbol{v}-\mathbf{W} \mathbf{P} \boldsymbol{v}\|^{2}}\end{array}
P∗,W∗=P,Wargmin∑v∥v−v~∥2=P,Wargmin∑v∥v−WPv∥2
然后损失函数就变成了:
L
(
F
,
Y
)
=
∣
∣
F
−
Y
~
∣
∣
2
L(F,Y)=||F-\tilde{Y}||^2
L(F,Y)=∣∣F−Y~∣∣2
但是作者没有这样压缩,而是上采样了
F
F
F(❓❓❓),接着计算
F
F
F和
Y
Y
Y的像素分类损失:
L
(
F
,
Y
)
=
L
o
s
s
(
s
o
f
t
m
a
x
(
D
U
p
s
a
m
p
l
e
(
F
)
)
,
Y
)
L(F,Y)=Loss(softmax(DUpsample(F)), Y)
L(F,Y)=Loss(softmax(DUpsample(F)),Y)
这个上采样,就是用一个1x1的卷积。