Weakly supervised Semantic Segmentation by Pixel-to-Prototype Contrast

通过引入cross-view和intra-view的约束,提升类内一致性(intra-class compactness)和类间区分性(inter-class dispersion)。优点就是在不增加推理计算量的情况下,提升(弱)监督场景下的分割效果。我觉得这样的约束,在强监督场景下也可以使用,弥补交叉墒损失的缺陷。

CAM计算

CAM: Class Activation Map
以图像分类问题为例,经过backbone提取特征后,最后一个卷积的特征为 f ∈ R D × H W f \in R^{D\times HW} fRD×HW H W HW HW为特征图维度, D D D为通道维度。再用一个 G l o b a l   A v e r a g e   P o o l i n g   ( G A P ) Global \, Average\,Pooling\,(GAP) GlobalAveragePooling(GAP)聚合空间特征。最后用一个 w ∈ R C × D w\in R^{C\times D} wRC×D映射到类别空间。
本文在计算CAM时,直接对特征 f f f做一个通道数为 C C C的1x1卷积,得到 f ′ ∈ R C × H W f^{'} \in R^{C\times HW} fRC×HW。对 f ′ f^{'} f做个 R e L U ReLU ReLU操作,得到CAM。在 f ′ f^{'} f的基础上,做一个 G A P GAP GAP操作,得到每个类别 c c c s c o r e score score

Pixel-to-Prototype Contrast

每个类别,都存在一个具有代表性的 e m b e d d i n g embedding embedding,也就是 p r o t o t y p e prototype prototype, 用 P = { p c } c = 1 C P=\{{p_c}\}^{C}_{c=1} P={pc}c=1C来表示。这里的目标就是在投影特征空间,通过对比学习,让每个像素学到具有区分性的特征 e m b e d d i n g embedding embedding。这篇文章中,投影空间中,每个像素embedding v i ∈ R 128 v_i\in R^{128} viR128,通过1x1卷积+ReLU得到。核心思想就是推远每个像素和其他类别prototype之间的距离,拉近每个像素和正确类别prototype之间的距离。loss计算如下,比较像交叉墒损失。
F ( v i ; y i ; P ) = − l o g e x p ( v i ⋅ p y i / τ ) ∑ p c ∈ P e x p ( v i ⋅ p c / τ ) F(v_i;y_i; P) = -log\frac{exp(v_i\cdot p_{y_i}/\tau)}{\sum_{p_c\in P}exp(v_i\cdot p_c / \tau)} F(vi;yi;P)=logpcPexp(vipc/τ)exp(vipyi/τ)
y i ∈ [ 1 , 2 , . . . , C ] y_i\in [1, 2, ..., C] yi[1,2,...,C]是像素 i i i的伪标签,用来决定positive prototype。 τ \tau τ是温度参数,通常设为0.1。

Prototype Estimation

训练过程中,对一整个训练batch的所有伪标签为 c c c的像素,选择topK置信度的像素用以估计对应类别的 p r o t o t y p e prototype prototype。计算方式为每个像素embedding的加权平均,如下所示;再对每个prototype做L2归一化处理。
p c = ∑ i ∈ Ω c m c , i v i ∑ i ′ ∈ Ω c m c , i ′ p_c = \frac{\sum_{i \in\Omega_c}m_{c,i}v_i}{\sum_{i^{'}\in\Omega_c}m_{c, i^{'}}} pc=iΩcmc,iiΩcmc,ivi
这在强监督场景下,完全可以使用gt标签,来完美计算出每个类别的 p r o t o t y p e prototype prototype

Cross-view Contrast

L c r o s s = L c p + L c c L^{cross} = L^{cp} + L^{cc} Lcross=Lcp+Lcc

Cross Prototype Contrast

L c p = 1 ∣ I ∣ ∑ i ∈ I F ( v i ; y i ; P ′ ) L^{cp} = \frac{1}{|I|}\sum_{i\in I} F(v_i; y_i; P^{'}) Lcp=I1iIF(vi;yi;P)
用另一个view的prototype来约束当前view。

Cross CAM Contrast

L c c = 1 ∣ I ∣ ∑ i ∈ I F ( v i ; y i ′ ; P ) L^{cc} = \frac{1}{|I|}\sum_{i\in I} F(v_i; y_i^{'}; P) Lcc=I1iIF(vi;yi;P)
用另一个view的伪标签决定positive prototype和negative prototype。

Intra-view Contrast

L i n t r a = 1 ∣ I ∣ ∑ i ∈ I F ( v i ; y i ; P ) L^{intra} = \frac{1}{|I|}\sum_{i\in I}F(v_i; y_i; P) Lintra=I1iIF(vi;yi;P)
只是单纯的引入 L i n t r a L^{intra} Lintra会导致效果下降。因为弱监督的场景设定下,像素 i i i的伪标很可能不对,会导致不正确的对比。所以本文又提出了semi-hard Prototype Mining的解决方案,此处不赘述。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值