其他分享
首页 > 其他分享> > Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization

Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization

作者:互联网

目录

Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization

1.Abstract

我们提供了一种方法(Grad-CAM)高亮图片中对预测产生影响的重要区域:

1.在CNN的模型家族里适用范围广:image classfication,image captioning,VOA。
2.提供对CNN失败样例的观察(显示看似不合理的预测的合理解释)。

3.在 ILSVRC-15弱监督定位任务上比以往的方法表现更好。

4.更忠实于底层模型。

5.通过辨认数据集的偏移来实现模型泛化。

6.帮助未经训练的用户成功地区分“更强”的网络和“更弱”的网络,即使两者做出的预测完全相同。

2.Introduction

3.Approach

image-20211021164510100

论文中给出的图是这样的,笔者单独把Image Classification的实现方法画了出来,可以结合原论文去理解。当然也可以自行忽略我画的,,,,

CamScanner 10-21-2021 17.02_2

将Localization Map上采样(双线性差值)之后,再与Guided Backprop得到的结果点乘,就得到了Guided Grad-CAM。

同时,论文指出Deconvolution得到的高分辨率图片有伪影,Guided Backprop得到的结果具有更少的噪声。

CAM的思想是去掉全连接层,加一层GAP,然后通过论文中的这个公式:

\[S^{c}=\sum_{k} \underbrace{w_{k}^{c}}_{\text {class feature weights }} \overbrace{\frac{1}{Z} \sum_{i} \sum_{j}}^{\text {global average pooling }} \underbrace{A_{i j}^{k}}_{\text {feature map }} \]

求出每个类别对应的分数。模型训练完之后,又可以通过论文中的这个公式得到\(L^c_{CAM}\)

\[S^{c}=\frac{1}{Z} \sum_{i} \sum_{j} \underbrace{\sum_{k} w_{k}^{c} A_{i j}^{k}}_{L_{\mathrm{CAM}}^{c}} \]

图片描述更加好懂一些:

在这里插入图片描述

在这里插入图片描述

4.Evaluating Localization

4.1. Weakly-supervised Localization

这小节主要介绍了Grad-CAM在弱监督的定位任务上的表现。笔者对弱监督学习还不是很了解,因此不介绍太多。

image-20211021183542687

4.2 Weakly-supervised Segmentation

使用Grad-CAM作为的弱监督定位种子,在VGG16网络上,达到的IoU(一个指标)比CAM要高。

5.Evaluating Visualizations

5.1 Evaluating Class Discrimination

作者在PASCAL VOC 2007中选择了一部分图像(每个图像包含两个注释的类别)进行验证,他Deconvolution、Guided Backpropagation和Grad-CAM分别结合这两个方法得到Deconvolution Grad-CAM和Guided Grad-CAM一共四个方法去对待测样本进行可视化分析,然后在自己的组织Amazon Mechanical Turk (AMT)抽选志愿者进行人为的识别,通过人和机器的对比观察在前向过程中哪一种方法对于类别分类可解释有较好的结果。其实验结果如下:

image-20211021194435778

这一小节读得有点磕磕绊绊。

5.2 Evaluating Trust

Grad-CAM可以更好地评判模型的可信度。作者让54个AMT workers进行如下图这样的打分,使用Grad-CAM进行的可视化在评判模型的可信度上表现更好。

image-20211021195534430

5.3 Faithfulness vs. Interpretability

这一小节是比较可视化方法对模型的忠实度。是通过遮挡实验进行评估的,发现Grad-CAM的可视化区域的遮挡敏感性更高,说明该方法更加忠实于模型。

image-20211021200225487

文中提到了一个 rank correlation(秩相关)。

6.Diagnosing image classification CNNs with Grad-CAM

6.1 Analyzing failure modes for VGG-16

image-20211021200706869

一些错误的预测,通过Grad-CAM进行观察后,似乎有了合理的解释。从上图也可以看出,作者认为CNN模型将样本分类错误是有依据的,比如说对于第一列的样本,CNN模型将其分类成sandbar,但是实际上groundtruth为volcano,因为CNN模型的分类过程他的注意力主要集中在了sandbar的这个目标上,所以对于最终的分类过程显示sandbar更加容易被预测作为结果。

6.2 Effect of adversarial noise on VGG-16

image-20211021203857893

在给神经增添一些不可感知的扰动之后,使得神经网络预测出现失误,但是以类别cat或者dog进行Grad-CAM时依然可以很好地标记出二者的位置,关于神经网络在对抗样本的脆弱性方面的知识挺有意思的好像,读者想了解更多https://cloud.tencent.com/developer/article/1119884

6.3 Identifying bias in dataset

在这里插入图片描述

对于一个判断是医生还是护士的任务,有偏置的训练集里医生主要是男性,护士主要是女性,模型学会了关注hairstyle,face去进行预测。而当把训练集进行调整之后,医生类别里添加更多的女医生,护士类别里添加更多的男护士,模型学会了从服饰,听诊器来进行预测。同时论文作者还提了一句对于科学和社会公平的思考:“ This experiment demonstrates a proof-of-concept that Grad-CAM can help detect and remove biases in datasets, which is important not just for better generalization, but also for fair andethical outcomes as more algorithmic decisions are made in society.”

7. Grad-CAM for Image Captioning and VQA

这一节作者又介绍了Grad-CAM在 Image Captioning and VQA 上的良好表现,笔者在这个方面知识不是很全面,因此只通读了一下,暂不做总结。

What if

首先需要记住的是,这个方法最本初的用途是:找到图片中使得神经网络做出预测的区域

当我理解了Grad-CAM的实现方法之后:CamScanner 10-21-2021 17.02_2

有了一个疑惑一直萦绕在心头,为什么不直接反向传播,然后得到预测分类c的分数score关于输入图片的像素值pixel的导数 $\partial score^c \over \partial pixel $,这样不就找到了哪些像素最能影响神经网络做出这个决策。但实际上,这个叫做Vanilla backpropagation的方法可视化效果不好:

image-20211022103454947

图片引自:https://github.com/kazuto1011/grad-cam-pytorch

那为什么这个原始的方法效果不好呢?问题似乎出现在relu函数这里,引用了这篇博客里的示意图,\(f\)是前向传播时经过relu函数的矩阵,\(R^{l+1}_i\)是上游传下来的梯度值,\(R^{l}_i\)是经过relu函数反向传播得到的梯度值。

vanilla-backprop-eqns.png

可以看到,反向传播时,上游梯度很多的正值丢失了,同时一些负值传了下来。但正值是对最终结果做出“促进”作用的,反之亦然。或许是因为这个原因吧。

所以出现了Guided Backpropagation,这个方法对梯度反向传播通过relu节点时的计算方法做了修改:

guided-backprop-eqns.png

得到的可视化结果好了许多:

image-20211022105409595

图片引自:https://github.com/kazuto1011/grad-cam-pytorch

但也发现了Guided Backpropagation的类区分性差了一些,比如第二列的猫和狗,不如Grad-CAM,感兴趣的读者可以去上面的github链接查阅更多可视化结果。

至此,从Vanilla backpropagation -->Guided Backpropagation-->CAM-->Grad-CAM介绍完毕。

8.Summary

昨天一篇公众号发了一篇文章,有一句话另外印象深刻:作为一名工科学生,光有天马行空的想法还不够,还得具备实现想法的能力。

这不说的就是我自己,花了一天时间尝试去搭deconvnet,还失败了,接下来准备把pytorch系统学一遍,对里面的各种常用操作有个大致了解,这样做实验应该顺畅一些。

总结的一些点:

标签:via,based,Evaluating,Localization,方法,Guided,CAM,Grad,模型
来源: https://www.cnblogs.com/programmerwang/p/15438008.html