首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

论文学习 about CAM

Learning Deep Features for Discriminative Localization

利用global average pooling(gap)层展示卷积神经网络卓越的定位能力。基于gap的网络结构能够对不参加训练的图片定位区别图片区域。

前期的研究发现,尽管目标位置没有提供,但是CNN不同层的卷积单元实际上像目标检测器一样工作。但是当使用全卷积层来进行分类后,卷积单元的这一特性便失去了。一些网络如Network in Network(NIN)和GooLeNet建议停止使用全连接层,在保持高性能的前提下,最小化参数数量。

在分类CNN中,一般使用全连接层(fc)作为最后的层次,但是fc有一些致命的缺点:

80%~90%的参数量在fc上。

容易过拟合

要求输入和输出的矩阵的大小保持fixed,很不方便。

随着fc的使用,localization的信息也丢失了。

一般情况下,gap层 作为一种结构正则化项,来防止过拟合现象,但是通过一些技巧,可以发现,除了作为正则化项,gap层在最终层之前都具有较佳的定位能力。

包含CAM技术的gap层使得基于分类问题训练的CNN既能够分类图片,也能完成特定类别图片区域的定位。

基于CAM的可视化技术可以直观的展示图片的哪部分区域被用于进行分类。

本文利用CAM技术关注两个领域的研究:弱监督目标定位和CNN内部描述的可视化。

与本文相似的研究工作是利用global max pooling层来进行研究,但是相关可视化工作使用边界内的点展示,而不是描述全部目标。

对特定种类的CAP展示CNN用于分类的区分图片区域,高亮部分意味着对于该区域对分类有着更重要的作用。

9.分类区域中使用GAP代替了fc,意思是通过多次卷积最后会得到一组分辨率更小的特征图,对所有的特征图进行上采样到输入图像的大小得到feature map,对每个feature map求平均值,得到一个数值序列,再用分类器对这个序列进行全职的分配,便可以做到分类的过程。

10.定位的区域是在分类的基础上做的,由于某种神奇的原因,GAP得到的平均值可以很好地代表源特征图谱,所以对应的权值也可以继承给源特征图谱。通过简单的权值相乘相加,就可以得到对应的定位的热力图。这就是CAM。

11.设

是最后一层卷积层第k个通道位于(x,y)处的激活值,

是GAP后第k个通道的结果。则对于给定类c,Softmax的输入

,其中wck对应类c及通道k的权重系数。综上,有

, 则

反应了(x,y)的激活值对于类c的重要程度。这样就得到了一个(7 * 7)的Class Activation Mapping,再将CAM放大到输入图片的大小与原图片叠加,就能获得最后的演示效果.

12.

对于不同图片,其对应类别CAM图不同,证明不同种类的分类关注要点不同,

对于同一图片,取top5种类CAM图,可观察分类对不同类别判定的依据有所差异。

13.

上面这张图是作者实验中设计的网络结构,其实就是把原来的一个fc层替换成了GAP层,之后接一个fc层用来分类。首先可以训练一个分类的网络,然后利用训练得到的最后fc层的参数作为权重,对前面的conv层的feature map进行加权平均,最后就得到了class activation map。(w1,w2…,wn)是对gap之后的特征进行加权平均,其实也就是对gap之前的每一层feature map进行加权平均。比如说我们可以拿出负责预测澳大利亚犬的那组参数(w1,w2,,,wn),对前面的最后一个卷积层的n张feature map进行加权,就可以得到澳大利亚犬的class activation map,这张map上激活值越大的地方,表示这个地方又有可能是属于澳大利亚犬,对这张class activation map求平均,其实就是这张图属于澳大利亚犬的概率,也就是图上的灰色圆对应的值。我们去找class activation map上的热区,其实就是在对物体进行定位。

14.GAP与GMP的区别

二者分类性能相近,但是GAP具有更好的定位性能。

15.GAP的理解

global average pooling 与 average pooling 的差别就在 "global" 这一个字眼上。global 与 local 在字面上都是用来形容 pooling 窗口区域的。 local 是取 feature map 的一个子区域求平均值,然后滑动这个子区域; global 显然就是对整个 feature map 求平均值了。

因此,global average pooling 的最后输出结果仍然是 10 个 feature map,而不是一个,只不过每个 feature map 只剩下一个像素罢了。这个像素就是求得的平均值。

其实就是表示global average pooling是对每个feature map内部取平均,每个feature map变成一个值(因为kernel的大小设置成和feature map的相同),10个feature map就变成一个10维的向量,然后直接输入到softmax中。

16.对于本文提到的网络如AlexNet,VGG,GoogLeNet,将最终输出前的全连接层移除,替换成GAP+全连接的softmax层。

17.试验发现,在GAP层前面的卷积层如果分辨率高对定位能力有提升,故移除了网络中的某些卷积层来达到提升分辨率的目的。相关网络设置见p4

18.实际上,采用GAP方法会使得网络的分类准确率有小幅度下降,但是其定位能力显著增加。

19.GAP CNN在不同类型数据集上训练后,能够对相应类型数据集特点进行可视化特征展示,例如在动作数据集StanFord Action40和UICC Event8中,清扫地板类图片重点辨别区域包含拖把,烹饪图片重点辨识区域包含平底锅。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180130G0A0CM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券