Learning Deep Features for Discriminative Localization -CAM方法帮助若监督学习研究实现物体定位论文阅读笔记
作者:18届会长cyl
时期: 2020-9-11
论文《Learning Deep Features for Discriminative Localization》
期刊:2016CVPR
一、简单介绍:
是2016年CVPR上的一篇文章。对后来的弱监督学习的研究有很大的启发。
本文针对使用全局平均池化(GAP)的CNN网络提出了一个叫做class activation map(CAM)的技术,这个技术可以让CNN网络在没有边框标注的数据下进行图片识别和物体定位。
在监督学习中,分类问题需要带类别标签的数据集,定位问题需要带BBox(BoundingBox)标签的数据集,分别计算预测与真值之间的loss并进行优化,达到网络训练的目的。
而对于只提供分类标签的数据集,但需要完成分类和定位两个功能的网络训练时,就属于弱监督学习问题。
二、问题陈述
- 卷积神经网络在视觉识别任务中有着令人印象深刻的表现,一些研究还发现其在定位上也有着卓越的能力。
- 而这种定位能力在使用FC全连接层进行分类的时候会丧失。
- 我们发现使用GAP(global average pooling)替代全连接层,可以保持网络定位物体的能力,又不降低网络的分类能力,且相对于全连接网络而言参数更少。
- 于是本文提出一种CAM(Class Activation Mapping)方法,可以针对使用GAP的CNN网络,根据图片分类时使用的分类依据(图中对应的类别特征)在原图的位置进行可视化,并绘制成热力图,以此作为物体定位的依据。
三、怎么做的
1、类激活图Class Activation Mapping CAM
CAM主要是通过GAP(Global Average Pooling)来实现。
全局平均池化Golbal Average Pooling GAP:
GAP不是由本文提出,Golbal Average Pooling 第一次出现在论文Network in Network中,主要是用来regularizing training。后来又很多工作延续使用了GAP,实验证明,Global Average Pooling确实可以提高CNN效果。
平均池化:在feature map上以窗口的形式进行滑动(类似卷积的窗口滑动),操作为取窗口内的平均值作为结果,经过操作后,feature map降采样,减少了过拟合现象。
全局平均池化GAP:不以窗口的形式取均值,而是以feature map为单位进行均值化。即一个feature map输出一个值。
一般来说,GAP在最后一个卷积层后面,在GAP之后通常是softmax层。
以前的卷积神经网络,卷积层通过池化层(一般是 最大池化)后总是要一个或n个全连接层,最后在softmax分类。缺点是全连接层的参数超多,使模型本身变得非常臃肿,且容易过拟合。
将softmax层之前的全连接层替换为GAP可以弥补这些缺点。具体操作为,最后一层的卷积输出的 feature map 有N个通道,然后对这个 feature map 进行全局池化操作,可以获得长度为N的向量。
正式定义:
下面来重点讲解怎么通过GAP,来生成CAM(CAM有时候指Class Activation Mapping这个过程,有时候指生成的结果Class Activation Map,这里指后者)。
全局平均池化层输出最后一个卷积层的每个单元的特征图(feature map)的平均值。这些值的加权总和用于生成最后的输出。也可以说,我们计算最后一个卷积层特征图的加权总和来获得我们的CAM。
对于一张给定的图,f_k (x,y) 表示最后一个卷积层输出的第k个通道的特征图上(x,y)位置的激活值。运用GAP,可以得到结果
那么对于某个类别c,softmax的输入值为
最后类别c的值为 .
通过上面的公式,我们可以将S_c展开,如下所示:
我们定义属于某个类别c的CAM为:
简单来讲就是:
让我们用wn表示连接Flatten层的第k个节点和对应预测图像类别的输出节点的权重。
计算过程如图所示。
最后将生成的CAM图进行上采样到原图的大小就可以了。
上图展示了两类图像的CAM图。高亮了图像分类的判别区域,比如松狮狗的头部以及杠铃片。
展示了特定图像的top5分类的CAM图像。
为什么用GAP而不是GMP来做?
因为GMP鼓励我们的网络只关注1个discriminaltive part,GAP更鼓励网络识别对象的整个范围。我们在第三部分用ILSVRC数据集验证了此想法:GMP的分类性能与GAP相当,GAP的定位能力要强于GMP。
二、关于弱监督物体定位的实验
setup:
以AlexNet,VGGnet和GoogLeNet的主要的网络架构,分别在后面加入一个卷积层,GAP和softmax层,再适当增减卷积层的数量(因为我们发现当GAP之前的最后一个卷积层具有更高的空间分辨率时我们网络的定位能力更好),生成三种网络,AlexNet-GAP, VGGnet-GAP, GoogLeNet-GAP。
实验结果: 评估了CAM的定位能力
分类:
如下图所示,除了AlexNet外,与对应的网络相比,* -GAP的的分类效果只下降了1~2个百分点。 由于Alex分类准确率下降较多,所以构建了Alex* -GAP网络,即在原AlexNet加入两个卷积层,而不是一个。现在Alex*-GAP和原来的AlexNet的分类准确度差不多了。
定位:
为了做定位,我们需要生成一个边界框及其关联的物体类别。为了生成CAM的边界框,我们使用简单阈值来划分热力图。我们先用大于CAM最大值的20%的值做一个边框,然后我们再用覆盖分割图中最大连通分量做一个边框。
结果如下两表所示, GoogLeNet-GAP的准确率和全监督的AlexNet的准确度差不多(37.1 V.S. 34.2 ),但是和对应的网络相比,差距还是很大。所以说,在weakly supervised的路上,还有一段很长的路要走。
image-20200825221807055
两张图片在不同网络下的CAM图和saliency map展示。
四个图片在GoogleNet-GAP模型中的定位示例,真实框为绿色,预测的框为红色。
使用CAM图的定位(上面两个)与使用saliency map定位比较,真实框为绿色,预测的框为红色。
三、定位特征的通用性实验
结论:我们的网络即使在陌生数据上(不训练)也能定位
在其他数据集上使用我们提取的特征进行分类,结果如下所示,可以看出,普通GoogLeNet特征提取能力和GoogLeNet-GAP的 特征提取能力差不多。这说明*-GAP并没有降低特征提取能力,当然也没有提高。
下面来看看它的Localization能力,部分实验结果如下所示。可以看出,虽然没有用这些数据集训练,但是它还是能够定位图中物体的突出特征区域。
结论
总结:
文章通过CAM,可以通过不使用位置标记,来定位要识别物体的位置。这个技术为很多弱监督学习提供了启发。
缺点:
它只能找出物体的一些突出特征的区域,比如狗的头部,这样就导致在定位的时候,容易只定位到物体的一部分。这也是弱监督学习方法一个亟待解决的问题。
Learning Deep Features for Discriminative Localization -CAM方法帮助若监督学习研究实现物体定位论文阅读笔记相关推荐
- 【CAM】Learning Deep Features for Discriminative Localization
论文链接 github Abstract 1. Introduction CNN能保留位置信息,但经过用于分类的全连接神经网络时会丢失位置信息.最近的NIN和GoogLeNet使用全卷积网络.避免使用 ...
- 论文笔记 | Learning Deep Features for Discriminative Localization
作者 Bolei Zhou, Aditya Khosla, Agata Lapedriza, Aude Oliva, Antonio Torralba Bolei Zhou Abstract 受到NI ...
- 记录之Learning Deep Features for Discriminative Localization阅读
这篇文章有两个重要概念: 1.弱监督物体定位(Weakly-supervised object localization) 2.可视化卷积神经网络 文章的作法是,将最后一个卷积层的输出做一个加权融合, ...
- 【论文阅读】Learning Deep Features for Discriminative Localization
Abstract 研究了全局平均池化(global average pooling, GAP),分析了它如何仅仅使用图像级标签训练就能使CNN具有出色的定位能力(localization abilit ...
- 基于深度学习的表面缺陷检测方法综述-论文阅读笔记
//2022.3.2日阅读笔记 原文链接:基于深度学习的表面缺陷检测方法综述 (aas.net.cn) 个人对本篇综述内容的大致概括 论文首先介绍了表面缺陷检测中不同场景下的成像方案,主要根据表面颜色 ...
- [论文阅读笔记53]2021深度神经方法的关系三元组抽取综述
1. 题目 Deep Neural Approaches to Relation Triplets Extraction: A Comprehensive Survey Tapas Nayak†, N ...
- 论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning
论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning 本文通过神经网络利用了减少轮数的 Speck 的差分性质.为此,作者对神经网络 ...
- 华为又开始放大招了?CV新架构:VanillaNet: the Power of Minimalism in Deep Learning 论文阅读笔记
华为又开始放大招了?CV新架构:VanillaNet: the Power of Minimalism in Deep Learning 论文阅读笔记 一.Abstract 二.引言 三.单个 Van ...
- DCP(Deep Closest Point)论文阅读笔记以及详析
DCP论文阅读笔记 前言 本文中图片仓库位于github,所以如果阅读的时候发现图片加载困难.建议挂个梯子. 作者博客:https://codefmeister.github.io/ 转载前请联系作者 ...
最新文章
- 运用单例模式、建造者模式和策略模式实现异步加载Android联系人资料
- 备忘-常用工具/网页
- linux系统如何从字母切换为拼音,linux shell字母转换写法
- postfix导入extmail.sql时报错
- 文献记录(part88)--Robust clustering using a kNN mode seeking ensemble
- 11种图像清晰度评价函数
- java中static作用_java中static作用详解
- jdbcUrl is required with driverClassName错误解决
- Typecho安装后后台界面和文章链接均为404错误的解决方法
- macOS 安装和管理多个Python版本
- 【算法学习】纯高斯模糊算法处理灰度图片
- stream rabbit
- php 检查txt中全角大写字母的个数
- 狗、油腻、保温杯的中年
- 纸壳cms php,纸壳CMS 3.4 发布,电商功能增强
- 最通俗易懂的讲解工厂模式
- 《VERSE Versatile Graph Embeddings from Similarity Measures》阅读笔记
- 《财富》推荐的75本必读书 !!推荐看看!受益匪浅
- 装了linux的u盘格式化,u盘格式化容量变小了u盘安装linuxcentos
- 软件单元黑盒测试,软件测试教学资源单元3 黑盒测试.doc
热门文章
- 开发node桌面级应用工具:apk转化epub
- CAD建筑制图教程之普通阳台绘制
- 太强了,Python还可以计算农历
- WiFi身份验证出现问题该如何解决?——时讯无线
- HB6090总线测试工装研究
- 洛谷 P1002 过河卒 C语言
- java.lang.IllegalAccessException: void #####.MyBroadcastReceiver.init() is not accessible from jav
- ҈直҈播҈预҈告҈ |҈ 炎热盛夏,与Nono一起跨越高温“烤”验吧!
- python爬虫 爬取诗词名句网
- Github下载热榜,阿里最新出品Java面试核心讲(终极版)