赞
踩
与费力的像素级密集标注相比,用涂鸦标注数据要容易得多,标注一张图片只需花费1∼2秒。然而,使用涂鸦标签来学习显著目标检测还没有被探索过。在本文中,我们提出了一个弱监督的显著目标检测模型,从这种标注中学习显著性。在此过程中,我们首先重新用涂鸦标注了现有的大规模显著目标检测数据集,记为S-DUTS。由于物体的结构和细节信息不被涂鸦所识别,直接用涂鸦标签进行训练会导致显著图的边界定位不佳。为了缓解这个问题,我们提出了一个辅助的边缘检测任务来明确定位物体的边缘,以及一个门控结构感知损失来对要恢复的结构范围进行约束。此外,我们设计了一个涂鸦增强方案,以反复巩固我们的涂鸦标注,然后将其作为监督来学习高质量的显著图。由于现有的显著性评价指标忽视了对预测结构的度量,因此显著图的评价指标可能不符合人类的感知。我们提出了一个新的指标,称为显著性结构度量,作为一个补充度量来评估预测的锐度。在六个基准数据集上进行的大量实验表明,我们的方法不仅优于现有的弱监督/无监督方法,而且与几个完全监督的最先进的模型相当。
我们在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。
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)处的交叉熵损失。
边缘检测网络鼓励SPN产生具有丰富结构信息的显著特征。我们利用SPN的中间层特征生成一个通道边缘映射e。具体来说,我们映射每个si(i = 1,…, 5)到通道大小为M,具有1 × 1卷积层的特征图。然后我们将这5个特征映射连接起来,并将它们输入到一个1 × 1的卷积层中,生成一个边缘映射e。交叉熵损失Le用于训练EDN:
其中E是由现有的边缘检测器预先计算的。
我们引入了一个边缘增强显著性预测模块,从SPN中精炼粗显著性映射sc,得到一个边缘保留的精炼显著性映射sr。具体来说,我们将sc和e连接起来,然后将它们输入1 × 1卷积层,生成显著性映射sr。注意,我们使用显著性映射sr作为网络的最终输出。
与训练SPN类似,我们使用带有潦草注释的部分交叉熵损失来监督sr。
我们期望所预测的显著图在显著区域内具有一致的强度,在物体边缘具有明显的边界。受平滑性损失的启发[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
如图4所示,我们将部分交叉熵损失Ls和门控结构感知损失Lb分别用于粗显著图sc和细化图sr,并将交叉熵损失Le用于边缘检测网络。我们的最终损失函数定义为
其中y表示涂鸦注释。部分交叉熵损耗Ls以涂鸦注释为监督,门控结构感知损耗Lb利用图像边界信息。这两种损失并不矛盾,因为Ls专注于将带注释的涂鸦像素传播到前景区域(依赖于SPN),而Lb强制sr与EDN提取的边缘很好地对齐,并阻止前景显著性像素传播到背景。
我们没有直接扩展涂鸦注释,而是将DenseCRF应用于初始显著性预测sinit,并将sinit更新为scrf。直接用scrf训练网络会给网络引入噪声,因为scrf不是精确的实体图。我们计算sinit和scrf的差值,并将sinit = scrf = 1的像素定义为新涂鸦注释中的前景像素,sinit = scrf = 0的像素定义为背景像素,其余的像素定义为未知像素。在图7 (g)和图7 (h)中,我们说明了涂鸦增强的中间结果。注意,我们的方法比在初始预测中应用DenseCRF获得了更好的显著性预测结果(见图7 (f))。这证明了我们的涂鸦增强方案的有效性。在我们的实验中,在进行了我们的涂鸦增强步骤的一次迭代之后,我们的性能几乎与完全监督的方法相同。
现有的显著性评价指标(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所示,预测的“µ”反映了预测的锐度,与人的感知一致。
我们使用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上进行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。