Joint Learning of Saliency Detection and Weakly Supervised Semantic Segmentation

论文地址

摘要

本文通过多任务联合框架用一个网络(SSNet)联合解决WSSS和SD任务。SSNet由segmentation network (SN)和saliency aggregation module (SAM)组成。对于一张输入图像,SN生成分割结果;SAM预测每个类别的saliency然后把所有类别的分割掩码合并到一个saliency map中去。SSNet用image-level标注和saliency标注监督。

1. Introduction

介绍了WSSS和SD任务。这两个任务都要求生成pixel-level的掩码,因此两者有紧密联系。一方面有了saliency map,分割网络的的计算量会大大减少;另一方面有了分割结果,saliency map可以直接通过选择显著性类别得到。但是现有的方法大多通过SD方法生成伪掩码训练分割模型,而忽略了WSSS模型充分利用显著性标注的分割信息。以往的方法利用预训练的显著性模型,而本文直接充分使用显著性标注。
在这里插入图片描述
如Fig. 1(b)所示,单独使用image-level标注训练的分割结果并不好,本文用分割结果导出的saliency map,和真实显著性标注求loss来解决这个问题。SSNet的SAM预测每个类别的saliency score,激活显著性类别(如上图的人),抑制非显著性的类别(如上图的瓶子)。
本文主要的contributions如下:

  • 提出可以联合解决SD和WSSS任务的端对端框架,其分割任务受image-level标注和显著性标注的监督。
  • 设计了一个saliency aggregation module模块来桥接两个任务,两个任务互相提供优化。
  • 实验。

3. The proposed approach

3.1. Network overview

我们设计了两个SSNet,分别处于训练的两个阶段,分别叫做SSNet-1和SSNet-2。1的监督信息是image-level标注和saliency标注,2的监督信息是image-level标注和saliency标注和1预测的分割结果。

3.2. Segmentation networks

分割网络由两部分组成,一个是特征提取器,另一个是多层卷积层,根据提取的特征得到分割结果。特征提取器基于VGG和DenseNet设计,有5个卷积blocks,但去掉了全连接分类器和后两个blocks的下采样。

在第一个训练阶段,只有image-level labels作为监督信息。这样训练出来的模型还不够,因此我们在SSNet-1中加入了1×1的卷积层,预测得到C-channel segmentation map和one-channel background map,map上每个点的值在[0,1]之间,每个点每个类别的value加在一起为1。在第二个训练阶段,SSNet-1的分割结果被用作监督信息,我们在SSNet-2中用4个3×3的卷积层, dilation rate分别为6,12,18,24来得到分割结果。

3.3. Saliency aggregation

我们设计SAM模块来利用saliency标注。这个模块利用特征提取器生成的32×32的特征 F F F,通过32×32的卷积层和sigmoid函数生成C维向量 v v v v i v_i vi表示第i个类别的saliency score,这样一来saliency map S S S如下表示:
S = ∑ i = 1 C = v i ⋅ H i S=\sum_{i=1}^C=v_i\cdot H_i S=i=1C=viHi
H i H_i Hi表示第i个channel的分割结果。

3.4. Jointly learning of saliency and segmentation

在这里插入图片描述

我们用两个训练集(image-level和saliency)来训练SSNet。saliency数据集记作 D s = { ( X n , Y n ) } n = 1 N s \mathcal D_s=\{(X^n,Y^n)\}_{n=1}^{N_s} Ds={(Xn,Yn)}n=1Ns,X为输入图像,Y为真值。classification数据集记作 D c = { ( X n , t n ) } n = 1 N c \mathcal D_c=\{(X^n,t^n)\}_{n=1}^{N_c} Dc={(Xn,tn)}n=1Nc,X为输入图像,t为真值。
分类损失定义如下:
L c = − 1 N c ∑ n = 1 N c [ ∑ i = 1 C t i n l o g t ^ i n + ( 1 − t i n ) l o g ( 1 − t ^ i n ) ] \mathcal L_c=-\frac{1}{N_c}\sum_{n=1}^{N_c}[\sum_{i=1}^Ct_i^nlog\hat{t}_i^n+(1-t_i^n)log(1-\hat{t}_i^n)] Lc=Nc1n=1Nc[i=1Ctinlogt^in+(1tin)log(1t^in)]
t i n = 1 t_i^n=1 tin=1说明图像中包含第i类目标,否则值为0。 t ^ i n \hat{t}_i^n t^in值在[0,1]之间。
image-level category labels可以让分割网络获得语义信息,但是无法学到空间信息。我们用pixel-level
saliency labels解决这个问题。如3.3节所讲,SAM合成saliency map,然后和真值求得loss:
L s 1 = − 1 N s ∑ n = 1 N s [ ∑ m y m n l o g s m n + ( 1 − y m n ) l o g ( 1 − s m n ) ] \mathcal L_{s1}=-\frac{1}{N_s}\sum_{n=1}^{N_s}[\sum_my_m^nlogs_m^n+(1-y_m^n)log(1-s_m^n)] Ls1=Ns1n=1Ns[mymnlogsmn+(1ymn)log(1smn)]
y是真值,s是预测值。
在训练的第一阶段,我们用以上两个loss训练SSNet-1。训练之后我们在classification dataset D c \mathcal D_c Dc上得到C+1-channel分割结果。其中C个channel分割结果通过 t n t^n tn去抑制错误类别的预测,最后我们得到了伪掩码。接下来是训练的第二阶段,第二阶段的loss如下:
L s 2 = − 1 N c ∑ n = 1 N c [ ∑ i = 1 C + 1 ∑ m ∈ C i l o g h i m n ] \mathcal L_{s2}=-\frac{1}{N_c}\sum_{n=1}^{N_c}[\sum_{i=1}^{C+1}\sum_{m\in\mathcal C_i}logh_{im}^n] Ls2=Nc1n=1Nc[i=1C+1mCiloghimn]
这里 h i m n ∈ [ 0 , 1 ] , i = 1 , ⋯   , C h_{im}^n\in[0,1],i=1,\cdots,C himn[0,1],i=1,,C表示在分割图像 H n H^n Hn第m个像素i通道处的值,即m点属于i类的概率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值