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

  • 卷积神经网络在很多的任务中以及取得了重大突破,但是对于解释它们为什么这么预测,预测了什么是必须的是很有必要的。Consequently, when today’s intelligent systems fail, they fail spectacularly dis-gracefully, without warning or explanation, leaving a user staring at an incoherent output, wondering why. 摘选自原论文。

  • Class Activation Mapping(CAM)这个方法提供了一种在图像分类任务上识别 discriminative regions的方法(我的理解是将图片中对分类发挥作用的区域找出来),但是这个方法移除了CNN网络的全连接层( Section Approach会介绍这个方法)。论文中提出的方法Grad-CAM并没有修改模型结构,是CAM的泛化,并且能够应用在更大范围的CNN模型家族(mage classfication,image captioning,VOA)。

  • 进行了几种可视化方法的优缺点介绍对比

    • Guided Back-propagation 和 Deconvolution是高分辨率的并且高亮了细粒度的细节,但是并不能区分类别。如图1b,1h,Guided Backprop只提取出了图片中的猫与狗的所有纹理。

    • CAM,Grad-CAM具有很高的类别区分性。如图1c,1i and 1f,1l。其实这里也能看出来,ResNet比VGG16更优一些,以猫为例子,1c(VGG16)的注意力在身体上,1f(ResNet)在头部区域,ResNet关注的位置要比VGG16更符合人类的直觉。

    • 将上面二者的优点进行结合,得到了Guided Grad-CAM,如图1d,1j,

    • 论文还指出了,Grad-CAM得到的结果,与遮挡敏感性的实验结果非常类似。

    • 需要额外指出的是:Grad-CAM, CAM得到的localization map的尺寸与最后一个卷积层得到的feature maps的高宽相同,小于原始输入图片的分辨率。因此1c,1i,1f,1l是localization map进行上采样(双线性差值)并且与输入图片叠加得到的。在 Section Approach有Grad-CAM, CAM的实现方法介绍。

3.Approach

  • Grad-CAM实现方法,

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

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

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

  • CAM实现方法

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在弱监督的定位任务上的表现。笔者对弱监督学习还不是很了解,因此不介绍太多。

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)抽选志愿者进行人为的识别,通过人和机器的对比观察在前向过程中哪一种方法对于类别分类可解释有较好的结果。其实验结果如下:

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

5.2 Evaluating Trust

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

5.3 Faithfulness vs. Interpretability

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

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

6.Diagnosing image classification CNNs with Grad-CAM

6.1 Analyzing failure modes for VGG-16

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

6.2 Effect of adversarial noise on VGG-16



在给神经增添一些不可感知的扰动之后,使得神经网络预测出现失误,但是以类别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的实现方法之后:

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

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

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

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

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

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

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

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

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

8.Summary

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

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

总结的一些点:

  • Grad-CAM的实现方法,及其更好的效果(更高的类区分性,不用修改模型结构等)

  • Grad-CAM可以帮助观察数据集的偏移,6.3护士和医生的例子。

  • 论文涉及了到的还不甚了解的概念,需要填坑

    • 秩相关
    • 双线性差值
    • 神经网络关于对抗样本的脆弱性
  • Deconvlution得到的结果有伪影,因此作者使用了Grad-CAM + Guided Backpropagation得到 Guided Grad-CAM

  • Google in English,一些内容,中文网上没有好的阐述,但是有些外国友人的博客写得很明白。

Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization的更多相关文章

  1. 神经网络可视化《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》

    神经网络已经在很多场景下表现出了很好的识别能力,但是缺乏解释性一直所为人诟病.<Grad-CAM:Visual Explanations from Deep Networks via Gradi ...

  2. 论文笔记:SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks

    SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks 2019-04-02 12:44:36 Paper:ht ...

  3. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  4. Deep Learning 8_深度学习UFLDL教程:Stacked Autocoders and Implement deep networks for digit classification_Exercise(斯坦福大学深度学习教程)

    前言 1.理论知识:UFLDL教程.Deep learning:十六(deep networks) 2.实验环境:win7, matlab2015b,16G内存,2T硬盘 3.实验内容:Exercis ...

  5. 【DeepLearning】Exercise: Implement deep networks for digit classification

    Exercise: Implement deep networks for digit classification 习题链接:Exercise: Implement deep networks fo ...

  6. Deep Networks : Overview

    Overview In the previous sections, you constructed a 3-layer neural network comprising an input, hid ...

  7. On the Optimization of Deep Networks: Implicit Acceleration by Overparameterization

    目录 引 主要内容 定理1 Claim 1 Claim 2 定理2 证明 定理1的证明 Claim 1 的证明 Kronecker product (克罗内克积) Theorem 2 的证明 代码 A ...

  8. Initialization of deep networks

    Initialization of deep networks 24 Feb 2015Gustav Larsson As we all know, the solution to a non-conv ...

  9. 基于pytorch实现HighWay Networks之Train Deep Networks

    (一)Highway Networks 与 Deep Networks 的关系 理论实践表明神经网络的深度是至关重要的,深层神经网络在很多方面都已经取得了很好的效果,例如,在1000-class Im ...

随机推荐

  1. CF 593B Anton and Lines(水题)

    题意是给你n条直线,和x1,x2;问 在x1,x2之间(不包括在x1,x2上) 存不存在任意两条线的交点. 说思路,其实很简单,因为给的直线的条数很多,所以无法暴力求每两条直线的交点,那么就求每条直线 ...

  2. [数学]高数部分-Part III 中值定理与一元微分学应用

    Part III 中值定理与一元微分学应用 回到总目录 Part III 中值定理与一元微分学应用 1. 中值定理 费马定理 罗尔定理 拉格朗日中值定理 柯西中值定理 柯西.拉格朗日.罗尔三者间的关系 ...

  3. CS5213替代AG6200 AG6201|HDMI转VGA带音频输出方案芯片

    台湾安格AG6200 AG6201专门用于设计HDMI转VGA带音频输出的方案芯片,CS5213是一款HDMI to VGA转换器且结合了HDMI输入接口和模拟RGB DAC输出.带支持片上音频数模转 ...

  4. Kerberos认证过程学习理解

    概念: Kerberos服务器:AS认证服务器,TGS服务授权服务器 Client 客户端,代表使用应用的用户 AppServer 服务端,应用提供各种服务的服务器 Client在Kerberos注册 ...

  5. 【工控老马】OPC通讯协议解析-OPC七问

    1 通讯步骤 1.1 第一问 OPC Client和OPC Server之间通讯谁是主动的? 答:当然是OPC Client. 1.2 第二问 OPC Client第一次动作做了什么? 答:从大多数O ...

  6. CF858D Polycarp's phone book

    题意翻译 有 n 个长度为 9 且只包含数字字符互不相同的串. 需要对于每个串找到一个长度最短的识别码,使得这个识别码当且仅当为这个串的子串. 题目分析 因为范围不是非常大,所以可以将子串筛出来 然后 ...

  7. Django_模板中的URL参数化(四)

    去除模板中的硬编码 URL 在案例中的 test1/templates/booktest/index.html 文件里编写的链接都硬编码的链接,比如: <a href="/bookte ...

  8. win10 安装vb -打开后一直显示无响应-解决

    1.成功安装vb ,美滋滋的运行 ,但是一直卡在无响应状态, 2.解决 使用管理员权限打开即可,也可以更改兼容为win7/8, 神奇的是,我这电脑自用过一次管理员权限打开,后面再使用vb可以不用管理员 ...

  9. github 创建网络仓库 ,使用git工具将本地文件上传/删除 --- 心得

    1.前言 使用  git做项目控制版本工具,当然,使用SVN也可以,但是,git让人感觉更先进一些,与GitHub结合,用起来很方便,服务端由官网控制. 而SVN分客户端和服务端,都是个人控制,因此, ...

  10. Linux上天之路(十四)之Linux数据处理

    主要内容 数据检索 数据排序 数据去重 重定向 1. 数据检索 常和管道协作的命令 – grep grep:用于搜索模式参数指定的内容,并将匹配的行输出到屏幕或者重定向文件中,常和管道协作的命令 – ...