CAM论文解读


论文链接

Learning Deep Features for Discriminative Localization (arxiv.org)

CAM简介

Class Activation Mapping(CAM)是一种用于可视化和解释卷积神经网络(CNN)对于输入图像中不同类别的关注程度的方法。

在传统的CNN中,我们通过多个卷积层和池化层,最后通过全连接层进行分类。CAM的思想是,通过观察卷积层的特征图,可以了解到哪些区域对于分类结果的贡献更大。

特征图

在讲具体的数学推导以前,我们先看一下resnet50的卷积特征图:

原图[1,3,224,224]

conv1 [1,64,112,112]

bn1_relu [1,64,112,112]

maxpool [1,64,56,56]

layer1 [1,256,56,56]

layer2 [1,512,28,28]

layer3 [1,1024,14,14]

layer4 [1,2048,7,7]

avgpool [1,2048]

layer4的输出是这样的的特征图,总而言之,我们在resnet50最后一个卷积层出来的结果就是的图像。

我们用来表示第张图的图像矩阵。

在经过了一系列卷积层的特征提取以后,resnet50会将这些图片进行全局平均池化(GlobalAvgPool)

这样我们就得到了一个的特征向量(我们先这么称呼它),最终我们通过一个全连接层,进行分类。

数学推导

对于一个分类问题,给定一个类A,我们希望找到对于类A而言,哪一部分的图像对类A的得分贡献最大。

对于类A而言,其全连接层的输出为类A的得分,将代入进去,有

定义类激活图函数:

这里的是一个的图像矩阵,空间网格的值越大,就说明该网格对应的部分区域对的贡献越大,换句话说,在分类任务中,这片区域经过卷积提取的特征对A而言更重要。

一般来说,我们只需要找到我们要关注的那个类,找到它的类激活函数,最后我们插值resize回去,再叠加在原图上就能得到一个类激活热图了。


文章作者: lyc
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 lyc !
评论
  目录