当前位置:   article > 正文

【弱监督显著目标检测论文】Weakly-Supervised Salient Object Detection via Scribble Annotations_weakly-supervised camouflaged object detection wit

weakly-supervised camouflaged object detection with scribble annotations

2020年发表在CVPR上的一篇使用涂鸦注释的弱监督显著目标检测论文
论文原文
代码地址


摘要

与费力的像素级密集标注相比,用涂鸦标注数据要容易得多,标注一张图片只需花费1∼2秒。然而,使用涂鸦标签来学习显著目标检测还没有被探索过。在本文中,我们提出了一个弱监督的显著目标检测模型,从这种标注中学习显著性。在此过程中,我们首先重新用涂鸦标注了现有的大规模显著目标检测数据集,记为S-DUTS。由于物体的结构和细节信息不被涂鸦所识别,直接用涂鸦标签进行训练会导致显著图的边界定位不佳。为了缓解这个问题,我们提出了一个辅助的边缘检测任务来明确定位物体的边缘,以及一个门控结构感知损失来对要恢复的结构范围进行约束。此外,我们设计了一个涂鸦增强方案,以反复巩固我们的涂鸦标注,然后将其作为监督来学习高质量的显著图。由于现有的显著性评价指标忽视了对预测结构的度量,因此显著图的评价指标可能不符合人类的感知。我们提出了一个新的指标,称为显著性结构度量,作为一个补充度量来评估预测的锐度。在六个基准数据集上进行的大量实验表明,我们的方法不仅优于现有的弱监督/无监督方法,而且与几个完全监督的最先进的模型相当。


一、创新点

  • 提出了一种新的从涂鸦中学习显著性的弱监督显著性目标检测方法,并引入了一种新的基于涂鸦的显著性数据集S-DUTS;
  • 我们提出了一种门控结构感知损失来约束预测显著图在显著区域与输入图像共享相似的结构;
  • 我们设计了一种涂鸦增强方案来扩展我们的涂鸦注释,从而实现高质量的显著图获取;
  • 我们提出了一种新的评价指标来衡量预测显著图的结构一致性,它更符合人类的视觉感知;
  • 在六个显著的目标检测基准上的实验结果表明,我们的方法优于最先进的弱监督算法。

二、Related Work

1.Learning Saliency from Weak Annotations

2.Weakly-Supervised Semantic Segmentation

3.Recovering Structure from Weak Labels

4.Comparison with Existing Scribble Models

三.Learning Saliency from Scribbles

1.Weakly-Supervised Salient Object Detection

图4

Saliency prediction network (SPN)

我们在VGG16-Net的基础上,通过删除第五池化层之后的层来构建前端显著性预测网络。与[43]类似,我们将生成相同分辨率特征映射的卷积层分组为网络的一个阶段(如图4所示)。因此,我们将前端模型表示为f1(x, θ) = {s1,…, s5},其中sm(m = 1,…, 5)表示第m阶段最后一个卷积层(本文为“relu1 2, relu2 2, relu3 3, relu4 3, relu5 3”)的特征,θ为前端网络参数。
正如[39]中所讨论的,通过不同的扩张率扩大感受野,可以将辨别信息传播到非辨别对象区域。我们在前端模型的基础上使用了一个密集的空洞空间金字塔池(DenseASPP)模块,从特征s5生成具有更大接受域的特征图s’5。特别是,我们在DenseASPP的卷积层中使用了不同的膨胀率。然后,使用两个额外的1 × 1卷积层将s ’ 5映射到一个单通道的粗略的显著图sc。
DenseASPP

Dense Atrous Spatial Pyramid Pooling——密集的空洞空间金字塔池化(DenseASPP)
在这里插入图片描述
好处:(1)密集特征金字塔;(2)更大的感受野
原文参考:Dense Atrous Spatial Pyramid Pooling(DASPP)

由于我们在涂鸦注释中存在未知的类别像素,因此采用partial cross-entropy loss(部分交叉熵损失)[30]来训练我们的SPN:
在这里插入图片描述
其中Jl表示标记的像素集,(u, v)为像素坐标,Lu,v为(u, v)处的交叉熵损失。

Edge detection network (EDN)

边缘检测网络鼓励SPN产生具有丰富结构信息的显著特征。我们利用SPN的中间层特征生成一个通道边缘映射e。具体来说,我们映射每个si(i = 1,…, 5)到通道大小为M,具有1 × 1卷积层的特征图。然后我们将这5个特征映射连接起来,并将它们输入到一个1 × 1的卷积层中,生成一个边缘映射e。交叉熵损失Le用于训练EDN:
在这里插入图片描述
其中E是由现有的边缘检测器预先计算的。

Edge-enhanced saliency prediction module (ESPM)

我们引入了一个边缘增强显著性预测模块,从SPN中精炼粗显著性映射sc,得到一个边缘保留的精炼显著性映射sr。具体来说,我们将sc和e连接起来,然后将它们输入1 × 1卷积层,生成显著性映射sr。注意,我们使用显著性映射sr作为网络的最终输出。
与训练SPN类似,我们使用带有潦草注释的部分交叉熵损失来监督sr。

Gated structure-aware loss

我们期望所预测的显著图在显著区域内具有一致的强度,在物体边缘具有明显的边界。受平滑性损失的启发[9,38],我们也在显著区域内施加了这种约束。
回想一下,平滑损失是为了加强平滑,同时在整个图像区域保持图像结构。而显著目标检测则是将结构信息抑制在显著区域之外。因此,在整个图像区域强制平滑损失将使显著性预测模糊,如表2“M3”所示。
为了减少这种模糊性,我们采用了一种门机制,让我们的网络只关注显著区域,以减少背景结构造成的分心。具体地说,我们将门控结构感知损失定义为
在这里插入图片描述
其中Ψ定义为Ψ(s) =√s2 + 1e−6,以避免计算零的平方根,Iu,v为像素(u, v)处的图像强度值,d为x和y方向上的偏导数,G为结构感知损失的门(见图6 (d))。门控结构感知损失对显著图s的梯度施加L1惩罚,以鼓励其局部平滑,并用一个边缘感知的项∂I作为权值,以保持沿图像边缘的显著性区别。
在这里插入图片描述
具体来说,如图6所示,在训练过程中使用预测显著性图(a)),我们用k = 11的平方核对其进行扩展,得到一个放大的前景区域©)。然后通过自适应阈值化将gate (d))定义为二值化的gate ©)。如图6(e)所示,我们的方法能够聚焦于显著区域,并预测显著图中的尖锐边界。

实际代码中应用了sobel算子和拉普拉斯算子

代码如下:

 def laplacian_edge(img):
    laplacian_filter = torch.Tensor([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
    filter = torch.reshape(laplacian_filter, [1, 1, 3, 3])
    filter = filter.cuda()
    lap_edge = F.conv2d(img, filter, stride=1, padding=1)
    return lap_edge

def gradient_x(img):
    sobel = torch.Tensor([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]])
    filter = torch.reshape(sobel,[1,1,3,3])
    filter = filter.cuda()
    gx = F.conv2d(img, filter, stride=1, padding=1)
    return gx


def gradient_y(img):
    sobel = torch.Tensor([[-1, -2, -1], [0, 0, 0], [1, 2, 1]])
    filter = torch.reshape(sobel, [1, 1,3,3])
    filter = filter.cuda()
    gy = F.conv2d(img, filter, stride=1, padding=1)
    return gy

def charbonnier_penalty(s):
    cp_s = torch.pow(torch.pow(s, 2) + 0.001**2, 0.5)
    return cp_s

def get_saliency_smoothness(pred, gt, size_average=True):
    alpha = 10
    s1 = 10
    s2 = 1
    ## first oder derivative: sobel
    sal_x = torch.abs(gradient_x(pred))
    sal_y = torch.abs(gradient_y(pred))
    gt_x = gradient_x(gt)
    gt_y = gradient_y(gt)
    w_x = torch.exp(torch.abs(gt_x) * (-alpha))
    w_y = torch.exp(torch.abs(gt_y) * (-alpha))
    cps_x = charbonnier_penalty(sal_x * w_x)
    cps_y = charbonnier_penalty(sal_y * w_y)
    cps_xy = cps_x + cps_y

    ## second order derivative: laplacian
    lap_sal = torch.abs(laplacian_edge(pred))
    lap_gt = torch.abs(laplacian_edge(gt))
    weight_lap = torch.exp(lap_gt * (-alpha))
    weighted_lap = charbonnier_penalty(lap_sal*weight_lap)

    smooth_loss = s1*torch.mean(cps_xy) + s2*torch.mean(weighted_lap)

    return smooth_loss
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

Objective Function

如图4所示,我们将部分交叉熵损失Ls和门控结构感知损失Lb分别用于粗显著图sc和细化图sr,并将交叉熵损失Le用于边缘检测网络。我们的最终损失函数定义为
在这里插入图片描述
其中y表示涂鸦注释。部分交叉熵损耗Ls以涂鸦注释为监督,门控结构感知损耗Lb利用图像边界信息。这两种损失并不矛盾,因为Ls专注于将带注释的涂鸦像素传播到前景区域(依赖于SPN),而Lb强制sr与EDN提取的边缘很好地对齐,并阻止前景显著性像素传播到背景。

2.Scribble Boosting(涂鸦增强)

在这里插入图片描述
我们没有直接扩展涂鸦注释,而是将DenseCRF应用于初始显著性预测sinit,并将sinit更新为scrf。直接用scrf训练网络会给网络引入噪声,因为scrf不是精确的实体图。我们计算sinit和scrf的差值,并将sinit = scrf = 1的像素定义为新涂鸦注释中的前景像素,sinit = scrf = 0的像素定义为背景像素,其余的像素定义为未知像素。在图7 (g)和图7 (h)中,我们说明了涂鸦增强的中间结果。注意,我们的方法比在初始预测中应用DenseCRF获得了更好的显著性预测结果(见图7 (f))。这证明了我们的涂鸦增强方案的有效性。在我们的实验中,在进行了我们的涂鸦增强步骤的一次迭代之后,我们的性能几乎与完全监督的方法相同。

笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)

3.Saliency Structure Measure

在这里插入图片描述

现有的显著性评价指标(Mean absolute Error, Precision-recall curves, F-measure, E-measure[7]和S-measure[6])只关注预测的准确性,而忽略了预测的显著性图是否符合人的感知。也就是说,估计的显著性映射应该与输入图像的目标结构对齐。在[23]中,bIOU损失被用来惩罚显著边界长度。我们将bIOU损失作为误差度量Bµ来评估显著性图和它们的实体图之间的结构对齐。
给定一个预测显著图s和它的基于像素的地面真值y,它们的二值化边缘图分别定义为gs和gy。那么Bµ=在这里插入图片描述
其中B μ∈[0,1]。Bµ= 0表示完美的预测。由于预测图和实体显著图的边缘尺度较小,可能无法很好地对齐,导致测量结果不稳定(如图8所示)。在计算Bµmeasure之前,我们将这两个边缘图都用大小为3的平方核进行扩展。如图B所示,预测的“µ”反映了预测的锐度,与人的感知一致。
在这里插入图片描述

4.Network Details

我们使用VGG16-Net[28]作为骨干网络。在边缘检测网络中,我们通过1×1卷积层将sm编码为通道大小为32的特征映射。在“DenseASPP”模块(图5)中,前三个卷积层产生通道大小为32的显著特征,最后一个卷积层将特征映射到与s5相同大小的s’5。然后我们使用两个连续卷积层将s ’ 5映射到一个通道粗显著图sc。Eq. 3和Eq.(4)中的超参数设为:α = 10, β1 = β2 = 0.3, β3 = 1。

我们使用Pytorch训练我们的模型50个周期,SPN初始化的参数来自于ImageNet[4]上预训练的VGG16-Net[28]。其他新增的卷积层随机初始化N(0,0.01)。初始化基本学习率为1e-4。整个培训需要6小时,培训批数为15,在一台配备NVIDIA GeForce RTX 2080 GPU的PC上进行。

四.实验

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/64711
推荐阅读
相关标签
  

闽ICP备14008679号