类激活图CAM(class activate map)
关于类激活图的前世今生
前言
从最古早的CAM开始讲起,以及它这些年的发展文章链接:https://arxiv.org/pdf/1512.04150.pdf
开源代码:文章中有
发表年份:2016年 CVPR
作者:周博磊
CAM原文解读
Learning Deep Features for Discriminative Localization
在这项工作中,我们重新讨论了之前提出的平均全局池化层,并阐明了它如何在使用神经网络做图像级标签上训练后任然具有显著的定位能力。虽然平均池化(Global Average Pooling)这种技术以前就被使用过,但人民并没有认真思考它在特征表示上的作用。
1.介绍
尽管卷积层有很好的定位效果,但是它的定位能力在分类的全连接层中丧失了。(network in network)NIN中提出了在保持高性能的同时如何能避免使用全连接层–用GAP代替。只要稍微调整,整个卷积网络就能保持很好的定位能力直到最后一层。
上图展示了神经网络分类为刷牙和砍树的类激活图
2.Class Activation Mapping
选用与NIN或Google net类似的网络结构,仅仅在最后输出层采用一个GAP操作。
令fk(x,y)表示最后一个卷积层的第k个特征图在(x,y)处的值。然后对第k个特征图用GAP。
因此,对于一个给定的类别C,softmax之前的概率Sc为:
将Fk公式带入Sc中,有:
用Mc(x,y)表示类c在像素点(x,y)处的响应值,
好吧,上面的公式都是论文里面的,证明该方法的理论?
下面纯属个人理解:
CAM的主要特点就是利用最后一个卷积层的特征图,利用反向传播找出每个通道对应的权重,这个权重就表示该特征图对分为当前类别的重要性,权重越大说明对应的特征图越重要。然后,将对应的权重和特征图相乘就得到最终的类激活图。
文章的末尾放了很多实验结果,CAM这个方法在不降低分类性能的情况下还可以用作定位、分割等任务。有兴趣的可以仔细阅读全文。
CAM方法虽然可以定位,给出网络判定为某一类的依据。理论推导也很充分,但是也存在很大的缺点:它需要对网络进行二次训练才能得到每张特征图对应的权重,这是其在后期研究中一大缺点。
后面将继续关注CAM的相关改进–Grad-CAM!