标签:出现 ORC height tiff ted 最大的 工作表 诊断 补充
https://github.com/haofanwang/Score-CAM
Score-CAM:
Score-Weighted Visual Explanations for Convolutional Neural Networks
Abstract
近年来,卷积神经网络的内部机制以及网络做出特定决策的原因越来越受到人们的关注。在本文中,我们开发了一种新的基于类激活映射的post-hoc视觉解释方法,成为Score-CAM。与以往基于类激活映射的方法不同,Score-CAM通过每个激活映射在目标类上的前向传递分数来获得每个激活映射的权重,从而摆脱了对梯度的依赖,最终结果由权重和激活映射的线性组合得到。研究结果表明,Score-CAM在解释决策过程方面具有更好的视觉效果和公平性。我们的方法在识别和定位任务上都优于以前的方法,它也通过了完整性检查。
1. Introduction
深层神经网络(DNNs)的解释的目的是增加模型对人类的透明度,以便推理背后的逻辑可以以人类理解的方式进行解释。在提供解释的过程中,可视化一些感兴趣的东西,例如输入特性或学习权重的重要性,成为获得用户信任的最直接的方法。在DNNs中各种成分中,空间卷积一直是图像和语言处理特征提取的首选。为了更好地解释卷积运算和卷积神经网络(CNNs),目前被广泛采用的方法有梯度可视化[15]、Perturbation[10]、类激活映射(CAM)[21]。
基于梯度的方法将目标类的梯度反向传播到输入层,以突出对预测影响较大的图像区域。[15]利用目标类分数对输入图像的导数来生成显著map(saliency map)。其他作品[1,8,17,18,20]对原始的梯度进行了额外的处理,并在视觉上使显著map更清晰。这些maps通常是低质量的,且仍然有噪声[8]。基于Perturbation的方法[3,5,6,9,10,19]通过扰动原始输入,观察模型预测的变化。为了找到最小区域,这些方法通常需要额外的正则化[6]和时间成本。
基于CAM的解释[4,12,21]通过卷积层激活映射的线性加权组合,为单个输入提供了可视化的解释。CAM[21]创建局部的可视化解释,但它对体系结构是敏感的,需要一个全局池化层[7]来跟随感兴趣的卷积层。Grad-CAM[12]及其变体,如Grad-CAM++[4],打算将CAM推广到没有全局池化层的模型,并最终在社区中得到广泛采用。在这项工作中,我们回顾了梯度CAM中梯度信息的使用,并讨论了为什么梯度可能不是泛化CAM的最佳解决方案。此外,为了解决CAM基于梯度的变化的局限性,我们提出了一种新的post-hoc可视化解释方法,名为Score-CAM,其中激活maps的重要性由相应输入特征的全局贡献编码,而不是局部灵敏度测量——即梯度信息编码。我们的工作总结如下:
(1)我们引入了一种新的无梯度可视化解释方法——Score-CAM,它弥补了基于Perturbation和基于CAM的方法之间的差距,并以直观易懂的方式表示激活maps的权重。
(2)定量评价了Score-CAM生成的显著maps在识别任务上的公平性,具体为Average Drop / Average Increase and Deletion curve / Insertion curve 指标,表明Score-CAM能够更好地找到目标类的证据。
(3)定性地评估了可视化和定位性能,在这两个任务上都取得了较好的效果。最后,我们介绍了它作为一个调试工具在分析模型错误行为中的有效性。
2. Background
类激活映射(CAM)[21]是一种通过在全局池化层之前的最后一个卷积层的激活映射的线性加权组合来识别区分区域的技术。为了在多个通道上进行聚合,CAM将每个通道的重要性与下面全连接层的相应权重合并,生成一个分数作为类置信度。CAM最大的限制是,并不是每个模型都设计了一个全局池化层,甚至还存在一个全局池化层,有时在softmax函数之前会有更多的全连接层,例如VGG[15]。作为CAM的一个泛化,Grad-CAM[12]可以适用于更广泛的CNN架构,而不需要特定的架构。在深入分析CAM及其变体之前,我们首先介绍本文中使用的符号。
Notation 考虑一个输入为,输出为一个概率分布Y的CNN神经网络 Y = f(x),使用Yc表示被分类为类c的概率。对于给定的层,表示层的激活。尤其是,如果表示一个卷积层,则表示第k个channel的激活map。将表示用于连接两个层和层中的第k个神经元的权重为(其实就是第层的输出,第层的输入)
Definition 1 (Class Activation Map) 使用Sec 2中的标注,考虑一个包含全局池化层的模型 f ,使用最后一个卷积层的输出,并将其输入池化层,然后将池化后的激活输入用于分类的全连接层。对于一个感兴趣的类c,CAM 被定义为:
其中是层的全局池化层后的第k个神经元的权重
CAM的动力是每个激活map 都包含不同的输入X的空间信息,每个channel的重要性是 全局池化层后的全连接层的线形结合的权重。但是,如果模型中没有全局池化层,或没有(或者有多个)全连接层,CAM将会失败,因为不存在。为了解决这个问题,Grad-CAM扩展了的定义,变为了类置信度Yc关于激活map 的梯度。最后,我们得到了下面关于Grad-CAM的定义
Definition 2 (Grad-CAM) 使用Sec 2的标注,考虑一个模型 f 中的一个卷积层,给定一个感兴趣的类c,Grad-CAM 定义为:
(在原始的Grad-CAM论文中,作者使用了全局平均池化并对归一化,去保证)
Grad-CAM的变体,如Grad-CAM++,仅微分用于表示的梯度结合。因此,我们没有显式讨论其定义,但是在下面的内容中,使用了它来比较。
使用梯度来整合每个通道对类置信度的重要性是一种自然选择,而且它也保证了在所选层之后只有一个完全连接的层时,Grad -CAM会减少为CAM。重新思考激活图中每个通道的“重要性”概念,我们发现,与梯度信息相比,增强信心(定义见第3节)是量化通道重要性的更好方法。首先讨论了利用梯度测量重要度的一些问题,然后在第3节提出了新的信道重要度测量方法。
使用梯度来整合每个通道对类置信度的重要性是一种自然选择,而且它也保证了在所选层之后只有一个全连接的层时,Grad-CAM会变为CAM。重新思考激活map中每个channel的“重要性”概念,我们发现,与梯度信息相比,Increase of Confidence(定义见第3节)是量化channel重要性的更好方法。首先讨论了利用梯度测量重要度的一些问题,然后在第3节提出了新的channel重要度测量方法。
2.1. Gradient Issue
Saturation 由于Sigmoid函数的饱和问题或ReLU函数的零梯度区域,深度神经网络的梯度可能会有噪声,并且容易消失。结果之一是输出关于输入的梯度或内部层激活可能在视觉上是有噪音的,这也是显著map(Saliency Map )方法[14]的问题之一,它将输入特征的重要性归功于输出。一个梯度在视觉上带有噪声的例子显示在了图4中。
False Confidence 是每个激活map的一个线性组合。因此,给定两个激活map ,如果对应的权重,我们认为对于目标类‘c‘来说,生成的输入区域至少是和生成的另一个区域同样重要的。然而,在Grad -CAM中很容易找到错误置信度的反例:与零基线相比,具有更高权重的激活map对网络输出的贡献更低。我们随机选择激活map并将它们向上采样到输入大小中,然后记录如果我们只在激活map中保持高亮显示的区域,目标分数将是多少。图2给出了一个示例。与“head”部分对应的激活map获得最高的权重,但在目标分数上增加的最低。这种现象可能是由于梯度顶部的全局池化操作和网络中的梯度消失问题造成的。
3. Score-CAM: Proposed Approach
在本节中,我们首先介绍提出的用于解释基于CNN的预测的Score-CAM机制。该框架的pipeline如图3所示。我们首先在第3.1节介绍我们的方法。实现细节在3.2节。
其实过程就是:
1)将输入代入模型,得到对应的分数S,以及得到对应选择的卷积层的输出激活map
2)将channel数为N的N个激活map作为mask,乘以输入,作为新的输入,代入模型,得到N个新的输出分数S‘
3)然后用N个新的输出分数S‘分别与原始的分数S相减,这就得到N个S_minus结果
4)N个S_minus使用softmax函数计算得到的结果就作为了选择的卷积层的输出激活map的权重
5)N个权重分别和对应的N个输出激活map相乘,然后求和,在输入ReLU(),就能够得到对应的saliency map了
3.1. Methodology
与之前的方法[4,12]不同,之前的方法使用流入最后一个卷积层的梯度信息来表示每个激活map的重要性,这里我们将重要性作为 Increase of Confidence来考虑。
Definition 3 (Increase of Confidence) 给定一个通用函数Y=f(x),使用输入向量X = ,然后输出一个标量Y。对于已知的基线输入Xb,xi对于Y的贡献ci 是通过用xi替换Xb第i个entry导致的输出的变化。公式为:
其中Hi是与Xb有着相同形状的向量,但是在Hi中的每个entry hj,,表示Hadamard Product。
一些相关的工作已经建立了类似于definition 3的概念。DeepLIFT[13]使用给定输入的输出与基线的差异来量化通过层传播的信号的重要性。为了评价定位性能,GradCAM++[4]提出了两个相似的概念:Average Drop %和Increase in Confidence。为了衡量每个激活map的重要性,我们为Channel-wise Increase of Confidence生成了Def.3。
Definition 4 给定一个CNN模型Y=f(x),输入X,输出一个标量Y。我们选择f中的一个内部卷积层和对应的激活。表示的第k个channel为。对于一个已知的基线输入Xb,对Y的贡献定义为:
Up(.)表示将上采样到输入大小的操作,s(.)是正则化函数,用来将输入矩阵中的元素映射到[0,1]范围中
Use of Upsampling CIC首先对一个对应于原始输入空间中特定区域的激活map进行上采样,然后用上采样的激活map对输入进行扰动。该激活map的重要性是通过masked输入的目标分数得到的。与[9]不同的是,通过蒙特卡罗采样生成N个小于图像大小的masks,然后将每个masks向上采样到输入大小,CIC不需要生成masks的过程。相反,每个上采样的激活map不仅显示了与内部激活map最相关的空间位置,而且可以直接作为mask对输入图像进行扰动。
Smoothing with Normalization Increase in Confidence基本上就是在输入上添加了一个二进制mask Hi,只保留了输入中感兴趣的部分。但是,当我们对输入图像中的一个特定区域而不是一个像素感兴趣时,二进制mask可能不是一个合理的选择。为了生成更平滑的mask ,我们不用将所有元素设置为二进制,只用归一化每个激活map中的原始激活值到[0,1]范围即可。我们在Score-CAM的等式1中使用了如下的归一化函数:
最后,我们在def 5中描述了我们提出的可视化解释方法Score-CAM。在算法1中描述了实现的完整细节。
Definition 5 (Score-CAM) 使用了Sec 2中的标注,考虑模型f中的一个卷积层,给定一个感兴趣的类c,Score-CAM被定义为:
其中C(.)表示激活map 的CIC分数
与[4,12]类似,我们也对maps的线性组合应用ReLU函数,因为我们只对对感兴趣的类别有正影响的特征感兴趣。由于权重来自与目标类上的激活maps对应的CIC得分,因此Score-CAM摆脱了对梯度的依赖。虽然最后一个卷积层因为是特征提取[12]的终点,是一个更好的选择,但是在我们的框架中可以选择任何的中间卷积层。
3.2. Normalization on Score
神经网络中每一个前向传播都是独立的,每一个前向传播的分数幅度是不可预测且不是固定的。归一化后的相对输出值(post-softmax,softmax之后的结果)比绝对输出值(softmax之前的结果)更适合用来衡量相关性。因此,在Score-CAM中,我们将权重表示为post-softmax值,以便分数可以被重新标定为一个固定的范围。
由于每次预测的范围不同,使用softmax与否会产生差异。图5显示了一个有趣的发现。该模型预测输入图像为“狗”,无论采用哪种分数类型,都可以正确地高亮对应位置。但对于目标类“猫”,如果使用pre-softmax logit作为权重,Score-CAM高亮了“狗”和“猫”两个区域。相反,使用softmax的Score-CAM可以很好地区分两个不同的类别,尽管预测“猫”的概率低于预测“狗”的概率。归一化操作使Score-CAM具有良好的类辨别能力。
4. Experiments
在本节中,我们通过实验来评估所提出的解释方法的有效性。首先,在第4.1节中,我们通过ImageNet上的可视化来定性地评估我们的方法。第二,在第4.2节中,我们评估了图像识别中解释的公平性(突出区域对模型决策的重要性)。在章节4.3中,我们展示了在给定图像中对象的类条件定位的有效性。完整性检查在第4.4节中进行。最后,我们使用Score-CAM作为调试工具来分析4.5章节中的模型不当行为。
在接下来的实验中,除非另有说明,我们使用Pytorch model zoo中预先训练好的VGG16 network作为基础模型,在附录中提供了其他网络架构的更多可视化结果。我们的实验使用的是公开的对象分类数据集ILSVRC2012 val[11]。对于输入图像,我们将其大小调整为(224×224×3),将其变换到范围[0,1],然后使用均值向量[0.485,0.456,0.406]和标准差向量[0.229,0.224,0.225]进行归一化。不执行进一步的预处理。
4.1. Qualitative Evaluation via Visualization
4.1.1 Class Discriminative Visualization
我们定性地比较了8种最先进的方法,即基于梯度、基于扰动和基于CAM的方法产生的显著maps。我们的方法以较少的随机噪声产生更多视觉上可解释的显著maps。结果如图4所示,附录中提供了更多示例。如图所示,在Score-CAM中,随机噪声远小于Mask [6], RISE [9], Grad-CAM[12]和Grad-CAM++[4]。与基于梯度的方法相比,我们的方法还可以生成更平滑的显著maps。
我们证明了Score-CAM可以区分不同的类,如图6所示。VGG-16模型将输入分类为49.6%置信度的“bull mastiff”和0.2%置信度的“tiger cat”,我们的模型正确地给出了这两类输入的解释位置,尽管后者的预测概率远低于前者。期望Score-CAM能够区分不同的类别是合理的,因为每个激活map的权重都与目标类上的响应相关,这使得Score-CAM具有良好的类别区分能力。
4.1.2 Multi-Target Visualization
Score-CAM不仅能够准确地定位单个对象,而且在定位多个同类对象时也比以往的工作表现出更好的性能。结果如图7所示,Grad-CAM[12]倾向于只捕捉图像中的一个目标,Grad-CAM++[4]和Score-CAM都显示了定位多个目标的能力,但是Score-CAM的显著map比Grad-CAM++更加聚焦。
由于每个激活map的权重用其在目标类上的得分来表示,因此模型预测的每个置信度较高的目标对象都可以单独高亮显示。因此,所有与目标类相关的证据都可以得到响应,并通过线性组合进行组合。
4.2. Faithfulness Evaluation via Image Recognition
首先,我们评估了在[4]中所采用的对象识别任务中,由Score-CAM产生的解释的可信度。原始输入通过与显著map的点乘来进行masked,以观察目标类上的分数变化。在这个实验中,我们没有对原始生成的显著map进行点乘,而是对显著map中正像素的数量进行了轻微的修改(在我们的实验中,图像中50%的像素被消去了)。我们遵循[4]中使用的度量去测量质量,Average Drop被表示为(说明添加map的输入导致分数降低的情况,越小越好,说明导致分数下降的程度低),Increase In Confidence(也叫做Average Increase,说明添加map的输入导致分数增高的情况,越大越好,说明导致分数上升的程度高)被表示为,其中Yci是图像i中类c的预测分数,Oci是输入带有解释map区域的类c的预测分数。Sign表示一个指示器函数,如果输入为真,则返回1。在ImageNet (ILSVRC2012)验证集上进行实验,随机选取2000张图像。结果见表1。
从表1可以看出,Score-CAM的Average Drop为31.5%,Average Increase为30.6%,在很大程度上优于其他基于微扰和基于CAM的方法。在识别任务上的良好表现表明,Score-CAM可以成功地找到目标物体的最易识别的区域,而不仅仅是发现人类的想法是重要的。这里我们不与基于梯度的方法进行比较,因为它们的视觉属性不同。在识别任务上的结果表明,相对于以往的方法,Score-CAM能更真实地揭示原始CNN模型的决策过程。
此外,为了更全面的比较,我们还对[9]中提出的删除和插入度量进行了评价。作为Average Drop和Average Increase度量的补充,删除度量随着越来越多的重要像素被移除,预测类的概率降低,其中每个像素的重要性从生成的显著map中得到。一个急剧下降的概率曲线下的一个较小的区域(作为被移除像素的分数的函数)意味着一个很好的解释。另一方面,插入度量测量随着越来越多的像素被引入,概率的增加,较高的AUC表明一个更好的解释。
有几种方法消除图像的像素[5],所有这些方法有不同的优点和缺点。因此,在这个实验中,我们简单地通过设置像素值为0或1(步长设置为0.01),从一个图像中删除或引入像素(即每一个步骤删除或引入整个图像的1%像素)。示例如图8所示。表3报告了超过2000幅图像的平均结果,其中我们的方法在两个指标上都比基于梯度的CAM方法取得了更好的性能。
4.3. Localization Evaluation
在本节中,我们通过定位能力来度量生成的显著map的质量。我们从基于能量的角度来处理这个问题,扩展了从显著map中提取最大点来观察最大点是否落在物体边界框中的pointing game。与只使用最大值点不同,我们关心有多少显著map的能量落在目标对象的边界框中。具体来说,我们首先将输入图像与目标类别的边界框进行二值化,内部区域为1,外部区域为0。然后将其与生成的显著map相乘,求和得到目标边界框内的能量。该度量表示为,在基于能量的pointing game中使用该度量。
我们可以看到,在ILSVRC验证集中,对象占据了图像大部分区域的现象是很常见的,这使得这些图像不适合度量生成的显著map的定位能力。因此,我们从验证集中随机选取对象占整个图像50%以上的图像,为了方便,我们只考虑目标类只有一个边框的图像。我们对ILSVRC 2012验证集中随机选取的500幅图像进行实验,评估结果如表2所示,结果表明我们的方法在很大程度上优于以往的工作,显著map中超过60%的能量落在目标对象的ground truth边界框中。这也证实了由Score-CAM生成的显著map具有较少的噪音。我们没有将其与Guided BackProp[17]进行比较,因为它的工作原理类似于边缘检测器,而不是显著map(heatmap)。另外,对于segmentation label的评估应该比object bounding box更加准确,我们会在以后的工作中增加这个功能。
4.4. Sanity Check
[2]发现,仅仅依靠视觉评估可能会产生误导。一些显著(saliency)方法[17]是独立于模型和数据生成过程的。我们采用[2]中提出的模型参数随机化检验方法,将经过训练模型上的Score-CAM输出与随机初始化的相同架构的未经过训练的网络输出进行比较。如图9所示,与Grad-CAM和Grad-CAM++一样,Score-CAM也通过了完整性检查。Score-CAM结果对模型参数敏感,能反映模型的质量。
4.5. Applications
一个好的post-hoc解释不仅应该告诉我们模型注意点在哪里,还应该帮助研究人员分析他们的模型。我们声称,以前的很多工作都把可视化解释当作一种进行定位的方法,而忽略了它在帮助分析原始模型方面的有用性。在这一部分中,我们说明如何利用由Score-CAM生成的解释进行模型分析,并为未来的探索提供见解。
我们观察到,即使在分类性能较差的情况下,Score-CAM仍能很好地完成定位任务,但随着分类性能的提高,显著map中的噪声减小,并且更集中于重要区域。噪声表明了分类性能。这也可以作为判断模型是否收敛的提示,如果生成的显著map不再改变,则模型可能已经收敛。
此外,Score-CAM还可以帮助诊断模型做出错误预测的原因和识别数据集的偏差。图11中带有“bicycle”标签的图像被划分为“person”。生成两个类的显著map。通过比较,我们知道“person”与“bicycle”是相关的,因为“person”出现在训练集中大多数的“bicycle”图像中,而“person”区域是最容易导致错误分类的干扰区域。
5. Conclusion
在本文中,我们提出了一种新的CAM变体,即Score-CAM,作为一种更好的可视化解释方法。Score-CAM在设计每个激活map的权重时结合了Increase In Confidence,摆脱了对梯度的依赖,具有更合理的权重表示。我们提供动机、实现、定性和定量评估的深入分析。我们的方法在识别和定位评估指标中,优于所有以前的基于CAM的方法和其他先进的方法。未来的工作包括探索在其他CAM变体中不同的权重表示的联系。
特征可视化技术(CAM) - 4 - Score-CAM - 论文学习
标签:出现 ORC height tiff ted 最大的 工作表 诊断 补充
原文地址:https://www.cnblogs.com/wanghui-garcia/p/14116215.html