《CAM-Learning Deep Features for Discriminative Localization》笔记

简介

转载:Learning Deep Features for Discriminative Localization 阅读笔记-网络可视化NO.2

综述

论文重新审视了global average pooling(GAP)并详细阐述了这种pooling方式如何使得CNN具有优异的目标定位能力。

介绍

  1. 作者受到NIN、GoogLeNet的启发,摒弃FC,转而使用GAP,在减少参数的同时对原本的分类效果影响不大
  2. GAP实际上起到一定正则化的作用,paper在几种经典的网络结构中使用其卷积结构,而后+GAP+FC,采用softmax直接预测输出
  3. 论文中指出,FC会导致feature map损失空间位置信息,而GAP则不会(我的理解是如果在图像的某一位置有高响应,则经过FC之后,根据整个feature并不能分辨出刺激源于左上角还是右下角还是什么其他的地方,而通过GAP就可以,因为其保留了空间位置信息)

实现

  1. 论文使用的NIN和GoogLeNet类似的结构,保留卷积结构,接上GAP,接上一层FC,直接作为分类预测结果,论文通过将输出层的权重投影到feature map上来识别图像区域的重要性,由此将这种技术称为class activation mapping(CAM)
  2. 具体CAM如何实现?详见如下图:


注:针对某一特定类别,比如图中的这个狗狗,我们将最后一次卷积操作得到的feature map与训练FC得到的特征权重进行累加求和,得到我们的CAM(当我读到这里的时候,产生了一个疑惑,图中所示的CAM明明是映射到了原像素空间,但是经过多次卷积池化feature map的size肯定不等于原图像大小,目前的理解是将最后得到的CAM直接upsampling到原像素空间,我们的目的无非是计算图像中的每个像素对最终结果的贡献程度)$f_k(x,y)$代表第$k$个feature map在$(x,y)$坐标处的值,$S_c=\sum w_c*f_k(x,y)$则表示所有feature map对类$c$的贡献程度。


注:图中针对briard和barbell分别计算CAM—发现对briard分类正确的特征集中在头部,对barbell分类正确的特征集中在两端的铁块上。

实验结果和定位

  1. 针对分类问题,修改网络结构之后(将FC替换为GAP),分类效果略有降低,但变化不明显,结果如下:

  1. 定位:将CAM中最强反应的20%作为threshold做出定位框,可以发现模型的定位效果提升明显,效果如下:

  1. 首先进行定位,而后进行提取特征,进行分类,效果提升大概4.8%,结果如下:

一分一毛,也是心意。