【CAM】Learning Deep Features for Discriminative Localization
论文链接
github
Abstract
1. Introduction
CNN能保留位置信息,但经过用于分类的全连接神经网络时会丢失位置信息。最近的NIN和GoogLeNet使用全卷积网络、避免使用全连接层,来减少参数量的同时保持模型高性能。
在ILSVRC benchmark的弱监督定位方法上,本文模型的错误率接近AlexNet
1.1. Related Work
图像分类任务可以衍生到目标定位上,介绍了本文相关工作的两条主线
Weakly-supervised object localization(有关CNNs的弱监督物体监督能力的研究)
前人研究的不足包括没有端到端的训练,一个网络需要用多个前向传递来定位物体,使其很难应用于真实世界的数据集。但本文进行了端到端的训练并用一个前向传递来定位。
和本文工作最接近的前人工作是Oquab等人的工作。不过Oquab用的是全局最大池化(GMP),也就是说他们的结果只能在图像中定位到目标物体的边缘点而不是内部区域;而本文用的是全局平均池化(GAP),可以定位目标物体的全部区域,此外作者还用CAM(class activation maps)热力图进行物体标注。作者在此特地申明了,GAP不是本文提出来的,是NIN提出来的。
Visualizing CNN(有关可视化CNNs学习到的内部特征以便更好地理解其特性的研究)
前人的不足:只分析了卷积层,忽视了全连接层。本文将全连接层换为GAP层来进行网络的从头到尾的可解释性分析。
还有人对CNNs的语义编码(visual encoding)进行了分析,但是他们只展示了深度特征里的信息,没有分析该信息的相对重要性,也没办法提取图中重要区域。
2. Class Activation Mapping
Fig2介绍了在CNNs中使用GAP来生成CAM(class activation maps)的流程:
fk(x,y),fk为最后一层卷积层输出的featuremap中,第k个channel上(x,y)的激活值f_k\left( x,y \right) ,f_k为最后一层卷积层输出的feature map中,第k个channel上(x,y)的激活值 fk(x,y),fk为最后一层卷积层输出的featuremap中,第k个channel上(x,y)的激活值
Fk=∑x,yfk(x,y),Fk为channelk的GAP值F^k=\sum_{x,y}{f_k\left( x,y \right)},F^k为channel \ k的GAP值 Fk=x,y∑fk(x,y),Fk为channel k的GAP值
wkc为单位k对应类别c的权重,从本质上讲,wkc表示Fk对类C的重要性,间接反映了channelk对类别C的贡献w_{k}^{c}为单位k对应类别c的权重,从本质上讲,w_{k}^{c}表示F^k对类C的重要性,间接反映了channel \ k对类别C的贡献 wkc为单位k对应类别c的权重,从本质上讲,wkc表示Fk对类C的重要性,间接反映了channel k对类别C的贡献
Mc(x,y)=∑kwkcfk(x,y),Mc为类别C的CAM,为矩阵M_c\left( x,y \right) =\sum_k{w_{k}^{c}f_k\left( x,y \right)},M_c为类别C的CAM,为矩阵 Mc(x,y)=k∑wkcfk(x,y),Mc为类别C的CAM,为矩阵
Sc=∑x,ywkcFk=∑x,y∑kwkcfk(x,y)=∑x,yMc(x,y),Sc为类别C的在softmax上的输入值,即类别C的线性分类logit值,为标量S_c=\sum_{x,y}{w_{k}^{c}F_k}=\sum_{x,y}{\sum_k{w_{k}^{c}f_k\left( x,y \right) =\sum_{x,y}{M_c\left( x,y \right)}}},S_c为类别C的在softmax上的输入值,即类别C的线性分类logit值,为标量 Sc=x,y∑wkcFk=x,y∑k∑wkcfk(x,y)=x,y∑Mc(x,y),Sc为类别C的在softmax上的输入值,即类别C的线性分类logit值,为标量
Pc=exp(Sc)∑cexp(Sc),Pc为类别C的softmax输出值P_c=\frac{\exp \left( S_c \right)}{\sum_c{\exp \left( S_c \right)}},P_c为类别C的softmax输出值 Pc=∑cexp(Sc)exp(Sc),Pc为类别C的softmax输出值
这里b站同济子豪兄对各层参数有详细分析
此处忽略了偏置项,即将softmax的输入偏置项设为0,使其对于最终的分类结果没有没有影响。
每个feature map(一个channel产生一个feature map)代表了一个卷积核从图像中提取出的一类视觉特征,而wkcw_{k}^{c}wkc间接反映了该特征对于类别C的重要程度。将CAM上采样至原图尺寸即可识别到和特定类最相关的图像区域了。
Fig3为CAMs的例子,不同类别的discriminative region可以被定位。
Fig4展示了即使是同一张图片,在进行不同分类时,定位出来的discriminative region也是不一样的
Global average pooling (GAP) vs global max pooling (GMP):
GAP:关键区域范围内的特征都有影响,也就是更关注区域
GMP:只关注最大值,非最大值的特征怎么变化都没用(因为无梯度)
两者的分类性能接近,但是定位性能不同,明显GAP的定位性能更好
3. Weakly-supervised Object Localization
评估在ILSVRC 2014 benchmark的dataset上训练出来的CAM的定位能力
3.1. Setup
在AlexNet、VGGNet和GoogLeNet上使用CAM,并且用后跟全连接softmax层的GAP替换全连接层。需要注意的是,移除全连接层会大幅度减少网络参数量(比如说VGGNet的参数量减少了90%),而且也会带来分类性能的下降。
如下,映射分辨率mapping resolution的定义,和AlexNet-GAP,VGGnet-GAP和GoogLeNet-GAP的结构和训练
- 分类:AlexNet-GAP,VGGnet-GAP和GoogLeNet-GAP和原始AlexNet,VGGnet和GoogLeNet做对比。在ILSVRC验证集上进行评估。
- 定位:AlexNet-GAP,VGGnet-GAP和GoogLeNet-GAP和原始GoogLeNet,NIN做对比并使用back propagation而不是用CAMs。在验证集和训练集上进行评估。
本文模型的定位和分类评估方法都是使用和ILSVRC一样的top-1和top-5的error metrics。
3.2. Results
先汇报了分类结果,以说明本文方法并不会大幅减损模型的分类性能;再展示了本文方法在弱监督物体定位的高效性。
Classification
可以看到,模型错误率普遍提升1-2%,而且AlexNet受影响最大,而AlexNet*-GAP(在GAP之前加了两层卷积层)要比原始AlexNet表现性能更好。
如预期,GoogLeNet-GAP和GoogLeNet-GMP在分类上的性能相近
Localization
本文通过简单的threshold技术来分割热力图,来用CAMs来生成bounding box(也就是定位框);
第一次分割区域取值为大于最大值20%
Table 2为在测试集上测试各模型的top-1和top-5错误率
如图,GoogLeNet-GAP的错误率比GoogLeNet,基于反向传播的GoogLeNet和GoogLeNet-GMP要低
Fig5 为输出示例
Fig6 为定位框输出对比
Table 3为各模型在验证集上的top-5错误率
4. Deep Features for Generic Localization
作者将本文方法与以下SUN397、MIT Indoor67等场景和物体分类方法进行对比
Table5 展示了作者抽取的时本文表征最好的网络特征进行比较,AlextNet的f7、GoogLeNet的ave pool和GoogLeNet-GAP 的gap
可见GoogLeNet-GAP和GoogLeNet表现比AlexNet好
而在网络层数更少的情况下,GoogLeNet-GAP的表现优于GoogLeNet
总的来说,作者发现GoogLeNet-GAP与当今sota方法相比仍具有竞争力
此外,作者还想知道GoogLeNet-GAP使用CAM技术生成的定位图是否在场景中是带有有效信息的。
Fig8 展示了各数据集的一些定位图示例,作者发现模型泛化较好,最具区分力的区域在所有数据集上都被高亮了出来,也就是说本文方法在generic task的生成可定位的深度特征时是有效的。
4.1. Fine-grained Recognition(细粒度图像分类)
CUB-200-2011数据集用于识别200种类的鸟,作者使用此数据集是因为其中包含的定位框标注可用于评估本文模型的定位能力。
Table4 为评估结果
其中Train/Test Anno.项中的n/a表示train和test数据集中皆没有定位框标注,BBox表示皆有定位框标注
可以看到没有任何定位框标注,且训练集和测试集使用整张图像时,GoogLeNet-GAP精确度可达到63%,当使用定位框标注时准确度升至70.5%
考虑到模型的定位能力,作者使用了3.2的从CAM使用threshhold生成定位框方法来先在测试集和训练集中生成鸟的定位框,再使用GoogLeNet-GAP来从裁剪后的定位框里提取特征进行训练测试。作者发现这种细粒化方法能够将无定位框标注的分类结果从63%提升至67.8%,这种方法也能高亮出区分不同类别物体的特征(如鹈鹕和其他鸟类最不同的特征为鹈鹕的嘴巴)。
此外,作者发现,GoogLeNet-GAP 能够在 0.5 联合交集 (IoU) 标准下准确定位 41.0% 的图像中的鸟类,而随机模型性能为 5.5%,Figure7 为一些可视化示例
4.2. Pattern Discovery(概念语义发现)
作者在GoogLeNet-GAP的GAP层上训练了一个线性SVM并且使用CAM技术来识别重要区域。之后使用提取出来的深层特征进行三个模式识别实验
Discovering informative objects in the scenes(场景中发现关键物体)
从SUN(场景标注+目标检测)数据集中取出10个场景类图片组成全标注图像数据集,作者在每个场景类上训练了one vs all 线性SVM并使用该线性SVM权重计算了CAMs
Fig9 中绘制了预测场景类的CAM并列举了和两个场景类的最高CAM激活区域重叠频率最多的top 6物体,作者发现最高激活区域往往对应着表示特定场景类别的对象
Concept localization in weakly labeled images(弱监督定位短语概念)
使用hard-negative mining algorithm,作者学习了concept detector并且使用CAM来定位图像中的concept
Fig10 可视化了两个concept detector案例
Weakly supervised text detector(弱监督文字检测器)
使用的包含SVT数据集文本的350 Google StreetView图像数据集作为positive set,并从SUN数据集中户外场景图像随机取样组成negative set。
虽然是分类模型,但是本文方法没有使用定位框标注而能准确高亮文本
Interpreting visual question answering(VQA视觉问答)
本文方法能在图像中高亮预测答案的相关区域
5. Visualizing Class-Specific Units
每一行:每个类别找出ranked softmax weighed最大的三个channel
每一列:再找到该channel中高激活值在原图的区域(感受野)
结论:不同channel提取不同特征,但都对应特定类别的相关语义
比如在living room类别中,第一行提取出的是沙发,第二行提取出的是餐桌,第三行提取出的是壁炉(还是电视??),即模型将这三个特征重要性排序为沙发>餐桌>壁炉
【CAM】Learning Deep Features for Discriminative Localization相关推荐
- 【论文阅读】Learning Deep Features for Discriminative Localization
Abstract 研究了全局平均池化(global average pooling, GAP),分析了它如何仅仅使用图像级标签训练就能使CNN具有出色的定位能力(localization abilit ...
- Learning Deep Features for Discriminative Localization -CAM方法帮助若监督学习研究实现物体定位论文阅读笔记
作者:18届会长cyl 时期: 2020-9-11 论文<Learning Deep Features for Discriminative Localization> 期刊:2016CV ...
- 论文笔记 | 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 Enriched Features for Real Image Restoration and Enhancement 阅读笔记
- 【论文阅读】Learning Spatiotemporal Features with 3D Convolutional Networks
[论文阅读]Learning Spatiotemporal Features with 3D Convolutional Networks 这是一篇15年ICCV的论文,本篇论文提出的C3D卷积网络是 ...
- 【论文笔记——DIM】Learning Deep Representations By Mutual Information Estimation and Maximization
arxiv:https://arxiv.org/abs/1808.06670 code:https://github.com/rdevon/DIM report video:https://www.y ...
- 【论文笔记】Learning Enriched Features for Real Image Restoration and Enhancement
Learning Enriched Features for Real Image Restoration and Enhancement Abstract Contribution Method(M ...
- 【翻译】【VGGNet】VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 用于大规模图像识别的非常深的卷积网络 作者:Karen Simon ...
最新文章
- VTK修炼之道37:图像平滑_高斯滤波器
- Python idle下载、安装与使用教程
- [爬虫+数据分析] 分析北京Python开发的现状
- VBScript - Round Function
- mysql_real_escape_string 报错_addslashes与mysql_real_escape_string的区别
- javascript兼容性:IE6/7关闭浏览器操作
- 机器视觉--入门小结
- 小程序nginx做反向代理_NGINX作为节点或Angular应用程序的反向代理
- 长方体空间移动工程师_打破常规,私人定制移动阳光房
- ETL工具Kettle使用教程
- OpenSSL密码库算法笔记——第2.4章 三种模运算的比较
- 【JavaScript】鼠标、键盘的基础事件
- 使用jquery,按回车键实现tab键的功能
- tcp 阻塞与非阻塞
- word to sql
- Diffusion Model (扩散生成模型)的基本原理详解(三)Stochastic Differential Equation(SDE)
- 无人驾驶汽车发展史大事纪实
- 服务器防火墙 配置端口号
- java初级程序员简历上不能写,但是不能不会的项目!
- C语言学习-翁凯(第九章笔记)
热门文章
- JS原型、原型链到底是什么?
- 【Linux命令】su sudo
- python turtle 画老鼠_通过Turtle库在Python中绘制一个鼠年福鼠
- 使用Lazy.nvim插件管理器,让你的Nvim懒惰起来(从Packer迁移到Lazy记录)
- Android初级教程:RatingBar的使用
- 【ftrack聊天室】又来大佬了!VR的流程搭建还可以这么玩?!
- 【Kotlin】加密解密2:DES、AES加密和解密
- android+checkbox全选多选反选取消选择
- html如何让链接下划线消失,css让超链接不加下划线?
- Heckman两阶段模型学习笔记