目录
1.CAM
1.1作用
1.2应用实例
1.3CAM的特点
1.4CAM的思路
1.5CAM的缺点
2.GradCAM
2.1和GAM的区别及思路
2.2应用面
2.3一个延深(解决模型偏见)
2.4缺点
3.Grad CAM++
4.Score CAM
5.layer CAM
参考文献
CAM不不光可以分类还可以定位:从下图理解,识别palace时热力图定位了模型认为它是palace的特征,同样对dome等识别时也用热力图定位了相应特征,也就是定位了palace和dome的位置。
从热力图可以看出,识别福建土楼依据的特征是洞状结构,识别吊脚楼依据的是棍状结构,识别故宫依据的是沿状结构
1.实现了深度学习的可解释性分析
2.可拓展性强,后续研发出一系列基于CAM的算法
3.在每张图片,每个类别都能生成CAM热力图
4.若监督模型:用图像分类模型解决定位问题
5.潜在的注意力机制:比方说,识别不同的鸟时(属于细粒度分类) ,人类可以根据模型识别鸟的不同种类所依据的特征的热力图,去理解和学习如何对鸟进行分类,这也属于用人工智能理解世界的方式,带人类去认识这个世界。
6.使得Machine Teaching成为可能:就是,现在模型不仅可以人类一个问题的答案,还可以给出解决这个问题的思路,这不就可以实现真曾意义上的利用人工智能学习嘛
如下图所示,正常来说对于图像分类问题,最后一层卷积层之后通常链接全连接层,但这里用GAP(全局平均池化)替代了全连接层,具体操作为,假设最后一层为14×14×512,可以理解为该层有512个特征图然后对每个特征图进行平均池化操作,我们得到每一个特征图对应的值(标量,每一个值代表了原来的特征图),最终得到512个值,再乘以512个w(权重)得到每一个类别的得分,再进行softmax操作,得到对应的概率值。这个方法的特点就在于GAP的w值,对某个类别评分越高,说明这512个特征图某一部分占的比重越大,w也就越大,然后这些特征图还包含位置信息,如第Class Activation Mapping下的图所示,w1*(14×14的特征图)+w2*(14×14的特征图)+......w512*(14×14的特征图)中,我们看到w1对应特征图原图中的位置,w2对应特征图原图中的位置,w3对应特征图原图中的位置,从结果看我们得到的类别是狗,w1对应的特征图和狗毫无关系,所以输出时比重很低,在最终的识别图根本看不到这个特征图,而w2和w3对应的特征图包含狗,我们会发现,最终的识别图中有这两张特征图的身影。
注意到没有池化层:因为池化层会丢失长宽信息,这是CAM无法接受的
1.必须要有GAP层,否则无法得到热力图,基于此有了gradCAM
2.只能分析最后一层卷积输出,无法分析中间层的特征图
3.仅限图像分类任务
区别:在CAM中用GAP替代了全连接层,在GradCAM中,保留了全连接层
思路:如下图所示,简单理解全连接层对类别打分之后,再对其求导重新得到输入全连接层之前的卷积层,14×14×512(这个和原来不完全一样,这里面是梯度值,但能表示卷积层原来的特征图),再进行GAP操作。
优势:对CAM,当我们只想进行图像分类任务时,我们只用一个分类模型就行了,但如果我们想进行性可解释性分析,就需要将全连接层改为GAP重新训练。对GradCAM,当我们想进行可解释性分析时,直接载原模型上加入GAP就可以使用了。
这样就导致GradCAM应用面很广,只要最后一层结果可导,不管是用什么忘了,RNN还是LSTM,不管是图像还是文本任务等,都可以用其解决。在强化学习中,比方说玩超级马里奥,我们就可以知道,模型执行上下左右的某一个操作,是基于什么,是为了金币,躲避伤害还是其他什么原因。
在文字描述生成任务中:就是说根据一张图生成文字描述,如下图所示,使用GradCAM,不仅可以生成文字,还有生成该文字所依赖的特征。
做一个可视化分析的延深,可以用于纠正模型偏见:比方说我们通常会认为医生男性多,护士女性多,那么在建立数据集时,我们可能会在图片中,医生男性占比较多,护士女性占比较多,这就可能导致,模型基于男女分别医生还是护士,但这显然是不对的,在黑箱模型中,知道模型有问题,但可能很难找出问题在哪,需要做大量的实验尝试,有了可视化分析,就可以直接找出问题所在,改进模型。
1.图像上有多个同类物体时,只能画出一块热力图,比方说图中有三值猫,但只能画出一只猫,
2.不同位置的梯度,GAP平局之后,影响相同,但一般来讲图片边缘的影响应该小于图像中心。
3.梯度饱和、梯度消失、梯度噪声
4.权重大的channel,不一定对类别预测分数贡献大
5.只考虑从后往前的反向传播梯度,没考虑前向预测的影响
6.深层生成的粗粒度热力图和浅层生成的细粒度热力图都不够精确
7.CAM中只能分析最后一层,GradCAM可以分析中间层,但发现在浅层中,分析效果很差,基于这个有了layer CAM
解决Grad CAM两个问题:
1.图像上有多个同类物体时,只能画出一块热力图,比方说图中有三值猫,但只能画出一只猫,
2.不同位置的梯度,GAP平局之后,影响相同,但一般来讲图片边缘的影响应该小于图像中心。
对于第一个问题简单理解:从下图看假设intput image输入的图片包含三个猫(分别对应灰色区域),经过卷积之后,这三个区域分别出现在不同的特征图之中,经过Grad CAM处理之后只能激活其中一个猫的特征图,在Grad CAM++中, 可以同时激活三个猫的特征图。
对于第二个问题简单理解:就是对梯度加了权重,来区别不同位置梯度的影响。
解决Grad CAM三个问题:
3.梯度饱和、梯度消失、梯度噪声
4.权重大的channel,不一定对类别预测分数贡献大
5.只考虑从后往前的反向传播梯度,没考虑前向预测的影响
做个对比:如下图所示,明显Score CAM热力图对应的位置更加聚焦。
思路:
首先用Phase1(第一个网络),经过Upsampling之后得到14×14×256个特征图,将这些特征图和原图input的小狗分别相乘我们会得到,将每个特征图在原图中对应的位置高亮显示,进一步得到每一个特征图对应他权重,最后Phase2输出这些权重和Phase1中对应的每一个特征图相乘得到Score CAM的结果。
解决Grad CAM2个问题:
6.深层生成的粗粒度热力图和浅层生成的细粒度热力图都不够精确
7.CAM中只能分析最后一层,GradCAM可以分析中间层,但发现在浅层中,分析效果很差,基于这个有了layer CAM
应用:工业检测很合适。
做个对比:如下图左所示,第一行为Grad CAM的特征结果,第二行为layer CAM的特征结果,很明显Grad CAM噪声过多。如下图右所示,即使在浅层中也能聚焦较好的特征。
补充:
1.类别激活热力图可视化工具介绍