二十三章:抗对抗性操纵的弱监督和半监督语义分割的属性解释
0.摘要
弱监督语义分割从分类器中生成像素级定位,但往往会限制其关注目标对象的一个小的区域。AdvCAM是一种图像的属性图,通过增加分类分数来进行操作。这种操作以反对抗的方式实现,沿着像素梯度的相反方向扰动图像。它迫使最初被认为不具有区分度的区域参与后续的分类,并产生逐步识别目标对象更多区域的属性图。此外,我们引入了一种新的正则化过程,抑制了与目标对象无关的区域的错误归因,并限制了已经具有高分数的区域的归因。在PASCAL VOC 2012测试图像上,我们分别实现了弱监督和半监督语义分割的mIoUs分别为68.0和76.9,这代表了新的最先进水平。代码可在以下链接找到:https://github.com/jbeomlee93/AdvCAM。
1.引言
语义分割是将语义标签分配给图像中的每个像素的过程。在图像识别和场景理解中,它是一项重要的任务。深度神经网络(DNNs)在语义分割方面取得了巨大的进展[8,22],但它们需要大量使用像素级标签进行注释的训练图像。准备这样的训练数据集非常昂贵:对于包含平均2.8个对象的图像,每张图像的像素级注释需要约4分钟[4],而对于描绘复杂场景的单个大型(2048×1024)图像,像素级注释需要超过90分钟[9]。
对于像素级注释的需求可以通过弱监督学习来解决,其中一个分割网络在具有比像素级标签更便宜获取的较少详细注释的图像上进行训练。弱监督方法可以使用涂鸦[54]、点[4]、边界框[26,51]和类别标签[2,6,29,48]作为注释。使用类别标签对图像进行标注大约需要20秒[4],使得类别标签成为最便宜的选项。此外,许多公共数据集已经使用类别标签进行了注释[10,12],自动化的网络搜索也可以提供带有类别标签的图像[20,30,47],尽管这些标签的准确性可能较低。这些考虑使得类别标签成为最受欢迎的弱监督形式。
大多数使用类别标签的弱监督分割方法依赖于从训练好的分类器中获得的属性图[46,64]。这样的属性图标识了分类器所关注的图像区域。然而,这些重要或有区分度的区域相对较小,大多数属性图并不代表目标对象所占据的整个区域,这使得这些属性图不适合用于训练语义分割网络。因此,许多研究人员尝试通过操作图像[33,50,57]或特征图[21,29,63]来扩展区域,以覆盖目标对象的更多部分。
一种常用的操作方法是擦除:强制分类器从已删除的有区分度区域中寻找目标对象的新区域。擦除是有效的,但它需要修改网络,通常是通过添加额外的层[21,63]或额外的训练步骤[57]。另一个困难是为迭代擦除提供可靠的终止条件;对图像的有区分度区域进行擦除可能导致DNN对该图像进行错误分类。如果从已擦除有区分度区域的图像越过决策边界,如图1(a)所示,可能会生成错误的属性图。另一种操作方法是随机扰动,如图1(b)所示。FickleNet [29]通过对DNN的特征图应用随机丢弃,将它们聚合成一个统一的属性图,从而使属性图多样化。
我们提出了一种新的操作方法,用于扩展目标对象的有区分度区域。我们的方法基于对抗攻击[16,28],但目的是良性的。对抗攻击寻找一个图像的微小扰动,将其推向决策边界,以改变分类结果。相反,我们的方法以反对抗攻击的方式进行操作,旨在找到一种扰动,将操纵的图像推离决策边界,如图1(c)所示。这种操作是通过对抗攀升实现的,即通过沿着像素梯度扰动图像,增加目标类别的分类得分。结果是非有区分度区域,尽管与该类别相关,但逐渐参与了分类过程,使得操纵图像的CAM识别出更多的对象区域。图1(d)展示了通过迭代应用这种操作技术获得的CAM示例。
沿着梯度上升确保了分类得分的增加,但是重复上升可能会导致不相关的区域(如背景的某些部分或其他对象的区域)一起被激活,或者目标对象的某些部分的属性分数被大幅增加。我们可以通过引入正则化项来解决这些问题,抑制其他类别的得分,并限制已经具有高分数的区域的属性分数。通过以这种方式进行迭代操作的图像获得的属性图可以用作伪标签来以弱监督和半监督的方式训练语义分割网络。
我们的方法是对训练好的分类器的事后分析,可以在不修改现有方法的情况下改善性能,从而在弱监督和半监督语义分割中在PASCAL VOC 2012基准测试中取得新的最先进性能。
本文的主要贡献有三点:
- 我们提出了AdvCAM,一种通过操纵图像来增加分类得分的属性图,使其能够识别更多的目标区域。
- 我们经验证明,我们的方法在不修改或重新训练网络的情况下,改善了几种弱监督语义分割方法的性能。
- 我们的技术在Pascal VOC 2012基准测试中比现有方法在弱监督和半监督语义分割方面表现出显著更好的性能。
图1:弱监督语义分割图像操作方法的概念描述:(a)擦除[21,57,63];(b)FickleNet [29];(c)AdvCAM;(d)通过迭代操纵图像获得的连续属性图的示例。
2.相关工作
2.1.弱监督学习
现有的弱监督语义分割方法旨在通过获取一个改进的初始种子,其中包含了目标对象所占据的区域的良好近似,然后扩大该区域,以便更多地识别出对象。
获取高质量的种子:已经提出了几种方法来改进从分类器中获得的初始种子的质量。Wang等人[56]在分类器训练过程中使用等变性正则化,使得从不同变换图像中获得的属性图对于这些变换是等变的。Chang等人[6]通过使用隐含的语义类别来改进特征学习,这些类别是注释父类别的子类别,可以通过聚类图像特征来伪标记。Fan等人[13]和Sun等人[53]通过考虑跨图像的语义相似性和差异性来捕捉几个图像之间的共享信息。Wei等人[58]和Lee等人[32]通过将来自不同膨胀卷积或DNN的不同层的多个属性图进行合并,来考虑目标对象在多个上下文中的情况。
扩大目标区域:一些研究人员使用类似于区域生长的方法,通过检查每个像素的邻域来扩展初始的CAM[64]种子。语义标签从最初可以与目标对象明确关联的区域传播到最初不确定的区域。SEC[27]和DSRG[23]从包含不确定区域的初始CAM种子开始,在分割网络的训练过程中给这些不确定区域分配伪标签。PSA[2]和IRN[1]通过随机游走将目标区域扩展到语义上相似的区域。BEM[7]通过合成一个伪边界从CAM开始,然后使用类似于PSA[2]的传播方法进行扩展。
2.2.半监督学习
在半监督学习中,使用少量具有像素级注释的图像以及大量具有弱注释或没有注释的图像来训练分割网络。交叉一致性训练(CCT)[42]涉及使用未标记或弱标记的图像对分割网络进行训练,通过强制预测在不同扰动下的不变性,例如注入随机噪声。Souly等人[52]通过使用由生成对抗网络[15]合成的图像来改进特征学习。Hung等人[24]采用对抗训练方案,减少预测的分割图与真实地图之间的分布差距。
2.3.对抗攻击
对抗攻击方法试图通过呈现经过操纵的输入来欺骗DNN,以达到欺骗的目的。对抗攻击可以应用于分类[16,40]、语义分割[3]和物体检测[60]。对抗性图像操作[11]或模型参数操作[19]也可以产生欺骗性的属性图。这些攻击的目标是用虚假的属性图替换一个属性图,在不显著改变DNN的输出的情况下,突出显示同一图像中的另一个位置。这些方法的目的是操纵图像以引起神经网络的意外行为。相比之下,我们的目标是找到适当的输入图像操作,以便最终的属性图能更好地覆盖目标对象。
3.提出的方法
我们在第3.1节中更仔细地研究了对抗攻击方法和类激活映射。在第3.2节和第3.3节中,我们介绍了AdvCAM并解释了如何为弱监督语义分割生成伪标签。最后,在第3.4节中展示了如何使用生成的伪标签训练语义分割网络。
3.1.前期准备工作
对抗攻击更详细说明:对抗攻击旨在找到一个小的像素级扰动,可以改变DNN的输出。换句话说,给定一个输入x,它找到满足NN(x)≠NN(x + n)的扰动n,其中NN(·)是神经网络的输出。一种典型的构造n的方法[16]是考虑到NN的决策边界的法向量,可以通过求解NN相对于x的梯度来实现。然后可以得到一个操作后的图像x',如下所示:
其中ξ确定了对图像的改变程度。这个过程可以理解为梯度下降。
类激活映射(CAM):它确定了分类器所使用的图像区域。CAM是根据特征图的每个通道对分类分数的类别特定贡献计算得出的。它基于一个卷积神经网络,在最后的分类层之前具有全局平均池化(GAP)。可以通过以下方式计算出从图像x计算出的类激活映射CAM(x):
其中wc是类别c的最终分类层的权重,f(x)是在GAP之前x的特征图。CAM填补了图像级别和像素级别注释之间的差距。然而,CAM得到的区域通常比目标物体的完整范围要小得多,因为小的区域提供了足够的分类信息。
3.2.对抗性类激活图(Adversarial Class Activation Map)
3.2.1.对抗攀升
AdvCAM是通过对抗攻击获得的属性图,它是一种反对抗攻击的技术,通过操作图像以增加该图像的分类得分,使分类器能够识别更多的物体区域。这与基于Eq.1的对抗攻击相反,对抗攻击是通过操作图像来降低分类得分。受到PGD [28]的启发,可以使用以下关系对初始图像x0进行迭代对抗攀升:
其中t(1≤t≤T)是对抗步骤的索引,xt是第t步中操作后的图像,yct−1是类别c中xt−1的分类标签。这个过程使得以前不具有区分性但相关的特征更多地参与分类。因此,通过迭代操作的连续图像所获得的CAM可以期望识别出越来越多的目标物体区域。我们通过聚合每个迭代t中从操作图像获得的CAM,生成一个包含迭代结果的定位图A,如下所示:
3.2.2.对抗攀升如何改进CAMs?
分类标签yc和CAM之间的连接,即yc = GAP(CAM)[63],推断出对抗攀升增加了yc和CAM。在这个过程中,参与分类的特征被增强。为了更好地理解对抗攀升如何生成更密集的CAM,我们考虑两个问题:1非区分性特征是否可以被增强?2这些增强的特征从人类的角度来看是否与类别相关?
1)非区分性特征是否可以被增强?:有人可能认为,改变具有较大梯度的像素主要增强区分性特征。由于感受野的影响,这个像素改变会影响许多特征。然而,并不是所有受影响的特征都是必然的区分性特征。我们通过经验支持这个分析。我们定义区分性区域RD={i|CAM(x0)i ≥0.5}和非区分性区域RND={i|0.1<CAM(x0)i <0.5},其中i是位置索引。像素放大比例si t i t是位置i和步骤t处的CAM(xt)i/CAM(x0)i。图2(a)显示,对抗攀升使得si t∈RD和si∈RND t i∈RND t增长,但是增强的非区分性特征比区分性特征更多,从而导致了更密集的CAM。
2)从人类的角度来看,这些增强的特征是否与类别相关?我们现在考虑高亮显示的非区分性特征是否从人类的角度来看与类别相关。Moosavi等人[41]认为,对于输入来说,具有尖锐曲率的损失函数使得神经网络易受到对抗攻击。随后的研究表明,通过减小损失曲面的曲率[41]或者促使损失函数呈线性行为[44]来获得的平坦损失函数曲面可以提高神经网络的鲁棒性。在这个意义上具有鲁棒性的系统已被证明能够产生更符合人类感知的特征,并且更易于理解的方式操作[25,45,55]。
同样的道理,我们可以期望通过对抗攀升操作的图像将产生与人类感知相吻合的特征,因为对抗攀升所影响的损失曲面的曲率很小。为了支持这一点,我们按照Moosavi等人的方法,可视化了我们训练的分类器的损失曲面:我们从计算的分类损失ℓ中获得一个操作向量n和一个随机向量r。我们使用一系列插值比率将操作向量和随机向量之间插值得到的向量对图像进行操作,并计算得到相应的分类损失值。通过对抗攀升获得的损失曲面(图3(a))比通过对抗攻击获得的损失曲面(图3(b))更加平坦。因此,我们可以合理地期望对抗攀升增加与人类角度相关的特征的归因,从而得到更好的CAM。
图2:对于100个图像,i∈RD和i∈RND的像素放大比例si t的分布,(a)没有正则化,(b)有正则化。
3.3.正则化
即使通过对抗攀升获得的损失曲面相对平坦,过多的重复对抗操作可能会导致激活与错误类别中的物体对应的区域,或者增加已经具有高分数的区域的归因分数。为了解决这个问题,我们采取以下两个步骤:(i)抑制与其他类别相关的逻辑值,(ii)限制目标对象的区分性区域上的高归因分数。
抑制其他类别:在一张图像中,不同类别的物体可以相互增加逻辑值。例如,由于椅子和餐桌在图像中主要一起出现,神经网络可能会从餐桌区域推断出椅子的增加的逻辑值。因此,我们添加了一个正则化项,减小除了c类别之外的所有类别的逻辑值。
限制高归因分数:如3.2.2节中所述,对抗攀升会增加特征图中区分性和非区分性区域的归因分数。然而,区分性区域的归因分数的增长存在两个问题:1)它阻止了新的区域被额外归因到分类分数中;2)如果在对抗攀升过程中归因分数的最大值增加,剩余区域的归一化分数可能会降低。请参见图4(b)中的蓝色框。
因此,在对抗攀升过程中,我们限制已经具有高分数的区域的归因分数,以使这些区域的归因分数保持与x0相似。我们通过引入一个限制掩码M来实现这个方案,该掩码包含那些CAM(xt−1)的归因分数高于阈值τ的区域。具体而言,M可以表示如下:
其中1(·)是一个指示函数。图4(a)显示了一个示例的掩码M。我们添加了一个正则化项,以使与M区域对应的CAM值强制等于CAM(x0)的值。通过这种正则化,si t∈RD保持相对恒定,但si t∈RND在对抗攀升过程中仍然增长(图2(b))。图2显示,对抗攀升比区分性特征更多地增强了非区分性特征(<2×),而正则化使这种差异更大(>2.5×)。因此,目标对象的新区域可以更有效地被发现,从而得到更密集的CAM(图4(b))。为了应用正则化,我们将公式3修改如下:
C是所有类别的集合,λ是一个超参数,用于控制掩码正则化的影响,⊙表示逐元素乘法。
图4:(a)一张示例图像及其CAM和限制掩码M。(b)初始CAM以及经过5、10和20步对抗攀升后的CAM,包括有和没有正则化的情况。
3.4.训练分割网络
由于CAM是从分类器生成的下采样的中间特征中获得的,它粗略地定位目标对象,无法表示其精确的边界。许多生成弱监督语义分割初始种子的方法通过使用现有的种子细化方法[1,2,23]来修改它们的初始种子来构建伪地面真值。例如,SEAM [56]和Chang等人[6]使用PSA [2];MBMNet [37]和CONTA [61]使用IRN [1]。我们还将种子细化方法应用于粗糙地图A。对于弱监督学习,我们将生成的轮廓用作DeepLab-v2的伪地面真值,DeepLab-v2是在ImageNet数据集[10]上预训练的。对于半监督学习,我们使用CCT [42],它使用IRN [1]生成伪地面真值掩码;我们将其替换为刚刚描述的我们的掩码。
4.实验
4.1.实验设置
数据集:我们在PASCAL VOC 2012 [12]数据集上进行了实验。这个数据集中的图像带有完全监督语义分割的掩码,但我们只将它们用于评估。在弱监督设置下,我们在Hariharan等人提供的10,582个训练图像上训练我们的网络,这些图像有图像级别的注释。在半监督设置下,我们使用了1,464个带有像素级别注释的训练图像和9,118个具有类别标签的训练图像,这是根据之前的工作[29,38,42,58]进行的。我们通过计算1,449个验证图像和1,456个测试图像的平均交并比(mIoU)值来评估我们的结果。由于测试图像的标签不公开,这些图像的结果是从官方的PASCAL VOC评估服务器获得的。
可重现性:我们进行了T = 27和ξ = 0.008的迭代对抗攀升。我们将λ设置为7,τ设置为0.5。为了生成初始种子,我们遵循了Ahn等人[1]的过程,包括使用ResNet-50 [18]。对于最终的分割,我们使用DeepLab-v2-ResNet101 [8]作为骨干网络。我们遵循了[8]的默认设置进行训练,其中包括将图像裁剪为321×321像素。在半监督设置中,我们使用了Ouali等人[42]相同的设置。
4.2.实验结果
掩码的质量:表1比较了我们的方法和其他最近技术所得到的初始种子和伪地面真值掩码。种子和掩码都是从PASCAL VOC数据集的训练图像中生成的。对于初始种子,我们通过将一系列阈值应用于地图A中的前景和背景来报告最佳结果,类似于SEAM [56]的方法。我们的初始种子比原始的CAMs [64]好6.8%,CAMs被视为基准,而且也优于其他方法。需要注意的是,Chang等人[6]和SEAM [56]使用Wide ResNet-38 [59],它提供比ResNet-50 [18]更好的表示能力。SEAM [56]还使用了一个辅助的自注意模块,通过考虑像素之间的关系对初始CAM进行像素级细化。我们将CRF,一种广泛使用的后处理方法,应用于Chang等人[6]、SEAM [56]、IRN [1]和我们的方法的初始种子。除了SEAM之外,CRF平均提高了种子超过5%,但只提高了SEAM的种子1.4%。我们认为这是因为SEAM的种子已经通过自注意模块进行了细化。我们应用CRF后的种子比SEAM的种子好5.3%。
我们还将经过种子细化后提取的伪地面真值掩码与现有方法进行了比较。大多数方法使用PSA [2]或IRN [1]对其初始种子进行细化。为了进行公平比较,我们使用这两种种子细化技术生成了伪地面真值掩码。表1显示,无论使用哪种种子细化技术,我们的方法都明显优于其他方法。
弱监督语义分割:表2将我们的方法与其他最近引入的弱监督语义分割方法进行了比较,这些方法具有不同级别的监督:完全监督的像素级掩码(P),边界框(B)或图像类别标签(I),带有或不带有显著目标掩码(S)。表2中的所有结果都是使用基于ResNet的骨干网络[18]获得的。仅使用图像级注释,我们的方法在PASCAL VOC 2012验证集和测试集图像上分别实现了68.1和68.0的mIoU值。在相同级别的监督下,这显著优于其他方法。特别是,验证图像的mIoU值比IRN [1]高出4.6%,IRN是我们的基准方法。在我们的竞争对手中,表现最好的方法CONTA [61]实现了66.1的mIoU值;但他们的方法依赖于SEAM [56],而SEAM已被证明优于IRN [1]。如果CONTA与IRN一起实施,得到的mIoU值为65.3,比我们的方法差2.8%。图5展示了FickleNet [29]、IRN [1]和我们的方法生成的语义掩码的示例。
我们的方法还优于使用辅助显著目标掩码监督[35,36]的其他方法,这些方法提供了图像中显著对象的精确边界信息,或者使用额外的网络图像或视频[30,53]。我们的方法的性能也与使用边界框监督的方法[26,31,51]相当。
半监督语义分割:表3将我们的方法在PASCAL VOC验证集和测试集图像上的mIoU分数与其他最近的半监督分割方法进行了比较,这些方法使用了1.5K张带有完全监督掩码的图像和9.1K张带有弱标注的图像。表3中的所有方法都是基于ResNet的骨干网络[18]实现的,除了使用VGG骨干网络[49]的标记了(†)的方法。我们在PASCAL VOC 2012验证集和测试集图像上分别实现了77.8和76.9的mIoU值,这比在相同级别的监督下的其他方法更好。具体而言,我们的方法在验证图像上的性能比CCT [42]好4.6%,CCT是我们的基准方法。我们的方法甚至优于Song等人[51]使用边界框标签对9.1K图像进行分割,而不是使用类别标签。图5展示了CCT [42]和我们的方法生成的语义掩码的示例。
表1:在PASCAL VOC 2012训练图像上,初始种子(Seed)、带有CRF的种子(+CRF)和伪地面真值掩码(Mask)的mIoU(%)值。
表2:PASCAL VOC 2012验证集和测试集上的弱监督语义分割性能。
表3:PASCAL VOC 2012验证集和测试集上半监督语义分割方法的比较。
5.讨论
5.1.迭代对抗攀升
我们通过评估初始种子的mIoU来分析第3.3节中介绍的迭代对抗攀爬和正则化技术的有效性。图6(a)显示了每个对抗迭代的初始种子的mIoU。最初,无论是否进行正则化,mIoU都急剧上升;但是在没有正则化的情况下,曲线在第8次迭代左右达到峰值。
为了分析这一点,我们根据噪声的比例评估了每个对抗攀爬迭代中新定位区域的真实性。我们将噪声定义为被分类为前景但实际上是背景的像素比例。如图6(b)所示,在没有正则化的情况下,噪声比例在一些迭代后急剧上升,这意味着新的区域往往在背景区域内。正则化允许在多达30个对抗步骤中找到目标对象的新区域,并且使噪声比例远远低于初始CAM。图7展示了带有和不带有正则化的每个对抗迭代中的显著图示例。
图5:PASCAL VOC验证集图像的弱监督和半监督方式下的预测语义掩码示例。
图6:对抗攀爬和正则化对种子质量(a)和噪声比例(b)的影响。(c)正则化系数λ的影响。(d)掩码阈值τ的影响。(e)步长ξ的影响。
表4:AdvCAM对不同生成初始种子方法的影响:PASCAL VOC 2012训练图像的初始种子的mIoU(种子)和伪地面真实掩码的mIoU(掩码)。
5.2.超参数分析
在前一节中,我们研究了对抗迭代次数对初始种子的影响(图6(a)和(b))。我们还分析了初始种子的mIoU对AdvCAM使用的其他三个超参数的敏感性。
正则化系数λ:它控制对抗攀爬过程中已经具有高分数的区域的归因分数限制的掩码技术的影响,如公式(7)所示。图6(c)展示了不同λ值下初始种子的mIoU。当λ=0时,没有正则化。掩码技术提高了超过5%的性能(λ=0为50.43,λ=7为55.55)。在λ=5之后,曲线趋于平缓,这表明选择一个合适的λ值并不困难。
掩码阈值τ:它控制在公式(5)中限制掩码M的大小,决定在对抗攀爬过程中有多少像素的归因值将保持与原始CAM类似。图6(d)展示了不同τ值下初始种子的mIoU。这个参数比λ更不敏感:在0.3和0.7之间变化τ只会导致mIoU变化不到1%。 步长ξ:它决定了在公式(6)中对图像进行操作的程度。图6(e)展示了不同ξ值下初始种子的mIoU。在我们的系统中,步长ξ的变化并不特别显著。
步长ξ:它确定了在公式(6)中对图像进行操作的程度。图6(e)展示了不同ξ值下初始种子的mIoU。在我们的系统中,步长ξ的变化并不特别显著。
5.3.我们方法的普适性
除了IRN [1]之外,我们还尝试了两种生成弱监督语义分割初始种子的最新方法,分别是Chang et al. [6]和SEAM [56]。我们尽可能使用了作者训练好的分类器,但由于作者没有提供IRN [1]的预训练分类器,我们重新训练了它的分类器。我们也按照他们的实验设置,包括骨干网络和掩码细化方法,即我们使用PSA [2]来细化“Chang et al.+AdvCAM”或“SEAM +AdvCAM”得到的初始种子。表4给出了将每种方法与对抗攀爬相结合的初始种子和伪地面真实掩码的mIoU值。使用AdvCAM平均提高了初始种子的质量超过4%。我们的方法不需要修改或重新训练这些初始种子生成器。
图7:展示了通过迭代对抗攀爬对图像进行操作后得到的初始CAM(蓝色框)和连续的定位图示例,其中上方是使用正则化过程,下方是没有使用正则化。
图8:展示了具有“bird”(蓝色)和“cat”(绿色)标签的图像的特征流形,以及每个类别的一张图像的对抗攀爬轨迹。特征的维度通过t-SNE [39]进行了降维。
5.4.流行可视化
为了在特征级别上可视化对抗攀爬的轨迹,我们使用了t-SNE降维[39]。我们收集了包含单个猫或鸟类的图像,并且这些图像被分类器正确预测。然后,我们构建了一个包含这些图像特征的集合F,这些特征是在最终分类层之前提取的。我们还选择了一张代表性的猫的图像和一张代表性的鸟的图像,并构建了一个包含这两张图像及其通过对抗攀爬生成的20张图像的特征集合F'。图8展示了F ∪F'中特征的t-SNE可视化结果。我们可以看到,对抗攀爬实际上将特征从将蓝色区域和绿色区域分开的决策边界上推开。此外,尽管经过了20步的对抗攀爬,操作后的特征并没有显著偏离每个类别的特征流形。
6.结论
我们展示了如何利用对抗操作来扩展目标对象的小的可区分区域,从而获得更好的目标对象定位。我们通过对输入图像计算分类器输出相对于输入图像的梯度来获得像素级扰动,从而增加被扰动图像的分类得分。操作后的图像的归因图覆盖了更多的目标对象。这是对经过训练的分类器的事后分析,因此不需要对分类器进行修改或重新训练。这使得AdvCAM可以方便地集成到现有方法中。我们已经展示了AdvCAM确实可以与最近的弱监督语义分割网络相结合,并在弱监督和半监督语义分割方面取得了新的最优性能。
相关文章:
![](https://img-blog.csdnimg.cn/ccd6d5b34caf4ead95b6e858d310a4f7.png)
二十三章:抗对抗性操纵的弱监督和半监督语义分割的属性解释
0.摘要 弱监督语义分割从分类器中生成像素级定位,但往往会限制其关注目标对象的一个小的区域。AdvCAM是一种图像的属性图,通过增加分类分数来进行操作。这种操作以反对抗的方式实现,沿着像素梯度的相反方向扰动图像。它迫使最初被认为不具有区…...
![](https://www.ngui.cc/images/no-images.jpg)
curator实现的zookeeper可重入锁
Curator是一个Apache开源的ZooKeeper客户端库,它提供了许多高级特性和工具类,用于简化在分布式环境中使用ZooKeeper的开发。其中之一就是可重入锁。 Curator提供了InterProcessMutex类来实现可重入锁。以下是使用Curator实现ZooKeeper可重入锁的示例&am…...
![](https://img-blog.csdnimg.cn/0e8ed9de41234cf6b41bf8cd986aeb22.png)
抽象工厂模式——产品族的创建
1、简介 1.1、简介 抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品 1.2、定义 抽象工厂模式(Abstract Factory Pattern):提供…...
![](https://img-blog.csdnimg.cn/2fa02dff54c24f75a68f419c86cf25b5.png#pic_center)
【C语言初阶篇】自定义类型结构体我不允许还有人不会!
🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言1 . 什么是结构体1.1 结构的定义1.2 结构的声明 2.结构体初始化2.1 用标签名定义和初始化2.2…...
![](https://img-blog.csdnimg.cn/29b8a24fd60645dbabdded646166cd9a.jpeg)
重大更新|Sui主网即将上线流动性质押,助力资产再流通
Sui社区一直提议官方上线流动质押功能,现在通过SIP过程,已经升级该协议以实现这一功能。 Sui使用委托权益证明机制(DPoS)来选择和奖励负责运营网络的验证节点。为了保障网络安全,验证节点通过质押SUI token获得质押奖…...
![](https://www.ngui.cc/images/no-images.jpg)
day3 驱动开发 c语言编程
通过ioctl(内核应用层) 控制led灯三盏,风扇,蜂鸣器,小马达 头文件head.h #ifndef __LED_H__ #define __LED_H__typedef struct {volatile unsigned int TZCR; // 0x000volatile unsigned int res1[2]; // 0x…...
![](https://img-blog.csdnimg.cn/9b0df72add7842fe97be4139aa2afd9a.png)
【字节跳动青训营】后端笔记整理-3 | Go语言工程实践之测试
**本文由博主本人整理自第六届字节跳动青训营(后端组),首发于稀土掘金:🔗Go语言工程实践之测试 | 青训营 目录 一、概述 1、回归测试 2、集成测试 3、单元测试 二、单元测试 1、流程 2、规则 3、单元测试的例…...
![](https://www.ngui.cc/images/no-images.jpg)
【Android】Recyclerview的缓存复用
介绍 RecyclerView是Android开发中常用的一个高度可定制的列表视图组件。它是在ListView和GridView的基础上进行了改进和增强,旨在提供更好的性能和更灵活的布局管理。 RecyclerView的主要特点如下: 灵活的布局管理器(LayoutManager&#…...
![](https://img-blog.csdnimg.cn/7c55946709514686886c7d3ab2377ee3.png)
机器学习:混合高斯聚类GMM(求聚类标签)+PCA降维(3维降2维)习题
使用混合高斯模型 GMM,计算如下数据点的聚类过程: Datanp.array([1,2,6,7]) 均值初值为: μ1,μ21,5 权重初值为: w1,w20.5,0.5 方差: std1,std21,1 K2 10 次迭代后数据的聚类标签是多少? 采用python代码实现: from scipy import…...
![](https://www.ngui.cc/images/no-images.jpg)
libuv库学习笔记-processes
Processes libuv提供了相当多的子进程管理函数,并且是跨平台的,还允许使用stream,或者说pipe完成进程间通信。 在UNIX中有一个共识,就是进程只做一件事,并把它做好。因此,进程通常通过创建子进程来完成不…...
![](https://img-blog.csdnimg.cn/eb58f6b6652e472780284cc4e59998c7.png#pic_center)
c++ 给无名形参提供默认值
如上图,若函数的形参不在函数体里使用,可以不提供形参名,而且可以给此形参提供默认值。也能编译通过。 在看vs2019上的源码时,也出现了这种写法。应用SFINAE(substitute false is not an error)原则&#x…...
![](https://img-blog.csdnimg.cn/567d3f479a9f45c3a0a0dfcd04baa073.png)
NO1.使用命令行创建Maven工程
①在工作空间目录下打开命令窗口 ②使用命令行生成Maven工程 mvn archetype:generate 运行 MVN 原型:生成命令,下面根据提示操作 选择一个数字或应用过滤器(格式:[groupId:]artifactId,区分大小写包含)&a…...
![](https://img-blog.csdnimg.cn/f675b9a173fa477b9ff3e1e5f6de8638.png#pic_center)
深度学习入门(一):神经网络基础
一、深度学习概念 1、定义 通过训练多层网络结构对位置数据进行分类或回归,深度学习解决特征工程问题。 2、深度学习应用 图像处理语言识别自然语言处理 在移动端不太好,计算量太大了,速度可能会慢 eg.医学应用、自动上色 3、例子 使用…...
![](https://img-blog.csdnimg.cn/d915e13a0e8a4f7a8a54a2a779ee0329.png)
网络知识整理
网络知识整理 网络拓扑网关默认网关 数据传输拓扑结构层面协议层面 网络拓扑 网关 连接两个不同的网络的设备都可以叫网关设备,网关的作用就是实现两个网络之间进行通讯与控制。 网关设备可以是交换机(三层及以上才能跨网络) 、路由器、启用了路由协议的服务器、代…...
![](https://img-blog.csdnimg.cn/img_convert/44408a5e523a1d0369ae7fae1ab2a058.png)
如何有效地使用ChatGPT写小说讲故事?
构思故事情节,虽有趣但耗时,容易陷入写作瓶颈。ChatGPT可提供灵感,帮你解决写作难题。要写出引人入胜的故事,关键在于抓住八个要素——主题、人物、视角、背景、情节、语气、冲突和解决办法。 直接给出故事模板,你可…...
![](https://img-blog.csdnimg.cn/111dce1a8f8348789de0879e8c1dcd84.png)
原生求生记:揭秘UniApp的原生能力限制
文章目录 1. 样式适配问题2. 性能问题3. 原生能力限制4. 插件兼容性问题5. 第三方组件库兼容性问题6. 全局变量污染7. 调试和定位问题8. 版本兼容性问题9. 前端生态限制10. 文档和支持附录:「简历必备」前后端实战项目(推荐:⭐️⭐️⭐️⭐️…...
![](https://img-blog.csdnimg.cn/4013737ceef2416282cdeb3c2e6a0a34.png)
网络编程 IO多路复用 [epoll版] (TCP网络聊天室)
//head.h 头文件 //TcpGrpSer.c 服务器端 //TcpGrpUsr.c 客户端 通过IO多路复用实现服务器在单进程单线程下可以与多个客户端交互 API epoll函数 #include<sys/epoll.h> int epoll_create(int size); 功能:创建一个epoll句柄//创建红黑树根…...
![](https://img-blog.csdnimg.cn/2868d0718ec64ab8b9a96bd64cb2f7bc.png)
【go-zero】浅析 01
“github.com/google/uuid” uuid.New().String() go-zero 文档 https://www.w3cschool.cn/gozero/ go-zero 官网 https://go-zero.dev/ 快速开始: $ mkdir go-zero-demo $ cd go-zero-demo $ go mod init go-zero-demo $ goctl api new greet $ go mod tidy Done…...
![](https://img-blog.csdnimg.cn/32c64873df7742e2bdcee79aa9c83b6c.png)
音视频——视频流H264编码格式
1 H264介绍 我们了解了什么是宏快,宏快作为压缩视频的最小的一部分,需要被组织,然后在网络之间做相互传输。 H264更深层次 —》宏块 太浅了 如果单纯的用宏快来发送数据是杂乱无章的,就好像在没有集装箱 出现之前,…...
![](https://img-blog.csdnimg.cn/725f9d28e6e54810ac5c9c187f37d6d9.png)
【使用深度学习的城市声音分类】使用从提取音频特征(频谱图)中提取的深度学习进行声音分类研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
![](https://www.ngui.cc/images/no-images.jpg)
机器学习完整路径
一个机器学习项目从开始到结束大致分为 5 步,分别是定义问题、收集数据和预处理、选择算法和确定模型、训练拟合模型、评估并优化模型性能。是一个循环迭代的过程,优秀的模型都是一次次迭代的产物。 定义问题 要剖析业务场景,设定清晰的目标…...
![](https://img-blog.csdnimg.cn/img_convert/2b6ff16495fbba7fafec0c749abf0f60.png)
CK-00靶机详解
CK-00靶机详解 靶场下载地址:https://download.vulnhub.com/ck/CK-00.zip 这个靶场扫描到ip打开后发现主页面css是有问题的,一般这种情况就是没有配置域名解析。 我们网站主页右击查看源代码,发现一个域名。 把域名添加到我们hosts文件中。…...
![](https://img-blog.csdnimg.cn/5e9df4eb74fb47f1af05e2902e69e583.png)
17-C++ 数据结构 - 栈
📖 1.1 什么是栈 栈是一种线性数据结构,具有后进先出(Last-In-First-Out,LIFO)的特点。可以类比为装满盘子的餐桌,每次放盘子都放在最上面,取盘子时也从最上面取,因此最后放进去的盘…...
![](https://img-blog.csdnimg.cn/img_convert/a361e811a880ba6f7625dc4b277dd9da.png)
Redis如何实现排行榜?
今天给大家简单聊聊 Redis Sorted Set 数据类型底层的实现原理和游戏排行榜实战。特别简单,一点也不深入,也就 7 张图,粉丝可放心食用,哈哈哈哈哈~~~~。 1. 是什么 Sorted Sets 与 Sets 类似,是一种集合类型ÿ…...
![](https://img-blog.csdnimg.cn/edb09b9f59a64164a363d84daaaeaf74.png)
Pycharm debug程序,跳转至指定循环条件/循环次数
在断点出右键,然后设置条件 示例 for i in range(1,100):a i 1b i 2print(a, b, i) 注意: 1、你应该debug断点在循环后的位置而不是循环上的位置,然后你就可以设置你的条件进入到指定的循环上了 2、设置条件,要使用等于符号…...
![](https://www.ngui.cc/images/no-images.jpg)
react实现markdown
参考:https://blog.csdn.net/Jack_lzx/article/details/118495763 参考:https://blog.csdn.net/m0_48474585/article/details/119742984 0. 示例 用react实现markdown编辑器 1.基本布局及样式 <><div classNametf_editor_header>头部&…...
![](https://img-blog.csdnimg.cn/img_convert/4752117caece78674b127ecb65328e46.png)
HTTP请求走私漏洞简单分析
文章目录 HTTP请求走私漏洞的产生HTTP请求走私漏洞的分类HTTP请求走私攻击的危害确认HTTP请求走私漏洞通过时间延迟技术确认CL漏洞通过时间延迟技术寻找TE.CL漏洞 使用差异响应内容确认漏洞通过差异响应确认CL.TE漏洞通过差异响应确认TE.CL漏洞 请求走私漏洞的利用通过请求漏洞…...
![](https://img-blog.csdnimg.cn/img_convert/fa06f9186c95dca037d2f7f17e8761b1.webp?x-oss-process=image/format,png)
BI-SQL丨两表差异比较
BOSS:哎,白茶,我们最近新上了一个系统,后续有一些数据要进行源切换,这个能整么? 白茶:没问题,可以整! BOSS:哦,对了,差点忘记告诉你了…...
![](https://www.ngui.cc/images/no-images.jpg)
ZooKeeper 选举的过半机制防止脑裂
结论: Zookeeper采用过半选举机制,防止了脑裂。 原因: 如果有5台节点,leader联系不上了,其他4个节点由于超过半数,所以又选出了一个leader,当失联的leader恢复网络时,发现集群中已…...
![](https://img-blog.csdnimg.cn/0ebc1aa477b94e338268b260ddb7ed21.png)
【图论】树上差分(边差分)
一.简介 其实点差分和边差分区别不大。 点差分中,d数组存储的是树上的节点 边差分中,d数组存储的是当前节点到父节点的那条边的差分值。 指定注意的是:边差分中因为根连的父节点是虚点,所以遍历结果时应当忽略! 二…...
![](/images/no-images.jpg)
顺企网企业查询/西安seo服务外包
题目描述 G 公司有 \(n\) 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 \(n\) 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。 输入格式 文件的第 \(1\) 行中有 \(1\) 个正整数 \(n\) ,…...
![](/images/no-images.jpg)
前端开发框架有哪些/苏州网站seo服务
dim current_dir as string Dim v_File New StreamReader(current_dir)Dim all_info As Stringall_info v_File.ReadToEnd()v_File.Close()v_File Nothing转载于:https://www.cnblogs.com/goodspeed-fish/archive/2013/05/21/3091728.html...
![](https://img-blog.csdnimg.cn/img_convert/2188d02c7e1371337c5042107c0aaee0.png)
九龙坡集团网站建设/游戏推广赚佣金平台
8年,从5000万元到1207亿,从27个品牌到全球超14万商家投入,一场来自全球235个国家和地区、近6亿消费者的共同狂欢,成了形同“春晚”的存在,这恐怕是马云当初都没曾想过的中国式奇迹。 但是,当这一天的数字逐…...
![](http://hi.csdn.net/attachment/201108/1/0_13121789685QY4.gif)
网站制作布局/线上推广的三种方式
OpenGL ES 03 – 转化今天,我们要在之前的基础 上,在屏幕上同时显示三角形和矩形。为了做到这点,我们需要移动它们。移动物体这个动作我们称之为转化。(坐标转换)在OpenGL ES中,对模型/物体进行…...
![](https://img-blog.csdnimg.cn/img_convert/4751e4d1c7abe41f7e66927ee4fbee1c.png)
进一步优化供给推动消费平稳增长/青岛 google seo
前言 大厂面试一直都是程序员圈内摸鱼时间津津乐道的话题,进大厂想必也是无数程序员的梦想。 关于“原理”的问题,几乎是现如今Android开发岗必问的问题,尤其在大厂面试中更为突出。有过大厂面试经验的小伙伴应该知道:大厂的面试…...
![](/images/no-images.jpg)
it运维外包服务方案/seo网站排名优化快速排
一、接口测试的本质 :只是做了数据传递 二、接口测试的核心含义 :能够把请求发出去,然后接收的响应结果,结束是否达到我们的预期 三、Jmeter进行接口测试的固定流程 1.用工具创建HTTP请求 2.用工具发出请求 3.校验数据ÿ…...