CAM可解释性分析

CAM算法

论文名称:Learning Deep Features for Discriminative Localization, CVPR2016
下载地址:https://ieeexplore.ieee.org/document/7780688

通过全局平均池化(GAP)层,获得指定类别对最后一层卷积层输出的每个特征图Channel的权重,进而计算CAM类激活热力图,展示指定类别在原图上重点关注的特征区域。并巧妙用图像分类实现弱监督定位。打破深度学习的黑箱子,让人工智能展示自己的“注意力”和“学到的特征”,使得Machine Teaching成为可能。深入理解它,解释它、改进它,进而信赖它。知其然,也知其所以然。

算法原理

CAM类激活热力图 深度卷积神经网络可解释性分析,显著性分析

输入原始图像 全卷积神经网络(无池化) 最后一个卷积层是512个14*14 chaanel ,经过全局平均池化GAP,得到512个平均数 (标量),后面输入到全连接层进行分类,得到对于每个类别(比如1000个类别)的权重,然后进行softmax操作,把1000个权重变成概率,每个概率都是0-1之间,并且1000个概率求和为1。
在这里插入图片描述
其中蓝色权重w1是最后一层卷积输出蓝色channel计算得到的,所以w1间接反映了预测结果对蓝色的feature map的关注程度。蓝色feature map既有语义信息也有位置信息。把所有的feature map和对应的权重相乘,得到热力图,然后再将热力图进行双线性插值,得到原图的大小,变成高分辨率的热力图。
缺点:必须用GAP(减少参数量,防止过拟合)代替全连接层重新训练;只能分析网络的最后一层,不能分析中间层。改进:Grad-CAM

为什么都用全卷积神经网络,而不用池化?
池化引入了平移不变性,也意味着失去了长宽方向的位置信息,因此在CAM热力图中,不使用池化操作。最后如果不使用GAP,将feature map分别flatten输入到FC中,也会失去位置信息。

Grad-CAM深度学习可解释性分析

论文名称:Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization
下载地址:https://arxiv.org/abs/1610.02391
参考博客:https://blog.csdn.net/qq_37541097/article/details/123089851
推荐代码(Pytorch):https://github.com/jacobgil/pytorch-grad-cam
bilibili视频讲解:https://b23.tv/1kccjmb

算法原理

在这里插入图片描述
参见上图。这里我们简单看下Image Classification任务,首先网络进行正向传播,得到特征层A (一般指的是最后一个卷积层的输出)和网络预测值y(注意,这里指的是softmax激活之前的数值)。假设我们想看下网络针对Tiger Cat这个类别的感兴趣区域,假设网络针对Tiger Cat类别的预测值为 y c y^c yc。接着对 y c y^c yc进行反向传播,能够得到反传回特征层A的梯度信息 A ′ A' A。通过计算得到针对特征层A每个通道的重要程度,然后进行加权求和通过ReLU就行了,最终得到的结果就是Grad-CAM。

为什么这样做呢?
首先特征层A是网络对原图进行特征提取得到的结果,越往后的特征图抽象程度越高,所包含的语义信息也越丰富,同时CNN提取的feature map是能够保留空间信息的(Transformer同样)。所以特征层A一般是指的最后一个卷积的输出。参考下图,可以看到,越深的特征层做出的CAM图效果更好。当然特征层A包含了所有我们感兴趣目标的语义信息,但具体哪些语义信息对应哪个类别我们并不清楚。接着通过对类别C的预测值 y c y^c yc进行反向传播,得到反传回特征层A的梯度信息 A ′ A' A A ′ A' A就是 y c y^c yc对A求得的偏导,换句话说** A ‘ A‘ A代表A中的每个元素对 y c y^c yc的贡献**,贡献越大网络就认为越重要。然后对 A ‘ A‘ A在w,h上求均值就能得到针对A每个通道的重要程度(这里是对于类别c而言的)。最后进行简单的加权求和再通过ReLU即可。

在这里插入图片描述

关于Grad-CAM总结下来就是下面的公式:
L G r a d − C A m c = R e L U ( ∑ k α k c A k ) ⏟ l i n e a r    c o m b i n a t i o n L_{Grad-CAm}^c = ReLU \underbrace{( \sum_k \alpha_k^cA^k)}_{linear \; combination} LGradCAmc=ReLUlinearcombination (kαkcAk)
其中,

  • A代表某个特征层,一般指的是最后一个卷积层输出的特征层
  • k代表特征层A AA中第k个通道(channel)
  • c代表类别c
  • A k A^k Ak代表特征层A中通道K的数据
  • α k c \alpha_k^c αkc代表针对 A k A^k Ak的权重

关于 α k c \alpha_k^c αkc的计算公式:
α k c = 1 Z ∑ i ∑ j ⏞ g l o b a l    a v e r a g e    p o o l i n g ∂ y c ∂ A i j c ⏟ g r a d i e n t s    v i a    b a c k p r o p \alpha_k^c = \overbrace{\frac{1} {Z} \sum_i \sum_j}^{global \; average \; pooling} \underbrace{ \frac{ \partial y^c} {\partial A_{ij}^c}}_{gradients \; via \; backprop} αkc=Z1ij globalaveragepoolinggradientsviabackprop Aijcyc

其中,

  • y c y^c yc代表网络针对类别c预测的分数,注意这里没有通过softmax激活
  • A i j k A_{ij}^k Aijk代表特征层A在通道k中,坐标ij位置处的数据
  • Z等于特征层的宽度× 高度

论文中说使用使用ReLU是为了过滤掉Negative pixles,而Negative pixles可能是归属于其他类别的pixles。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAM热力图可以通过可视化的方式展示深度学习模型在分类时关注的区域。通过观察CAM热力图,我们可以分析模型对于不同类别的预测结果,以及预测错误的原因。CAM热力图可以帮助我们理解模型的原理,并且可以用于分析模型的可解释性。通过CAM热力图,我们可以看到模型在分类时关注的区域,从而了解模型是如何进行决策的。这对于深度学习模型的可解释性分析非常有帮助。此外,CAM热力图还可以用于弱监督学习,减少对人工标注的依赖,降低网络训练的成本。通过CAM热力图的可视化,我们可以更好地理解深度学习模型的内在联系和预测结果。 #### 引用[.reference_title] - *1* *3* [【学习打卡03】可解释机器学习笔记之CAM类激活热力图](https://blog.csdn.net/weixin_45508265/article/details/128337028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Grad-CAM简介-网络 热力图分析](https://blog.csdn.net/szx123_/article/details/128325232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值