目录
CAM算法介绍
本篇文章主要讲解基于类激活映射CAM的热度图绘制。算法原理出自论文: Learning Deep Features for Discriminative Localization(CVPR 2016)。其精妙之处在于:
- 对深度学习实现可解释性分析、显著性分析
- 可扩展性强,后续衍生出各种基于CAM的算法
- 假令每张图片的每个类别,都能生成对应类的CAM热力图
- 弱监督定位:使用图像分类模型解决定位问题,将定位信息保留到模型的最后一层
- 潜在的“注意力机制”,可体现出某一类下主要关注的特征
- 可用于Machine Teaching,实现以人为核心的应用。
CAM的可视化解释性分析
输入一张image,由CAM及其衍生算法,我们可以通过热力图准确得知神经网络提取到的图像特征。以狗为例,可见信息提取范围相差不大,且符合我们日常识别的标准。
值得一提的是,CAM衍生算法各有各的优劣,如GradCAM加入了梯度,同时可以将GAP(Global Average Pooling)层换为全连接层,能够在一定程度上优化网络架构。
从这张图就能清晰地明确GradCAM、GradCAM++等衍生算法的异同,相比之下LayerCAM关注的范围更大,而EigenGradCAM关注点更加集中。结合对CAM衍生算法的说明,例如EigenGra-dCAM利用了激活梯度的第一主成分,因此自然提取特征范围较小以达到clean的目的。
利用CAM,还可以通过对同一张图片标注不同类别,呈现出对应的热力图,以明确神经网络具体怎么提取特征。当label为宫殿时,显然应关注到整张图片的主体部分,可以发现神经网络以0.459的置信水平能够认为输入图片是一个宫殿,根据呈现的热力图,能够认为与人类识别的主观意识相差不大。
CAM的网络架构
原理
原始输入image首先进入全卷积神经网络,将图像的所有特征聚集于最后一个conv层上,此时为512个channel的14×14 feature map,之后通过GAP形成512个平均数,再和与之对应的线性分类权重相乘,将结果最后通过softmax则得到每一个类的后验概率,最大值即为识别结果。
通过Class Activation Mapping,可以看出某一类别对各个feature map的注意力机制,通过与对应的系数乘积,即可以识别图像的方法进行图像的定位。
基础推导
假设表示最后一层卷积层输出的feature map且经过GAP后第k个channel上坐标为(x, y)的值,将
记为全局平均池化GAP值,即:
对于某一类c,softmax层的输入值记为,即:
其中,表示第k个channel的类c的权重。
最后softmax层的输出值记为,即:
池化层
CAM中引入了GAP,对于池化层的应用当前众说纷纭,随着当前模型越来越复杂,人们更多认为池化起着防止过拟合的作用,以下以CAM为例简述池化的作用。
池化的引入能够在保持原有信息特征的基础上减少计算量,而相比之下更重要的是考虑其平移不变性的作用。
将原始数据图像平移,可见最终池化层输出的结果不变,即池化对图像的平移不敏感,这意味着将丢失长宽方向的位置信息,因此这也解释了为什么在CAM提取特征信息的过程中,主体部分均由卷积神经网络组成,而并没有从中穿插池化层。
GAP与FC的对比
在图中,GAP中的每个feature map代表每一个channel,相比之下,利用GAP代替FC,好处在于能够减少参数量、防止过拟合。同时也显现出CAM算法的缺点:
1. 必须存在GAP层,否则需修改模型重新训练
2. 只能分析最后一层卷积层输出,无法对中间层进行可解释性分析
GradCAM
GradCAM在CAM基础上,将GAP用FC代替,同时加入梯度的思想,如某类C为Tiger Cat时,通过反向传播得到的梯度与之前最后一层卷积层的输出结果做相关运算,求和之后再通过ReLU,即可得到GradCAM的结果。
思考题