Reliability Does Matter: An End-to-End Weakly Supervised Semantic Segmentation Approach(AAAI 2020)

本文翻译了一篇关于弱监督语义分割论文,原文地址

摘要

弱监督语义分割是一项具有挑战性的任务,因为它仅将图像级信息作为训练的监督,但会生成像素级的预测以进行测试。为了解决这一艰巨的任务,最新的最新方法建议采用两步式解决方案,即1)学习生成伪像素级遮罩,以及2)利用FCN(全卷积网络)训练伪像素级别的遮罩的语义分割网络。但是,两步解决方案通常在生产高质量的伪蒙版时要花很多力气,这使这种方法变得复杂而笨拙。在这项工作中,我们利用图像级标签来生成可靠的像素级注释,并设计一个完整的端到端网络以学习预测分割图。具体而言,我们首先利用图像分类分支为带注释的类别生成类别激活图,然后将其进一步修剪成自信而微小的对象/背景区域。然后,将此类可靠区域直接用作并行分段分支的真实标签,其中采用了新设计的密集能量损失函数进行优化。尽管看似简单,但我们的一站式解决方案在Pascal VOC上的竞争性mIoU得分(验证集:62.6,测试集:62.9)与两步先进技术相比。通过将我们的一步法扩展到两步法,我们在Pascal VOC上获得了最新的性能(验证集:66.3,测试集:66.5)。

介绍

近来,弱监督语义分割引起了极大的兴趣,并且正在被广泛研究。 仅需要低度(更便宜或更简单)的注释(包括涂鸦,边界框,点和图像级别的标签)来进行训练,弱监督的语义分段提供了比采用像素级别的掩码的完全监督的对象更容易的方法。 在这些弱监督标签中,图像级注释是最简单的收集方法,也是最具挑战性的情况,因为语义标签和像素之间没有直接映射。

为了学习使用图像级标签作为监督的语义分割模型,可以将许多现有方法分为一步法和两步法。一站式方法通常会建立一个端到端框架,该框架会通过其他约束性优化策略来增强多实例学习。这一系列方法优雅且易于实现。然而,这些方法的一个显着缺点是分割精度远远落后于其完全监督的对应方法。为了获得更好的分割效果,许多研究人员建议采用两步法。该系列方法通常旨在采用自下而上或自上而下的策略,首先生成具有图像级标签作为监督的高质量伪像素级掩模。这些伪掩码然后充当地面真相,并被馈送到现成的全卷积网络(例如FCN和Deeplab)中,以训练语义分割模型。当前的最新技术主要是两步法,其分类效果接近其完全监督的同类指标。但是,为了产生高质量的伪蒙版,这些方法经常采用许多方法,例如以脱机方式从对象建议或显着图中引入其他对象/背景提示。因此,两步法通常非常复杂且难以重新实现,从而限制了它们在诸如对象定位和视频对象跟踪之类的研究领域中的应用。

在本文中,我们提出了一种简单而有效的单步方法,可以轻松地以端到端的方式对其进行训练。与两步法相比,它可实现具有竞争性的分类效果。我们称为可靠区域挖掘(RRM),该方法包括两个分支:一个分支使用图像级别的注释生成伪像素级别的掩码,另一个分支生成语义分割结果。与之前倾向于挖掘密集和整体物体区域的两步技术相反,我们的RRM只选择那些通常很小但在类激活时具有较高响应分数的自信物体/背景区域地图。我们发现可以通过增加额外的CRF操作将这些区域进一步修剪为更可靠的区域,然后将其用作并行语义分割分支的监督。在有限的像素监督下,我们设计了一种规则的损耗,称为密集能量损耗,该损耗与像素方向的交叉熵损耗配合以优化训练过程。

尽管表面上看起来很简单,但我们的一步式RRM在Pascal VOC 验证集和测试集上分别达到了62.6和62.9的mIoU分数。 这些结果实现了最先进的性能,与那些通常采用复杂的铃铛和口哨声来制作伪蒙版的两步先进技术相比,它甚至具有竞争力。 我们认为,我们提出的RRM为弱监督语义分段的一步式解决方案提供了新的见解。 此外,为了展示我们方法的有效性,我们还将我们的方法扩展到一个两步框架,并在Pascal VOC 验证集和测试集上获得了66.3和66.5的最新性能。代码将公开提供。

相关工作

语义分割是计算机视觉中的一项重要任务,需要预测像素级分类。Long等人提出了第一个用于语义分割的全卷积网络。Chen等人提出了一种新的深度神经网络结构“Deeplab”,利用原子卷积进行逐像素测,然后开发了一系列新的网络结构。但是,完全监督的语义分段需要密集的像素级注释,这会花费大量的人工费用。由于需要较少的人工干预,所以监督不足的语义分割已引起了广泛的关注。根据监督的类型,弱监督语义分割分为不同类别:涂鸦,边界框,点和图像级类标签。在本文中,我们专注于图像级监督语义分割。

图像级弱监督语义分割仅提供图像级注释。最新方法基于类激活图(CAM),该类可从图像级注释生成初始对象种子或区域。这样的初始对象种子或区域被转换为生成伪标签以训练语义分割模型。 Wei等人提出以迭代方式擦除由分类网络计算的判别区域,以便可以挖掘更多的种子区域,然后将其与显着性图组合以生成伪像素级标签。Wei等人还证明了扩张卷积可以增加接收场并改善弱分割网络性能。此外,Wang等人训练了区域网络和像素网络,以逐步进行从图像级别到区域级别以及从区域级别到像素级别的预测。同样,此方法将显着性图作为额外的监督。Ahn和Suha设计了一个亲和力网络来计算不同图像像素之间的关系,并利用该网络获得用于分割模型训练的伪对象标签。Huang等人部署了一种称为种子生长的传统算法来迭代扩展种子区域。

但是,以上所有方法均使用多种技术产生了高质量的伪遮罩,这意味着在训练用于语义分割预测的FCN之前,我们至少需要一个或两个额外的网络。 在这项工作中,我们尝试为整个任务设计一个单一的网络,以简化流程。 我们认为这项工作为图像级弱监督语义分割任务提供了新的视角。

提出的方法

概述

我们提出的RRM可以分为两个并行分支,包括分类分支和语义分割分支。 两个分支共享同一个骨干网络,并且在训练阶段,它们两个都同时更新整个网络。 图1说明了我们方法的总体框架。算法1说明了算法流程。
在这里插入图片描述
在这里插入图片描述

  • 分类分支用于生成可靠的像素级注释。 将对原始CAM进行处理以生成可靠的微小区域。 最终保留的可靠区域被视为标记区域,而其他区域则被视为未标记区域。 这些标签用作用于语义分割分支的监督信息。
  • 语义分割分支用于预测像素级标签。 该分支部署了新的联合损失函数,该函数将交叉熵损失与新设计的密集能量损失结合在一起。 交叉熵损失主要考虑标记的像素,而密集能量损失通过充分利用RGB颜色和像素位置来考虑所有像素。

我们的RRM的总体损失函数为:L=Lclass+Ljoint seg\mathcal{L}=\mathcal{L}_{class}+\mathcal{L}_\text{joint seg},其中Lclass\mathcal{L}_{class}代表常规分类softmax损失,而Ljoint seg\mathcal{L}_\text{joint seg}段是分段分支中新引入的联合损失。

分类分支:生成可靠区域的标签

高质量的像素级注释直接影响我们最终的语义分割性能,因为它是训练过程中唯一的事实。原始CAM可以突出显示对象的最有区别的区域,但它们仍包含一些非对象区域,即标记错误的像素。因此,在获取原始CAM区域后,需要进行后处理,例如密集的CRF。我们遵循了这一基本思想,并做了进一步的过程来生成可靠的标签。

我们随后计算训练数据集的初始CAM。在我们的网络中,全局平均池(GAP)应用于最后一个卷积层。GAP的输出按完全连接层分类。最后,在最后一个卷积层上使用完全连接的层权重来获取每个类的热图。此外,空洞卷积可以增加相应场的事实启发,我们将空洞卷积添加到最后三层中。我们的实验部分报告了我们网络设置的详细信息。

数学上,对于给定的图像II,类别cc对应的CAM为:
Mocamc=RS(ch=0DωchcFch),(cCfg),(1) M_{ocam}^c = RS(\sum^D_{ch=0}\omega^c_{ch}\cdot F_{ch}),(c\in C_{fg}),\tag{1}
其中Cfg={c1,c2,,cN}C_{fg}=\{c_1, c_2, \dotso ,c_N\}包括全部前景类别,MocamcM_{ocam}^c为图像II中类别为cc的CAM,ωc\omega^c表示全连接层中类别cc的权重,FF为主干网络最后一层卷积层输出的特征图,RS()RS(\cdot)是将输入尺寸调整为图像II尺寸的操作。

使用多尺度的原始图像有利于生成稳定的CAM。给定图像II并被一个因子sis_i进行缩放,si{s0,s1,,sn}s_i\in\{s_0,s_1,\dotsc,s_n\},对于图像II多尺度的CAM被定义为:
Mcamc=i=0n(Mocamc(si)/(n+1)),(2) M^c_{cam}=\sum^n_{i=0}(M_{ocam}^c(s_i)/(n+1)),\tag{2}
其中Mocamc(si)M_{ocam}^c(s_i)是类别为cc且被因子sis_i进行缩放的图像II的CAM。 图2展示了,与原始CAM(比例=1)相比,多尺度CAM提供了更精确的对象定位。
在这里插入图片描述

因为CAM的值是正则化过的,所以我们可以得到图像II上每一个像素点对应的分类概率,
Pfgc=Mcamc/max(Mcamc),(cCfg)(3) P_{fg}^c=M^c_{cam}/\max(M^c_{cam}),(c\in C_{fg})\tag{3}
其中max(Mcamc)\max(M^c_{cam})是类别为cjc_j的CAM的最大值。

背景的分数使用了类似的方式进行计算:
Pbg(i)=1maxcCfg(pfgc(i))γ,γ>1,(4) P_{bg}(i)=1-\max_{c\in C_{fg}}(p^c_{fg}(i))^\gamma,\gamma >1,\tag{4}
其中ii为像素点位置的索引,γ\gamma 是有助于抑制背景标签的衰减率。通过将前景和背景概率PfgP_{fg}PbgP_{bg}连接起来,得到总体概率图,即PfgbgP_{fg-bg}

之后,我们使用密集CRF作为后处理,去除一些错标的像素,CRF像素标签图为:
Icrf=CRF(I,[Pfg,Pbg]),(5) I_{crf}=CRF(I,[P_{fg},P_{bg}]),\tag{5}
选择的可靠CAM标签为:
Icam(i)={arg maxcC(Pfgbg](i)c),ifmaxcC(Pfgbg](i)c)>α255,else,(6) I_{cam}(i)= \begin{cases} \argmax_{c\in C}(P^c_{fg-bg](i)}),& \text{if}\,\max_{c\in C}(P^c_{fg-bg](i)})> \alpha \\ \qquad255\qquad\qquad\qquad,& else \end{cases},\tag{6}
其中C={c0,c1,,cN}C=\{c_0,c_1,\dotsc,c_N\}包含全部类别以及后景(c0)(c_0)。255表示尚未确定类别标签。

输入到语义分割分支的最终像素标签是:
Ifinal(i)={Icam,ifIcam(i)=Icrf(i)255,else,(7) I_{final}(i)= \begin{cases} I_{cam}, &\text{if}\,I_{cam}(i)=I_{crf}(i)\\ 255,&else \end{cases},\tag{7}
在公式(6)中,maxcC(Pfgbg](i)c)>α\max_{c\in C}(P^c_{fg-bg](i)})> \alpha选择了高度自信度的区域。在公式(7)中,Icam(i)=Icrf(i)I_{cam}(i)=I_{crf}(i)考虑到了CRF约束。采用这种策略,可以得到高可靠性的区域及其标签。(7)中那些被定义为255的区域,被视为不可靠区域。

图3显示了我们方法的一个例子。可以看出,原始CAM标签(图3(c))包含了大部分前景标签,但引入了一些背景像素作为前景,而CRF标签(图3(d))可以得到准确的边界,但同时有很多前景像素被视为背景。而CRF标签(图3(d))可以得到准确的边界,但同时又将许多前景像素视为背景。换句话说,CAM标签可以提供可靠的背景像素,CRF标签可以提供可靠的前景像素。用我们的方法梳理CAM标签和CRF标签图,一些错误的像素级标签被去除,而可靠的区域仍然存在,这在物体边界处尤其明显(见图3(e)和(f)的区别)。
在这里插入图片描述

语义分割分支:进行预测

获得可靠的像素级注释后,它们将用作我们的语义分段分支的标签。 与其他使用独立的伪标签训练语义分割网络的方法不同,我们的分割分支与分类分支共享相同的骨干网络,只需要可修饰但很小的像素级标签。 我们的损失函数包括交叉熵损失和能量损失。 交叉熵损失侧重于利用标记数据,而能量损失则同时考虑标记数据和未标记数据。 共同损失是:
Ljoint-seg=Lce+Lenergy,(8) \mathcal{L}_\text{joint-seg}=\mathcal{L}_{ce}+\mathcal{L}_{energy},\tag{8}
在公式(8)中,Lce\mathcal{L}_{ce}Lenergy\mathcal{L}_{energy}分别表示交叉熵损失函数和密集能量损失函数。交叉熵损失函数为:
Lce=cC,iΦBc(i)log(Pnetc(i)),(9) \mathcal{L}_{ce}=-\sum_{c\in C,i\in \Phi}B_c(i)\log(P^c_{net}(i)),\tag{9}
其中Bc(i)B_c(i)是一个二进制指示器,像素点ii的标签为cc时指示器输出1,否则输出0;Φ\Phi表示被标记的区域,Φ={iIfinal(i)255}\Phi = \{i|I_{final}(i)\neq255\};Pnetc(i)P^c_{net}(i)为训练后网络输出的概率。

到目前为止,所有标记的像素都被用于交叉熵损失的训练,但有大量的未标记像素。为了对这些未标记的区域进行预测,我们设计了一种新的浅层损失,命名为密能损失,同时考虑RGB颜色和空间位置。

我们首先在像素i和j之间定义能量公式:
E(i,j)=ca,cbC,cacbG(i,j)Pnetca(i)Pnetcb(i),(10) E(i,j)=\sum_{c_a,c_b\in C,\,c_a \neq c_b}G(i,j)P^{c_a}_{net}(i)P^{c_b}_{net}(i),\tag{10}
在公式(10)中,cac_acbc_b都为类别标签,Pnetca(i)P^{c_a}_{net}(i)Pnetcb(i)P^{c_b}_{net}(i)分别是我们在像素iijj处的分割分支的softmaxsoftmax输出。G(i,j)G(i,j)是一个高斯内核带宽滤波器:
G(i,j)=1Wexp(DiDj22σd2IiIj22σr2),(11) G(i,j)=\frac{1}{W}\exp(-\frac{\left \|D_i-D_j \right \|^2}{2\sigma^2_d}-\frac{\left \|I_i-I_j \right \|^2}{2\sigma^2_r}),\tag{11}
其中1W\frac{1}{W}是正则化权重,DD是像素空间位置,而II是RGB颜色,σd\sigma_dσr\sigma_r是控制高斯内核缩放的超参数。公式(10)可以使用Potts模型简化:
E(i,j)=ca,cbC,cacbG(i,j)Pnetca(i)Pnetcb(i)=G(i,j)cCPnetc(i)(1Pnetc(j)),(12) \begin{aligned} E(i,j)&=\sum_{c_a,c_b\in C,\,c_a \neq c_b}G(i,j)P^{c_a}_{net}(i)P^{c_b}_{net}(i)\\ &=G(i,j)\sum_{c\in C}P^c_{net}(i)(1-P^c_{net}(j)) \end{aligned},\tag{12}
最终,我们的密集能量损失函数可以写为:
Lenergy=i=0Nj=0,jiNS(i)E(i,j),(13) \mathcal{L}_{energy}=\sum^N_{i=0}\sum^N_{j=0,\, j\neq i}S(i)E(i,j),\tag{13}
在公式(13)中,考虑到交叉熵损失是为监督学习而设计的,标签信息的准确度为100%,但是在此任务中,所有像素标签都不是100%可靠的,这意味着使用交叉熵损失可能会引入一些错误。 因此,我们密集的能量损失被用来减轻这个问题。 基于这个想法,我们为像素ii设计了一个软滤波器S(i)S(i):
S(i)={1maxcC(Pnetc(i)),iΦ1,else(14) S(i)= \begin{cases} 1-\max_{c\in C}(P^c_{net}(i)),&\qquad i\in\Phi\\ \qquad \qquad \quad1,&\qquad else \end{cases}\tag{14}

实验

数据集和实现细节

数据集:我们的RRM在PASCAL VOC 2012及其增强数据上经过训练和验证,包括10582张用于训练的图像,1449张用于验证的图像和1456张用于测试的图像。 平均交并比(mIoU)被视为评估标准。

实现细节:骨干网络是具有38个卷积层的ResNet模型。 我们删除原始网络的所有完全连接层,并为最后三个resnet块(resnet块是一组具有相同输出大小的残差单元)进行空洞卷积,最后第三层的扩张率为2,最后2层为4。 对于语义分割分支,我们在主干后添加两个具有相同配置的空洞卷积层,内核大小为3,扩展速为12,填充大小为12。交叉熵损失分别针对背景和前景计算。 密集能量损失中的σd\sigma_dσr\sigma_r分别设置为15和100。

训练学习率为0.001,权值下降为5e-4。 使用从(0.7,1.3)中随机采样的比例调整训练图像的大小,然后将它们随机翻转。 最后,将它们标准化并随机裁剪为321 * 321大小。

为了生成可靠的区域,对于PfgbgP_{fg-bg},将公式(2)中的缩放比例设置为{0.5、1、1.5、2},将公式(4)中的γ\gamma设置为4。公式(5)中的CRF参数遵循(Ahn和Kwak 2018)中的设置。在公式(6)中,选择α\alpha值,并选择40%像素作为每个类别的标记像素。 在验证和测试期间,将密集CRF作为后处理方法,并将参数设置为(Huang等人2018)中给出的默认值。 在训练期间,两个分支都更新了骨干网。 在测试期间,仅使用分类分支来生成预测。

复现:使用PyTorch。 所有实验均在NVIDIA RTX 2080 Ti上进行。 现在可以在以下网址获得代码:https://github.com/zbf1991/RRM。

分析我们的方法

我们的RRM具有两个重要方面:使用可靠但微小的伪遮罩进行监督,并使用新的联合损失函数进行端到端训练。 进行消融研究以说明其个体和联合的有效性,结果报告于表1和表2。
在这里插入图片描述

我们首先验证不同伪遮罩大小的影响。 我们通过更改α\alpha做到这一点。 表1报告了结果。 较小的伪掩模大小意味着为分割分支选择了更多可靠的区域,而较大的大小意味着较少的可靠像素被标记。 表1证明了20%-60%的标记像素可带来最佳性能。 一方面,由于分割网络无法获得足够的标记用于学习,因此标记的像素太少而无法获得满意的性能。 另一方面,太多的标记像素意味着使用了更多不正确的标记,这对于训练处理来说是噪声。
在这里插入图片描述

表2显示了我们介绍的两个主要部分的有效性:可靠的区域划分和联合损失。 比较了使用原始CAM区域和使用RRM划分的可靠区域获得的结果。 可以看出,由RRM生成的伪标签的性能优于CAM标签。 如果我们从分割分支中去除联合损失,这也表明RRM生成的可靠伪标记可提高分割性能。

此外,表2中带有交叉熵损失的Ours-RRM与带有联合损失的Ours-RRM的比较说明了引入的联合损失的有效性。在没有联合损失的情况下,RRM只有交叉熵损失的情况下的mIoU会降低。 这是因为仅考虑交叉熵损失时,具有RRM的可靠区域无法为分割模型训练提供足够的标签。 采用联合损失后,分段性能从48.5大幅提高到62.6,提高了14.1。 具有交叉熵损失的CAM和具有联合损失的CAM之间获得了相似的比较结果。

与先前方法的比较

在表3和表4中,我们与仅图像级监督语义分割的其他端到端网络进行了详细比较。 尽管有各种各样的网络来执行此任务,但是只有EM-Adapt才采用端到端的结构,并且可以看出,Ours-RRM(一步法)的性能要大得多。 首先,与使用最大期望(EM)算法估计网络参数的EM-Adapt相比,我们的方法采用设计的联合损失函数,采用更直接和明确的学习过程来更新整个网络。 其次,由于仅考虑图像级别信息,因此EM-Adapt只能给出粗略的分割结果,而我们的RRM(一步法)设计了一种提供可靠像素级别标签的试验机制,这将导致更准确的分割预测。
在这里插入图片描述

为了显示我们想法的有效性和可扩展性,我们还将方法扩展到两步法框架。区别在于,对于我们的单步方法(Ours-RRM(单步法)),我们直接通过分类分支生成预测。而对于我们的两步法,我们首先使用Ours-RRM(一步法)网络为训练数据集生产伪掩码。然后,我们使用生成的像素标签训练和评估Deeplab,这些像素标签称为Our-RRM-VGG(两步法)。使用相同的设置,我们还评估了使用带有ResNet-101主干网的Deeplab-v2(称为Our-RRM-ResNet)(两步法)的性能。最终结果可在表5中找到。可以观察到,在仅使用图像级标签而没有额外数据的现有方法中,AffinityNet是性能最高的方法。但是,当使用相同的主干时,Ours-RRM-VGG(两步)和Ours-RRM-ResNet(两步法)的性能要好得多。还应该注意的一点是,AffinityNet使用ResNet-38作为基线,它比ResNet-101更为强大,即使在这种情况下,我们的RRM-ResNet(两步法)仍然以较大的幅度跑赢它。请注意,AffinityNet应用了三个带有许多花哨的DNN,而我们仅使用一个端到端网络(Ours-RRM(一步法))就得到了等效的结果。
在这里插入图片描述

据我们所知,先前的最新技术FickleNet在PASCAL VOC 验证和测试集上的mIoU得分分别为64.9和65.3,但是它使用类不可知的显着性图作为额外的补充信息,并且分别使用两个独立的网络。Ours-RRM-ResNet(两步操作)在PASCAL VOC 验证和测试集上的mIoU得分分别为66.3和66.5,提供了更好的性能,分别1.4和1.2倍的提升。请注意,在这种情况下,我们不会使用额外的数据或信息。因此,Ours-RRM-ResNet(两步)是两步图像级标签弱监督语义分割的最新技术。

在图4中,我们展示了我们的方法的一些主观语义分割结果,并将这些结果与最新的端到端网络EM-Adapt进行了比较。Ours-RRM(一步法)可在大型和小型物体上以精确的边界获得更好的分割结果。我们还展示了两步方法的一些结果,可以看出,在这三种方法中,我们的-RRM-ResNet(两步法)在强大的网络体系结构中获得了最佳性能。
在这里插入图片描述

结论

在本文中,我们提出了RRM,一种用于图像级弱监督语义分割的端到端网络。我们重新审视了采用两步法的最新技术缺陷。我们提出了一种通过挖掘可靠但很小的区域的单步方法,并将其直接用作分割标签训练的真实标签。在有限的像素作为监督的情况下,我们设计了一种新的损失,命名为密能损失,它采取浅层特征(RGB颜色和空间信息),配合像素侧的交叉熵损失来优化训练过程。基于我们的一步式RRM,我们扩展了两步法。我们的一站式和两步式方法都可以达到最新的性能。更重要的是,我们的RRM与传统的两步式解决方案提供了不同的视角。我们认为,提出的一步方法可以进一步推动这一方向的研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章