【CNN可解释性】|score cam

论文:Score-CAM: Score-Weighted Visual Explanations for Convolutional Neural Networks
作者:Haofan Wang1, Zifan Wang1, Mengnan Du2, Fan Yang2,
Zijian Zhang3, Sirui Ding3, Piotr Mardziel1, Xia Hu

代码:https://github.com/haofanwang/Score-CAM
收录于CVPR2020

摘要

我们的工作总结如下:

(1)我们引入了一种新的无梯度可视化解释方法——Score-CAM,它弥补了基于Perturbation和基于CAM的方法之间的差距,并以直观易懂的方式表示激活maps的权重。

(2)定量评价了Score-CAM生成的显著maps在识别任务上的公平性,具体为Average Drop / Average Increase and Deletion curve / Insertion curve 指标,表明Score-CAM能够更好地找到目标类的证据。

(3)定性地评估了可视化和定位性能,在这两个任务上都取得了较好的效果。最后,我们介绍了它作为一个调试工具在分析模型错误行为中的有效性。

1.视觉可解释性

神经网络可解释性是指对于神经网络所做出的决策,进行合理的解释。这里解释可以是从数学理论层面进行的先验解释,比如对于激活函数的差异分析、模型的泛化能力分析,也可以是对于网络预测结果的后验解释,比如我们训练好的模型将一张图片分类为"猫",我们希望知道网络是通过什么因素或特征将它分类为"猫"这个类别的。本文关注的是后验解释,即解释已有模型的决策。而对于卷积神经网络,目前最常见的是通过可视化的方式来解释模型的决策(下文中可解释性与可视化将不再区分)。
2.主流的视觉可解释性方法
在这里插入图片描述

2.1 基于梯度的可解释性
Guided-Backpropagation目前在可解释性方面存在较大争议,它是通过对于回传梯度进行一定过滤,从而得到更为干净和聚焦的可视化结果,但在Sanity Check [9] 中,作者发现,该方法与模型参数无关,即初始化模型参数后,仍然能得到相似结果。

2.2 基于掩码的可解释性
在这里插入图片描述

基于掩码的可视化则采用一种全局的方式来定位图像中对于决策更重要的区域。此类方法的做法符合人类直觉,通过将图像上部分的移除或者保留,来直接衡量该区域对于网络决策分数的影响。比如在一张"猫"的图片中,背景信息的移除通常不会降低"猫"类别上的置信度,而一些关键区域,如"猫"的耳朵,在移除后则可能造成置信度的下降。但是这类方法存在一个明显的劣势,即如何生成掩码(mask)。目前主要有两种思路,一种是通过采样的方式(比如随机采样或蒙特卡洛采样 [10])生成多个掩码,然后来计算每一个掩码区域的重要性,这种方式往往需要生成大量掩码,计算量很大;第二种是通过优化的方式来生成掩码,初始化一个随机掩码,通过优化损失函数来不断更新掩码,这种方法的缺点是需要在损失函数中增加额外的正则化项,来使得生成的掩码面积尽可能的小,同时还能尽可能多的影响决策分数,由于存在优化过程,即使对于同一张图,方法每一次生成的解释都是不完全一致的。
2.3 基于类激活图的可解释性
cam

本文动机

基于梯度的CAM方法(Grad-CAM [7]、Grad-CAM++[8])生成的可视化结果在视觉上不够干净,即除了目标物体被标记以外,大量背景信息也被标记。

考虑到背景信息在训练过程中有可能作为上下文信息辅助模型决策(例如"草地"可能与"狗"存在一定相关性),为了验证背景区域的重要性,作者在原始图像(随机挑选的测试用例)中移除部分背景信息后发现,对于多数样本,在移除背景信息后,置信度不会有明显变化,因此作者认为,在Grad-CAM中被标记的背景区域是错误标记。

而由于CAM的本质是特征图的线性加权,作者在实验中进一步发现,这种现象来自于线性权重分布。作者通过对特征图的可视化发现,在Grad-CAM中获得较高权重的特征图,在网络中的响应很低,而部分权重较低的特征图,则获得到了很高的置信度。作者分析基于梯度的CAM中问题,可能来源于梯度本身,即梯度的饱和性(类似于Sigmoid函数,当特征强度超过一定程度,其梯度可能会变小),以及梯度本身的不稳定性(局部的梯度受噪声影响很大),甚至是梯度消失的影响。

CIC

首次摆脱了对于梯度的依赖,使用模型对于特征图的全局置信分数来衡量线性权重。

在这里插入图片描述在这里插入图片描述
即通过将特征图视为一种特殊的掩码(无需采样生成)上采样后,与原始图像点乘,使用模型对掩码后的图片的响应于模型对于基图片(baseline)的响应差值,来代表特征图的重要性。

对获取的特征图进行channel-wise遍历,对每层特征图进行上采样+归一化,与原始图片进行pixel-wise相乘融合,然后送进网络获取目标类别score(softmax后),减去baseline的目标类别score,获取CIC。再进行softmax操作来保证所有CIC在0-1之间。最后将CIC作为特征融合权重融合需要可视化的特征层。

其中,作者在代码中将baseline设置为全黑的图片。(why??)
值得注意的是,计算CIC时默认使用的baseline为全黑的图片,既全0的矩阵,因此CIC score不需要减去baseline的score。

在这里插入图片描述

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了


```c

with torch.no_grad():# gradient-free, 所以不需要计算梯度
    for i in range(K): # 对K层特征图进行遍历操作
          # 获取第i层特征图,并进行上采样操作
          saliency_map = torch.unsqueeze(activations[:, i, :, :], 1)
          saliency_map = F.interpolate(saliency_map, size=(h, w), mode='bilinear')
          # 归一化
          norm_saliency_map = (saliency_map - saliency_map.min()) / 
                              (saliency_map.max() - saliency_map.min())
          # 利用第i层特征图作为mask覆盖原图,重新送入网络获取对应类别得分
          output = self.model_arch(input * norm_saliency_map)
          output = F.softmax(output)
          score = output[0][predicted_class]
          # 利用该得分作为权重对该层的特征图进行加权线性融合, baseline默认为全0的图,所以这里直接
          # 用该得分作为特征权重
          score_saliency_map +=  score * saliency_map
    # relu去除负值
    score_saliency_map = F.relu(score_saliency_map)
    # 归一化
    score_saliency_map = (score_saliency_map - score_saliency_map.min())/
                                                (score_saliency_map_max - score_saliency_map.max())
    # score_saliency_map 为所求
    return score_saliency_map

探讨归一化后使用softmax的作用

归一化后的相对输出值(post-softmax,softmax之后的结果)比绝对输出值(softmax之前的结果)更适合用来衡量相关性。因此,在Score-CAM中,我们将权重表示为post-softmax值,以便分数可以被重新标定为一个固定的范围。

由于每次预测的范围不同,使用softmax与否会产生差异。图5显示了一个有趣的发现。该模型预测输入图像为“狗”,无论采用哪种分数类型,都可以正确地高亮对应位置。但对于目标类“猫”,如果使用pre-softmax logit作为权重,Score-CAM高亮了“狗”和“猫”两个区域。相反,使用softmax的Score-CAM可以很好地区分两个不同的类别,尽管预测“猫”的概率低于预测“狗”的概率。归一化操作使Score-CAM具有良好的类辨别能力。
在这里插入图片描述

实验指标

对比Grad-CAM的faithfulness evaluation

可以对比Perturbation Based 的mask,用CAM掩模后输入到模型中,比较输出的变化,
下图就是基于Perturbation Based 的两种规则的实验
在这里插入图片描述
在这里插入图片描述

之后是定位性能指标,除去了数据集中目标占比50%以上的图片

在这里插入图片描述

https://blog.csdn.net/update7/article/details/110584260
https://blog.csdn.net/qq_34813925/article/details/108900194

论文翻译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值