Weakly Supervised Semantic Segmentation with Boundary Exploration
摘要
用image-level标注解决弱监督语义分割(WSSS)任务最近吸引了很多人的目光,因为这种标签可以在很多数据集中获得。为了在弱监督下完成语义分割,本文提出了一种简单有效的方法,该方法基于从训练图像中明确探索目标边界以保持分割结果和实际边界重合的思想。具体来讲, 我们通过利用CNN分类器获得的粗糙localization maps合成边界标注,并使用标注来训练所提出的名为BENet的网络,该网络进一步挖掘更多的目标边界以提供分割约束。最后,使用通过训练图像获得的伪标注监督现有的分割网络。我们在PASCAL VOC上进行了相关实验。
1 Introduction
深度学习和卷积神经网络(CNNs)在CV领域获得了巨大成功,例如语义分割。受场景识别要求的驱动,各种模型被提出以精确分割图像中的前景。然而,手动标注语义分割网络的训练集数据是麻烦的。为了减轻这种pixel-level标注工作的负担,弱监督语义分割学习被采纳,这种方法使用弱标注完成语义分割工作,这些标注包括bounding boxes,scribbles和image-level labels。其中image-level labels被广泛应用,因为其在很多数据集中都容易获得(如VOC和MS COCO)。
虽然利用image-level label常见且方便,但这类标注有个关键问题。分类任务要求平移不变性(invariance)但是分割任务对位置更加敏感且要求平移可变性(variance)。为了解决这一问题,Class Activation Maps (CAM)提出通过在全卷积网络的顶端位置加入一个global average pooling (GAP)来获得class localization maps以克服分类和分割的固有差距。然而,这种结构趋于激活有辨别性的区域,得到的分割结果不完整。在最近的工作中,CAM通常作为新添加的方法的一个基本localization技术,新提出的方法对其进行改进。然而,大部分方法关注于传播前景区域而不考虑分割和形态边界的重合,这成为了限制分割效果的关键问题。在许多情况下,如果其传播不受目标边界的限制,很可能把不属于它的部分也分割出来。
即使目标边界和影响分割效果的关键因素,但是缺少了边界标注和像素级的信息我们很难挖掘到它。在本文的工作中,我们提出了boundary exploration based segmentation(BES)方法,这一方法明确探索了目标边界以提炼训练图像的语义分割。更准确地说,我们提出了一个简单的方法,通过过滤(filter)获得的localization maps去获得小数量的目标边界标注,然后被合成边界标注训练过的BENet网络明确地探索更多的目标边界。最后,大量被探索到的边界信息被用来为localization maps传播提供约束 。
本文主要的contributions如下:
- 提出的BES方法可以用image-level标注清晰地探索目标边界。
- 为了得到可靠的初始localization maps,我们介绍了一种名为attention-pooling的模块来改善CAM的效果。
- 通过实验证明了我们的方法的效果。
2 Related Work
3 The Proposed Approach
BES的框架如图Fig. 1所示,其作用是通过训练图像得到语义分割。作为框架中最关键的一部分,boundary exploration旨在通过输入原始训练图像预测精确的boundary maps。边界标注从localization maps中手动合成,然后用其去训练BENet以预测边界。BENet的边界分类能力帮助探索用来修正localization maps的多数边界。框架的另一部分attention-pooling CAM是一个被改善的CAM,用来获得更好的初始目标localization maps。具体细节如下。
3.1 Boundary Exploration for Localization Maps
在本节,我们介绍了boundary exploration的设计和它如何被用来修正localization maps。我们首先利用localization maps合成小数量的可信的边界标注,然后这些标注被用来通过训练BENet去探索更多的边界cues。
Synthesizing Boundary Labels. 由于localization maps由像素级的类别probability组成,这不适合边界标注合成,因此我们首先将probability转换成每个像素的某类标签。假设
P
i
c
P_i^c
Pic为像素
i
i
i属于类别
c
∈
C
c\in C
c∈C的probability。通过以下阈值转换得到像素
i
i
i的分类结果
y
^
i
\hat{y}_i
y^i:
y
^
i
=
{
a
r
g
max
c
∈
C
(
P
i
c
)
i
f
max
c
∈
C
(
P
i
c
)
>
θ
f
g
0
i
f
max
c
∈
C
(
P
i
c
)
<
θ
b
g
255
o
t
h
e
r
w
i
s
e
\hat{y}_i= \left\{\begin{array}{rcl} arg\max_{c\in C}(P_i^c) &if& \max_{c\in C}(P_i^c)>\theta_{fg} \\ 0 &if& \max_{c\in C}(P_i^c)<\theta_{bg} \\ 255&&otherwise \end{array}\right.
y^i=⎩⎨⎧argmaxc∈C(Pic)0255ififmaxc∈C(Pic)>θfgmaxc∈C(Pic)<θbgotherwise
其中0和255表示背景标注和不确定标注,
θ
f
g
,
θ
b
g
\theta_{fg}, \theta_{bg}
θfg,θbg是前背景阈值,用于过滤不确定标注像素。另外使用dCRF操作提炼可靠的前背景区域。
问题:dCRF是什么?
回答:dCRF:图像语义分割之FCN和CRF
更简单的解读:DeepLabv1补充:对全连接条件随机场(Fully Connected / Dense CRF)的理解
我们注意到虽然localization maps有一些错误分类的像素,但它在边界附近的表现很好。换句话说,边界前背景像素分类结果很可靠。根据边界的定义,我们假设存在这样的边界,其邻近区域包含大概相同数量的前景和背景像素。基于此,我们用一个滑窗记录当前位置相同像素的数量并利用统计信息来确定窗口中心的像素是否为边界 。滑窗中心在像素
i
i
i位置,滑窗大小为
w
w
w,我们用
N
i
c
N_i^c
Nic代表滑窗中标签为
c
c
c的像素的数量。滑窗的每个类别的统计比例为
S
i
c
S_i^c
Sic:
S
i
c
=
N
i
c
w
×
w
∀
c
∈
C
∪
{
0
}
S_i^c=\frac{N_i^c}{w×w}\forall c\in C\cup \{0\}
Sic=w×wNic∀c∈C∪{0}
满足以下两个条件的像素将会被标记为边界。第一,在滑窗中存在足够多的相同像素来支持推理。第二,窗口中前景和背景区域的大小足够接近。像素
i
i
i的边界标注
B
^
i
\hat{B}_i
B^i根据如下计算:
B
^
i
=
{
0
i
f
m
i
n
{
max
c
∈
C
S
i
c
,
S
i
0
}
>
2
θ
s
c
a
l
e
a
n
d
∣
max
c
∈
C
S
i
c
−
S
i
0
∣
≥
2
θ
d
i
f
f
1
i
f
m
i
n
{
max
c
∈
C
S
i
c
,
S
i
0
}
>
θ
s
c
a
l
e
a
n
d
∣
max
c
∈
C
S
i
c
−
S
i
0
∣
<
θ
d
i
f
f
255
o
t
h
e
r
w
i
s
e
\hat{B}_i= \left\{\begin{array}{rcl} 0 & if & min\{\max_{c\in C}S_i^c, S_i^0\}>2\theta_{scale} and |\max_{c\in C}S_i^c-S_i^0|\geq2\theta_{diff} \\ 1& if & min\{\max_{c\in C}S_i^c, S_i^0\}>\theta_{scale} and |\max_{c\in C}S_i^c-S_i^0|<\theta_{diff} \\ 255 && otherwise \end{array}\right.
B^i=⎩⎨⎧01255ififmin{maxc∈CSic,Si0}>2θscale and ∣maxc∈CSic−Si0∣≥2θdiffmin{maxc∈CSic,Si0}>θscale and ∣maxc∈CSic−Si0∣<θdiffotherwise
其中
θ
s
c
a
l
e
,
θ
d
i
f
f
\theta_{scale}, \theta_{diff}
θscale,θdiff是两种情况的threshold,255代表像素的边界标注不确定。
边界附近的像素通常难以区分,这会对BENet的训练产生负影响。因此,上面的式子被设计成一个不连续的判别式,这样边界附近的像素将会和不确定标注被分配,且不会在训练阶段提供监督。Fig. 2展示了合成边界标注的过程。我们计算了localization map中每个像素的local statistics信息,由此获得了边界标注。
Relax Boundary Classification Loss for BENet Training. 在带有合成边界标注的输入图像的监督下,我们利用BENet直接预测boundary map
B
∈
[
0
,
1
]
w
×
h
\mathcal{B}\in[0,1]^{w×h}
B∈[0,1]w×h。在训练阶段,边界、前景和背景像素的数量存在显着差异,训练样本的不平衡会使模型预测倾向于抑制边界响应。为了解决这个问题,我们把训练数据分成三部分:边界像素,前景和背景像素。每部分的交叉熵分别计算,最终的boundary loss函数如下所示:
L
B
=
−
∑
i
∈
Φ
b
r
y
W
i
l
o
g
(
P
i
)
∣
Φ
b
r
y
∣
−
1
2
(
∑
i
∈
Φ
c
l
o
g
(
1
−
P
i
)
∣
Φ
c
∣
+
∑
i
∈
Φ
b
g
l
o
g
(
1
−
P
i
)
∣
Φ
b
g
∣
)
L_B=-\sum_{i\in \Phi_{bry}}\frac{W_ilog(P_i)}{|\Phi_{bry}|}-\frac{1}{2}(\sum_{i\in\Phi_c}\frac{log(1-P_i)}{|\Phi_c|}+\sum_{i\in\Phi_{bg}}\frac{log(1-P_i)}{|\Phi_{bg}|})
LB=−i∈Φbry∑∣Φbry∣Wilog(Pi)−21(i∈Φc∑∣Φc∣log(1−Pi)+i∈Φbg∑∣Φbg∣log(1−Pi))
其中,
Φ
b
r
y
=
{
i
∣
B
^
i
=
1
}
,
Φ
c
=
{
i
∣
B
^
i
=
0
,
max
c
∈
C
S
i
c
>
S
i
0
}
,
Φ
b
g
=
{
i
∣
B
^
i
=
0
,
S
i
0
>
max
c
∈
C
S
i
c
}
\Phi_{bry}=\{i|\hat{B}_i=1\}, \Phi_c=\{i|\hat{B}_i=0, \max_{c\in C}S_i^c>S_i^0\}, \Phi_{bg}=\{i|\hat{B}_i=0, S_i^0>\max_{c\in C}S_i^c\}
Φbry={i∣B^i=1},Φc={i∣B^i=0,maxc∈CSic>Si0},Φbg={i∣B^i=0,Si0>maxc∈CSic}分别是边界,前景和背景像素的集合。
P
i
P_i
Pi是BENet在像素
i
i
i上预测的boundary probability。合成的边界标注可能含有一些错误分类的样本,为了减少对合成边界标注的以来,我们通过在边界损失项(boundary loss term)中添加一个权重参数
W
i
W_i
Wi来放宽所有边界标注都是可靠的这一假设。实际上
W
i
W_i
Wi在在线训练上被设置成
P
i
\sqrt{P_i}
Pi。考虑到一个被标记成边界的像素,即
i
∈
Φ
b
r
y
i\in\Phi_{bry}
i∈Φbry,如果它通过BENet预测的boundary probability的值比较低(这说明它更可能是一个前景或背景),它对损失函数的贡献权重将会被减少以减弱对训练的影响。
Revising Localization Maps with Explored Boundaries. 训练后的BENet可以挖掘大量的目标边界。然后,我们使用预测的boundary maps作为约束来指导粗糙localization maps的传播并获得语义分割结果。和一些基于flood-fill的传播方法相比,random walk是一种修正localization maps的elegant的方法。我们采用《Weakly supervised learning of instance segmentation with inter-pixel relations》中的方法去把boundary maps
B
∈
[
0
,
1
]
w
×
h
\mathcal{B}\in[0,1]^{w×h}
B∈[0,1]w×h转换成语义亲和矩阵( semantic affinity matrix)。在这个矩阵中,像素
i
i
i和
j
j
j的亲和力记作
a
i
j
a_{ij}
aij,其值取决于从
i
i
i到
j
j
j的路径中的最大边界置信度。 为了优化计算效率,只有两个像素之间的距离小于阈值
γ
\gamma
γ时亲和力才被激活:
a
i
j
=
{
(
1
−
max
k
∈
∏
i
j
B
k
)
β
i
f
P
(
i
,
j
)
<
γ
0
o
t
h
e
r
w
i
s
e
a_{ij}= \left\{\begin{array}{rcl} (1-\max_{k\in\prod_{ij}}\mathcal{B}_k)^{\beta} & if & P(i,j)<\gamma \\ 0 && otherwise \end{array}\right.
aij={(1−maxk∈∏ijBk)β0ifP(i,j)<γotherwise
其中
∏
i
j
\prod_{ij}
∏ij是从
i
i
i到
j
j
j路径上的像素的集合,
P
(
i
,
j
)
P(i,j)
P(i,j)是
i
i
i和
j
j
j之间的欧氏距离,超参数
β
\beta
β是一个大于1的值,用来控制random walk传播的保守程度。
问题:什么是亲和矩阵?
回答:亲和矩阵,也称为相似性矩阵。亲和矩阵衡量一个空间中两点的距离或者相似度。在计算机视觉任务中,亲和矩阵通常表现为一个带权重的图,它将每个像素点视为一个节点并通过一条边连接每一对像素。具体可以查看这篇文章。
为了模拟random walk过程,语义亲和矩阵的元素值 a i j a_{ij} aij被视作transition probability。然后通过将矩阵乘localization maps来完成传播,模拟将迭代执行,直到达到预定义的迭代次数。最后,dense Conditional Random Field (dCRF)将会用于进一步改善分割质量。
3.2 Attention-Pooling CAM to Obtain Localization Maps
初始localization maps在BES方法中扮演了重要角色,它不仅仅被用来作为重新访问的种子区域(seed region),还被用来合成边界标注。获取localization maps的常用方法是使用CAM技术,通过在全卷积网络后面使用GAP实现。然而,许多工作提出,CAM 中使用的 GAP 将类别localization maps中的平均值作为分类的分数,隐式地为每个像素投票分配相等的权重,这将会激励不相关的区域。基于此,我们提出了一个新的称为attention-pooling的计算取代了CAM中的GAP操作。
Attention-Pooling for CAM. 我们保留了CAM中的全卷积网络(FCN)结构以捕捉目标的空间信息,改变了通过应用可以为像素动态分配不同权重的attention-pooling获得分类分数的计算。我们把类别
c
∈
C
c\in C
c∈C的localization map记为
M
c
M^c
Mc,其被卷积层embedded,
M
i
c
M_i^c
Mic是
M
c
M^c
Mc图中位置
i
i
i的激活值。attention map
A
c
A^c
Ac由每个类别的localization map
M
i
c
M_i^c
Mic生成,在
A
c
A^c
Ac的位置
i
i
i的attention value记作
A
i
c
A_i^c
Aic,其代表了分类分数
s
c
s^c
sc的
M
i
c
M_i^c
Mic的contribution weight。
s
c
s^c
sc通过求所有像素位置的相应的和得出,如下:
s
c
=
∑
i
(
M
i
c
×
A
i
c
)
∀
c
∈
C
s^c=\sum_{i}(M_i^c×A_i^c) \forall c\in C
sc=i∑(Mic×Aic) ∀c∈C
attention masks
A
c
A^c
Ac通过相关类别localization map
M
c
M^c
Mc的softmax函数生成:
A
i
c
=
e
x
p
(
k
M
i
c
)
∑
j
∈
J
e
x
p
(
k
M
j
c
)
∀
c
∈
C
A_i^c=\frac{exp(kM_i^c)}{\sum_{j\in\mathcal{J}}exp(kM_j^c)} \forall c\in C
Aic=∑j∈Jexp(kMjc)exp(kMic) ∀c∈C
其中
J
\mathcal{J}
J是
M
c
M^c
Mc中像素的集合,
k
k
k是调整attention强度的超参数。当
k
k
k被设置成0时,attention-pooling将会给每个像素分配相等的权重。随着
k
k
k值的增加,attention趋于关注有高响应值的像素点。一般来说,如果
k
k
k接近0,attention-pooling就接近于global average pooling(GAP),如果
k
k
k足够高就会接近于global max pooling。
训练之后,attention-pooling将会被移除,localization maps被归一化以获得class probability
P
i
c
P_i^c
Pic:
P
i
c
=
M
i
c
max
j
∈
J
M
j
c
∀
c
∈
C
P_i^c=\frac{M_i^c}{\max_{j\in\mathcal{J}}M_j^c} \forall c\in C
Pic=maxj∈JMjcMic ∀c∈C
综上所述,BES为每张训练图像生成了语义分割结果。