Class Activation Mapping (CAM)
概
CAM (class activation mapping) 是一种非常实用的可视化方法, 同时在弱监督学习中(如VQA)起了举足轻重的作用.
主要内容
CAM的概念, 用于解释, 为什么神经网络能够这么有效, 而它究竟关注了什么?
| 符号 | 说明 |
|---|---|
| \(f(\cdot)\) | 网络 |
| \(X\) | 网络输入 |
| \(A_l^k\) | 第\(l\)层的第\(k\)张特征图(特指在卷积层中) |
| \(w\) | 权重 |
| \(c\) | 所关心的类别 |
| \(\alpha\) | 用于CAM的权重 |
CAM

最开始的CAM仅用于特殊的CNN: 卷积层 + AvgPool + FC的结构,
设最后一层卷积层的特征图为\(A_L\), 则
\]
进一步可以注意到,
\]
于是可以定义:
\]
这里, \(\alpha = \frac{w}{HW}\).
即
\]
一般, 这种score会最后加个relu:
\]
Grad-CAM
普通的CAM有限制, Grad-CAM在此基础上进行扩展.
\]
\]
注意: \(L \rightarrow l\).
Grad-CAM++
作者认为, Grad-CAM++不能很好应对多个目标的情况, 应该进一步加权:
\]
\]
Score-CAM
作者认为, 利用梯度计算score并不是一个很好的主意.
\]
这里\(X_b\)是一个固定的基准向量, 作者直接取\(f(X_b)=\mathbb{0}\),
\]
为将\(A_l^k\)上采样至和\(X\)相同大小, 并标准化:
\]
使其落于\([0, 1]\).
最后
\(L^c_*\)最后也只是\(H\times W\)的, 需要上采样到和\(X\)一样的大小.
代码
Class Activation Mapping (CAM)的更多相关文章
- pytorch中网络特征图(feture map)、卷积核权重、卷积核最匹配样本、类别激活图(Class Activation Map/CAM)、网络结构的可视化方法
目录 0,可视化的重要性: 1,特征图(feture map) 2,卷积核权重 3,卷积核最匹配样本 4,类别激活图(Class Activation Map/CAM) 5,网络结构的可视化 0,可视 ...
- grad-cam 、cam 和热力图,基于keras的实现
http://bindog.github.io/blog/2018/02/10/model-explanation/ http://www.sohu.com/a/216216094_473283 ht ...
- 在CNN上增加一层CAM告诉你CNN到底关注什么
Cam(Class Activation Mapping)是一个很有意思的算法,他能够将神经网络到底在关注什么可视化的表现出来.但同时它的实现却又如此简介,相比NIN,googLenet这些使用GAP ...
- 凭什么相信你,我的CNN模型
背景 学术界一直困惑的点是"如何让看似黑盒的CNN模型说话",即对它的分类结果给出解释. 这里的解释是指,让模型告诉我们它是通过图片的哪些像素做出判断的,并不是深度学习理论层面的解 ...
- [Kaggle] How to handle big data?
上一篇,[Kaggle] How to kaggle?[方法导论] 这里再做一点进阶学习. 写在前面 "行业特征" 的重要性 Ref: Kaggle2017—1百万美金的肺癌检测竞 ...
- 化繁为简,弱监督目标定位领域的新SOTA - 伪监督目标定位方法(PSOL) | CVPR 2020
论文提出伪监督目标定位方法(PSOL)来解决目前弱监督目标定位方法的问题,该方法将定位与分类分开成两个独立的网络,然后在训练集上使用Deep descriptor transformation(DDT ...
- 卷积网络可解释性复现 | Grad-CAM | ICCV | 2017
觉得本文不错的可以点个赞.有问题联系作者微信cyx645016617,之后主要转战公众号,不在博客园和CSDN更新. 论文名称:"Grad-CAM: Visual Explanations ...
- Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization
目录 Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization 1.Abstract 2.Intr ...
- Res2net:多尺度骨干网络结构
<Res2Net: A New Multi-scale Backbone Architecture> 来自:南开大学程明明组 论文:https://arxiv.org/abs/1904.0 ...
随机推荐
- Hadoop入门 概念
Hadoop是分布式系统基础架构,通常指Hadoop生态圈 主要解决 1.海量数据的存储 2.海量数据的分析计算 优势 高可靠性:Hadoop底层维护多个数据副本,即使Hadoop某个计算元素或存储出 ...
- Applescript快速入门及OmniFocus每日md报告开发
本篇主要记录 Applescript 基础语法,以及利用 applescript 生成 omnifocus 每日报告 从 windows 转换到 macos,最近一直在不断折腾,这两天浏览 githu ...
- absorb
absorb 物理的absorb比较直观.被书本/知识absorb也好理解.涉及到money/time时有点抽象,但汉语也有"吸金"的说法,consume, use up.可以吸收 ...
- Maven 学习第一步[转载]
转载至:http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html 什么是 Maven?(摘自百度百科) Maven是Apache的一个 ...
- Siebel调用WebService
Siebel可以调用外部系统的接口,通过WebService的接入方式实现,所在的项目都是通过ESB,其他系统的接口都要经过ESB,由ESB提供WSDL文档,通过Siebel调用. 一.修改Tools ...
- Linux基础命令---ftp
ftp ftp指令可以用来登录远程ftp服务器. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 ftp [ ...
- 大数据处理系列之(一)Java线程池使用
前言:最近在做分布式海量数据处理项目,使用到了java的线程池,所以搜集了一些资料对它的使用做了一下总结和探究, 前面介绍的东西大多都是从网上搜集整理而来.文中最核心的东西在于后面两节无界队列线程池和 ...
- oracle体系结构(图)
- Apache设置虚拟机端口
Apache虚拟机设置端口,以45184端口为例httpd-vhosts.conf文件NameVirtualHost *:45184<VirtualHost *:45184> Doc ...
- 在项目中引入百度的ueditor编辑器
第一步:解压ueditor压缩包 在项目中按顺序引入三个文件 <script type="text/javascript" charset="utf-8" ...