Splitting Vs. Merging: Mining Object Regions with Discrepancy and Intersection Loss for Weakly Supervised Semantic Segmentation
摘要
本文关注于image-level的WSSS任务。本文通过训练一个region-mining模块准确高亮目标区域以生成高质量伪掩码。然而这个模块只在最有辨识度的区域高亮,本文通过一个新的优化过程解决这一问题。我们提出一个Splitting vs. Merging优化策略,这个策略主要由Discrepancy loss和Intersection loss。Discrepancy loss旨在挖掘不同的空间区域,而不只是最有辨识度的区域;Intersection loss旨在挖掘不同maps的common区域。通过这一策略可以有效拓展热力图。
1 Introduction
pixel-level标注费时费力,因此出现了弱监督。然而对于弱监督,一般模型只会分割出最有辨识度的区域,主要是因为只有classification loss。
有些人用区域擦除来解决这一问题,当然区域擦除需要频繁重复做训练和擦除过程。区域擦除从前传的角度看问题,而我们的方法从反传的角度看问题。从本质上讲,我们的目标是搜索满足分类目的的不同空间图案的localization maps,所有maps的联合可以突出整个目标区域。由此我们提出了Discrepancy loss。我们加入Intersection loss解决分裂效应。
本文的contributions:
- 我们提出从反向传播的新角度扩展区域挖掘模型生成的突出显示区域。
- 提出Discrepancy loss挖掘localization maps的不同区域的图案,这导致了localization maps的分裂效应。
- 提出Intersection loss缓解分裂效应,这导致了合并效应。
- 通过实验证明了策略的有效性。
2 Related Works
3 Approach
本章首先重温CAM,然后介绍两个loss,最后对localization maps归一化,生成伪掩码并进行训练。
3.1 Revisiting CAM
CAM在以前的文章中已经讲了很多了,在这里不再赘述,本文用的是CAM的一个变体。如Fig. 1所示,从特征提取器出来的特征图
X
∈
R
W
×
H
×
D
X\in\mathbb R^{W×H×D}
X∈RW×H×D,D是特征维度。从分类器中出来的S是
S
∈
R
W
×
H
×
C
S\in\mathbb R^{W×H×C}
S∈RW×H×C,C是类别数。然后用GAP得到image-level prediction score
s
∈
R
C
s\in\mathbb R^C
s∈RC。score map S其实就是localization maps。
3.2 Splitting vs. Merging
我们的结构由Reference Stream和Expanding Stream组成。Reference Stream就是原先的CAM。
Expanding Stream和正常的CAM类似,但是它有两个patch-level classifiers,接下来我们看看Discrepancy loss长什么样儿:
L
d
i
s
c
=
−
1
H
W
C
∑
i
,
j
,
c
∣
∣
z
i
j
c
A
−
z
i
j
c
B
∣
∣
\mathcal L_{disc}=-\frac{1}{HWC}\sum_{i,j,c}||z_{ijc}^A-z_{ijc}^B||
Ldisc=−HWC1i,j,c∑∣∣zijcA−zijcB∣∣
其中,
z
i
j
c
A
=
e
s
i
j
c
A
∑
i
,
j
e
s
i
j
c
A
z_{ijc}^A=\frac{e^{s_{ijc}^A}}{\sum_{i,j}e^{s_{ijc}^A}}
zijcA=∑i,jesijcAesijcA
s
i
j
c
A
s_{ijc}^A
sijcA是
S
A
S_A
SA对应位置的值,i,j是位置,c是类别。B的相关计算同A。
想要让loss越来越小,两个z的距离应该越来越大(注意loss函数前面有个负号,我之前忽略了这个,半天也没理解这个loss函数),这样Discrepancy loss就促进生成两个不同空间图案的maps。但是单单使用这个loss,会导致得到的图案是偏于分裂的(我想是因为两个score map的距离越来越远,因此这两个map上score的分布越来越不一样)。为了解决这个问题,作者又提出了后面的Intersection loss,也就是Fig. 2中的Cls loss inter。
S
i
n
t
e
r
S_{inter}
Sinter也是一个score map,每个位置都取
S
A
,
S
B
S_A,S_B
SA,SB中对应位置score比较小的值,然后对
S
i
n
t
e
r
S_{inter}
Sinter做GAP,然后求分类损失,这里和CAM都是一样的,这样做的目的就是强迫
S
A
,
S
B
S_A,S_B
SA,SB中score低且和类别关联性强的像素点的score提高,这样就解决了分裂的问题。
3.3 Mask Generation
对于每个localization map S S S(i.e., S A , S B , S C S_A,S_B,S_C SA,SB,SC),我们先让他们通过RELU层,然后执行对每个类别通道执行min-max normalization得到normalized map M ( i . e . , M A , M B , M C ) M(i.e., M_A,M_B,M_C) M(i.e.,MA,MB,MC)。最终这些map的融合取每个像素点value最高的值(例如 U ( S A , S B ) ∈ ( 0 , 1 ) , U 代 表 融 合 操 作 U(S_A,S_B)\in(0,1),U代表融合操作 U(SA,SB)∈(0,1),U代表融合操作)。
问题:什么是min-max normalization?
回答:就是常见的归一化,映射到[0,1]之间,具体看下图:
我们用denseCRF做后处理,denseCRF的一元项是normalized localization maps M ( M A , M B , U ( S A , S B ) 等 等 ) M(M_A,M_B,U(S_A,S_B)等等) M(MA,MB,U(SA,SB)等等)。这些maps只能得到前景的概率,背景的概率由 M b g = ( 1 − M f o r e ) α M_{bg}=(1-M_{fore})^{\alpha} Mbg=(1−Mfore)α得出。我们利用normalized saliency score M s a l ∈ ( 0 , 1 ) M_{sal}\in(0,1) Msal∈(0,1)(由显著性检测的模型得到,如PoolNet)和normalized localization maps M M M去计算 M f o r e ( i , j ) = m a x ( m a x c M i j c , M s a l i j ) M_{fore}(i,j)=max(max_cM_{ijc},M_{sal}^{ij}) Mfore(i,j)=max(maxcMijc,Msalij)。
这样我们就得到了背景map M b g M_{bg} Mbg,然后让 M b g , M M_{bg},M Mbg,M作为denseCRF的一元项生成伪掩码就可以了。