代码地址(非官方):DFN-tensorflow
1. 概述
导读:现有的语义分割方法中依然存在两个方面的问题:类内不一致(一个类别中被分割多个类别,intrea-class inconsistency)与 类间不确定性(不同类的目标被当成一个类,inter-class indistinction)。针对这两个问题呢,文章没有从逐像素分类的角度而是从更加宏观整体的角度去考虑分割问题,从而提出了DFN(Discriminative Feature Network)网络,其中包含了两个子网络:平滑网络(Smooth Network)与边界网络(Border Network)。在平滑网络中使用通道上的注意力模块(Channel Attention Block ,CAB)与全局平均池化选择更具区别性的特征,解决类内分割不连续性。在边界网络中使分割目标边界的双边特征在语义边界监督下(语义边界损失)得其以区分。这篇文章的分割方法在VOC数据集上达到了86.2%的IoU,CityScapes上80.3%。
下面图1的两行分别代表的是类内不连续与类间不确定性带来的问题例子,最后一列是文章方法得到的结果。
2. 方法设计
2.1 网络结构
文章的网络结构见上图所示,文章的网络主要划分为三个部分:边界子网络、backbone、平滑子网络。边界子网络自底向上使用底层丰富的细节信息开始不断优化分割的边界。平滑子网络则是自上而下的使用高stage的特征不断丰富上下文语义信息,从而减少类间分割的不连续性。
2.2 平滑子网络
2.2.1 Channel attention block:
在FCN中会通过卷积操作生成一个score map,它表示的是每个类别在该像素位置上的的概率,则最后的score可以看成是所有通道特征图的和:
y
k
=
F
(
x
;
w
)
=
∑
i
=
1
,
j
=
1
D
w
i
,
j
x
i
,
j
y_k=F(x;w)=\sum_{i=1,j=1}^{D}w_{i,j}x_{i,j}
yk=F(x;w)=i=1,j=1∑Dwi,jxi,j
其中,
x
x
x代表的是输出的网络特征,
w
w
w是卷积核,
k
∈
{
1
,
2
,
…
,
K
}
k\in\{1,2,\dots,K\}
k∈{1,2,…,K},代表不同的channel,
D
D
D代表特征图上的位置。则最后的结果可以使用softmax形式的计算得到:
δ
(
y
k
)
=
e
x
p
(
y
k
)
∑
j
=
1
K
e
x
p
(
y
j
)
\delta(y_k)=\frac{exp(y_k)}{\sum_{j=1}^{K}exp(y_j)}
δ(yk)=∑j=1Kexp(yj)exp(yk)
预测的结果是
y
0
y_0
y0,而实际的标签是
y
1
y_1
y1,这里使用
α
=
S
i
g
m
o
i
d
(
x
;
w
)
\alpha=Sigmoid(x;w)
α=Sigmoid(x;w)完成从预测结果到标注的变化,这里的权值是使用sigmoid实现的。
这里引入CAB的一个重要作用就是调和不同stage上特征的区分能力,不同阶段的特征具有不同程度的区分能力,这导致预测的不同一致性。同时为了并抑制不具有判别能力的特征。
下图是CAB模块的示意图:
这个模块在网络中的具体设计见下图:
2.2.2 Refinement residual block:
这个模块采用了类似残差网络的形式,用以细化特征与增强每个stage上重建的能力。其结构见下图所示:
下面是平滑子网络的实验结果:
2.3 边界子网络
在分割任务中常常被具有相似视觉特征的目标所干扰,对此这里使用语义边界信息去指导对应特征的学习。为了能够获得更加准确的语义边界,这里显式使用了语义边界的监督。
在网络中低层级的特征具有更丰富的细节特征,而高层次的特征就含有更多的语义信息,对此这里设计了一个自下而上的网络结构,从下到上获得准确的边界信息。这里使用到的监督信息是使用Canny算子在分割GT上获取到的。
为了平衡正负样本,这里使用了focal loss来进行样本均衡,其表达为:
F
L
(
p
k
)
=
−
(
1
−
p
k
)
γ
l
o
g
(
p
k
)
FL(p_k)=-(1-p_k)^{\gamma}log(p_k)
FL(pk)=−(1−pk)γlog(pk)
下面是使用边界子网络进行训练得到的实验结果:
2.3 网络损失函数
整个网络的损失由平滑网络与边界网络组成,这两个损失通过
λ
\lambda
λ进行调和,其具体形式为:
下面是不同的
λ
\lambda
λ值对于网络性能的影响,基于下面的实验结果将其值取为0.1;
3. 实验结果
3.1 网络性能
VOC2012数据集:
CityScapes数据集:
3.2 消融实验
随机尺度缩放数据增广:
平滑网络对性能的影响:
边界子网络对性能的影响:
就实验结果来说,平滑子网络相比边界子网络其对网络性能的提升更为明显。