Grad-CAM

Grad-CAM论文解读

Grad-CAM: Visual Explanations from Deep Networks
via Gradient-based Localization
论文地址:https://ieeexplore.ieee.org/document/8237336
代码:keras vgg16_Grad_cam.
pytorch vgg16 vgg16_Grad_cam
resnet resnet_Grad_cam

前言

我们提出了一个新技术用来生成卷积神经网络可解释性的图片,使得CNN变得更加透明,Grad-CAM利用其中某一类的得分进行反向传播,传到最后一个卷积层,可以得粗糙的定位图片。


一、与CAM的区别

CAM需要对分类网络进行二次训练,其主要思想是在训练好的分类网络的基础上,将后面的全连接层替换成GAP(global average pool),保持GAP前面层不变的情况下再训练的GAP的权重,然后利用反向传播计算出CAM图。
Grad-CAM的方法不需要对网络结构修改后再继续训练,只要训练一次,就可以利用Grad-CAM算法得到对应输入图像的类激活图。

二、Grad-CAM

1.Grad-CAM计算公式

计算类c的得分yc关于最后一个卷积块的第k个特征图所有像素的梯度的平均值,作为第k个特征图是c类的权重在这里插入图片描述
CAM中是将得到第k个特侦图是c类的权重与对应的第k个特征图相乘求和,Grad-CAM有个小小的区别在于将权重和特征图进行加权求和之后,只取了结果大于0的那些像素值,因为作者认为只有结果大于0的那些像素才是对神经网络判别为c类有促进作用的特征图。反之,小于0的则是有消极作用。所以,作者在加权求和之后又加了一个ReLU函数这样就可以得到对分类结果有正影响的CAM结果图了。
在这里插入图片描述

2.Grad-CAM与CAM的相互推导

作者认为 :Grad-CAM是可以推导出CAM的,反过来说CAM是Grad-CAM的一个特例。

对于CAM,最终的分类结果yc有:
在这里插入图片描述
其中wck是第二次训练后得到的权重,Akij表示最后一个卷积块的第k个特征图在(i,j)位置处的像素值。令Fk表示第k个特征图的全局平均值:
在这里插入图片描述
那么yc可以简化为:在这里插入图片描述
等式两边同时对Fk求导数,则wck等于yc关于Fk的偏导数,等于分子分母同时对Aijk求偏导:

在这里插入图片描述
也就是:
在这里插入图片描述
上面的公式只是对特征图中(i,j)位置处的像素值求的wck,那么对于整个特征图的求和为
在这里插入图片描述
wck对于所有像素点处的值都是一样的,那么对于左边,相当于wck乘以整个特征图的大小z,等式右边z是常量可以直接提取到求和符号的最外面,在这里插入图片描述

两边同时消去z,有:在这里插入图片描述
而Grad-CAM一开始权重ack就是比wck多乘了一个常量,所以说Grad-CAM之间有着严格的数学推导关系。而且这种关系是成立的。

3Grad-CAM框架结构图

在这里插入图片描述
上面的示意图中还包含了导向反卷积部分。主要是因为作者认为虽然Grad-CAM具有很好的判别性,但是它缺乏想像素空间梯度可视化方法那样突出细粒度细节的能力,所以他又把Grad-CAM与导向反卷积部分融合在一起。

Grad-CAM还是有很多应用的,比如分类、可解释性、定位、弱监督种子点的定位等等,算是实用性很高的一个算法了。

总结

本文简单的介绍了Grad-CAM的主要原理,以及它与CAM之间的数学理论推导,欢迎各位小伙伴一起讨论更多关于CAM的知识!


版权声明:本文为qq_42773230原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。