文章目录

  • 主要工作
  • Global Average Pooling的工作机制
  • CAM
  • Grad-CAM

主要工作

CAM与Grad-CAM用于解释CNN模型,这两个算法均可得出classactivationmappingclass\ activation\ mappingclass activation mapping(类似于热力图),可用于定位图像中与类别相关的区域(类似于目标检测),如下图所示:


五颜六色的区域即为类别相关的区域,表明了CNN为什么如此分类,比如CNN注意到了图中存在牙齿,因此将该图分为Brushing teeth。

阅读了三篇论文,总体来说收获有:

  1. 明白全局池化(Global Average Pooling)为什么有效
  2. 明白CAM与Grad-CAM可视化的原理

需注意,CAM与Grad-CAM的可视化只可以解释为什么CNN如此分类,但是不能解释CNN为什么可以定位到类别相关的区域

Global Average Pooling的工作机制

设类别数为nnn,最后一层含有nnn个特征图,求每张特征图所有像素的平均值,后接入一个有nnn个神经元的全连接层,这里有两个疑问

为什么要有nnn个特征图
论文的解释为“the feature maps can be easily interpreted as categories confidence maps.”。
这么做效果好是前提,对此的解释便是,每个特征图主要提取了某一类别相关的某些特征,例如第iii张特征图主要提取图中与飞机相关的部分,第i+1i+1i+1张特征图主要提取图中与汽车相关的部分。
论文在CIFAR10上训练完模型后,最后一层特征图可视化的结果如下:

从图来看,基本满足论文的解释

求完平均后接入全连接,这么做的理由亦或是好处是什么
下一节的“为什么如此计算可以得出类别相关区域”部分解释

CAM

CNN一般有特征提取器与分类器组成,特征提取器负责提取图像特征,分类器依据特征提取器提取的特征进行分类,目前常用的分类器为MLP,目前主流的做法是特征提取器后接一个GAP+类别数目大小的全连阶层。

CNN最后一层特征图富含有最为丰富类别语意信息(可以理解为高度抽象的类别特征),因此,CAM基于最后一层特征图进行可视化。

CAM将CNN的分类器替换为GAP+类别数目大小的全连接层(以下称为分类层)后重新训练模型,设最后一层有nnn张特征图,记为A1,A2,...AnA^1,A^2,...A^nA1,A2,...An,分类层中一个神经元有nnn个权重,一个神经元对应一类,设第iii个神经元的权重为w1i,w2i,...,wniw_1^i,w_2^i,...,w_n^iw1i​,w2i​,...,wni​,则第ccc类的classactivationmappingclass\ activation\ mappingclass activation mapping(记为LCAMcL_{CAM}^cLCAMc​)的生成方式为:

LCAMc=∑i=1nwicAi(式1.0)L_{CAM}^c=\sum_{i=1}^{n}w_i^cA^i\tag{式1.0}LCAMc​=i=1∑n​wic​Ai(式1.0)

图示如下:

生成的Class Activation Mapping大小与最后一层特征图的大小一致,接着进行上采样即可得到与原图大小一致的Class Activation Mapping


为什么如此计算可以得出类别相关区域

用GAP表示全局平均池化函数,沿用上述符号,第ccc类的分类得分为ScS_cSc​,GAP的权重为wicw_{i}^cwic​,特征图大小为c1∗c2c_1*c_2c1​∗c2​,Z=c1∗c2Z=c_1*c_2Z=c1​∗c2​,第iii个特征图第kkk行第jjj列的像素值为AkjiA^i_{kj}Akji​,则有
Sc=∑i=1nwicGAP(Ai)=∑i=1nwic1Z∑k=1c1∑j=1c2Akji=1Z∑i=1n∑k=1c1∑j=1c2wicAkji\begin{aligned} S_c&=\sum_{i=1}^{n}w_i^cGAP(A_i)\\ &=\sum_{i=1}^nw_i^c\frac{1}{Z}\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}A_{kj}^i\\ &=\frac{1}{Z}\sum_{i=1}^n\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}w_i^cA_{kj}^i \end{aligned} Sc​​=i=1∑n​wic​GAP(Ai​)=i=1∑n​wic​Z1​k=1∑c1​​j=1∑c2​​Akji​=Z1​i=1∑n​k=1∑c1​​j=1∑c2​​wic​Akji​​

特征图中的一个像素对应原图中的一个区域,而像素值表示该区域提取到的特征,由上式可知ScS_cSc​的大小由特征图中像素值与权重决定,特征图中像素值与权重的乘积大于0,有利于将样本分到该类,即CNN认为原图中的该区域具有类别相关特征。式1.0就是计算特征图中的每个像素值是否具有类别相关特征,如果有,我们可以通过上采样,康康这个这个像素对应的是原图中的哪一部分

GAP的出发点也是如此,即在训练过程中让网络学会判断原图中哪个区域具有类别相关特征,由于GAP去除了多余的全连接层,并且没有引入参数,因此GAP可以降低过拟合的风险

可视化的结果也表明,CNN正确分类的确是因为注意到了原图中正确的类别相关特征


Grad-CAM

CAM的缺点很明显,为了得出GAP中的权重,需要替换最后的分类器后重新训练模型,Grad-CAM克服了上述缺点。

设第ccc类的分类得分为ScS_cSc​,GAP的权重为wicw_{i}^cwic​,特征图大小为c1∗c2c_1*c_2c1​∗c2​,Z=c1∗c2Z=c_1*c_2Z=c1​∗c2​,第iii个特征图第kkk行第jjj列的像素值为AkjiA^i_{kj}Akji​。

计算αic=1Z∑k=1c1∑j=1c2∂Sc∂Akji\alpha_i^c=\frac{1}{Z}\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}\frac{\partial S_c}{\partial A^i_{kj}}αic​=Z1​k=1∑c1​​j=1∑c2​​∂Akji​∂Sc​​

Grad-CAM的Class Activation Mapping计算方式如下:
LGrad−CAMc=ReLU(∑iαicAi)L_{Grad-CAM}^c=ReLU(\sum_{i}\alpha_i^cA^i)LGrad−CAMc​=ReLU(i∑​αic​Ai)

之所以使用ReLU激活函数,是因为我们只关注对于类别有关的区域,即特征图取值大于0的部分

Grad-CAM为什么这么做呢?具体的推导位于快点我,我等不及了,推导比较简单,这里就不敲了,直接贴图

最后三个式子漏了符号∂\partial∂,总的来说还是非常惊喜的,如果CAM在可视化的过程中,将特征图进行了归一化,则有
LCAMc=1Z∑i=1nwicAi=1Z∑i=1n∑k=1c1∑j=1c2∂Sc∂AkjiAiL_{CAM}^c=\frac{1}{Z}\sum_{i=1}^{n}w_i^cA^i=\frac{1}{Z}\sum_{i=1}^n\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}\frac{\partial S_c}{\partial A^i_{kj}}A^i LCAMc​=Z1​i=1∑n​wic​Ai=Z1​i=1∑n​k=1∑c1​​j=1∑c2​​∂Akji​∂Sc​​Ai

Grad-CAM是CAM的一般化。

深度学习论文笔记(可解释性)——CAM与Grad-CAM相关推荐

  1. [深度学习论文笔记]医学图像分割U型网络大合集

    [深度学习论文笔记]医学图像分割U型网络大合集 2015 U-Net: Convolutional Networks for Biomedical Image Segmentation (MICCAI ...

  2. [深度学习论文笔记]Multi-phase Liver Tumor Segmentation with Spatial Aggregation

    Multi-phase Liver Tumor Segmentation with Spatial Aggregation and Uncertain Region Inpainting [深度学习论 ...

  3. [深度学习论文笔记]Pairwise Learning for Medical Image Segmentation

    [深度学习论文笔记]Pairwise Learning for Medical Image Segmentation 医学图像分割的成对学习 Published: October 2020 Publi ...

  4. [深度学习论文笔记]Modality-aware Mutual Learning for Multi-modal Medical Image Segmentation

    Modality-aware Mutual Learning for Multi-modal Medical Image Segmentation 多模态医学图像分割中的模态感知互学习 Publish ...

  5. [深度学习论文笔记]UNETR: Transformers for 3D Medical Image Segmentation

    UNETR: Transformers for 3D Medical Image Segmentation UNETR:用于三维医学图像分割的Transformer Published: Oct 20 ...

  6. [深度学习论文笔记]A Tri-attention Fusion Guided Multi-modal Segmentation Network

    A Tri-attention Fusion Guided Multi-modal Segmentation Network 一种三注意力融合引导的多模态分割网络 Published: 2 Nov 2 ...

  7. 【深度学习论文笔记】DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition

     时间:2014/7/29 10:00 论文题目:DeCAF: A Deep Convolutional Activation Featurefor Generic Visual Recognit ...

  8. [深度学习论文笔记DoDNet: Learning to segment multi-organ and tumors from multiple partially labeled datasets

    DoDNet: Learning to segment multi-organ and tumors from multiple partially labeled datasets DoDNet:学 ...

  9. [深度学习论文笔记]Multimodal CNN Networks for Brain Tumor Segmentation in MRI

    Multimodal CNN Networks for Brain Tumor Segmentation in MRI: A BraTS 2022 Challenge Solution MRI中用于脑 ...

  10. [深度学习论文笔记]使用多模态MR成像分割脑肿瘤的HNF-Netv2

    HNF-Netv2 for Brain Tumor Segmentation using multi-modal MR Imaging 使用多模态MR成像分割脑肿瘤的HNF-Netv2 Publish ...

最新文章

  1. hadoop2 自定义OutputFormat场景杂记
  2. 南开计算机和国立清华大学,同样来自交通大学,西安交通大学和上海交通大学,为何后来差距这么大?...
  3. python sqlite3的使用
  4. 自己封装js组件 - 中级
  5. 6、CSS Id 和 Class类选择器
  6. 趋势不能deploy的解决方法
  7. AI算法连载08:统计学之贝叶斯
  8. [C++] - 面向对象-图书管理系统
  9. java 转dwg转图片_dwg转pdf要怎么转换
  10. 多数据源与动态数据源的权衡
  11. linux 程序收到sigsegv信号_Linux基础知识(五)
  12. H3C无线控制器做用户隔离和DHCP Relay的注意事项
  13. lbp2900打印机linux驱动下载,佳能LBP2900+打印机驱动
  14. 舒尔特 Pro ,专业训练注意力专注力
  15. bzoj5369: [PKUSC2018]最大前缀和 (状压dp)
  16. 如何看待2022年秋招后开端岗一片红海?
  17. 【爬虫】Web Scraper正则表达式
  18. linux -第一式(终端开启键盘背光)
  19. 《Python 黑科技》一键分析评论关键词,制作精美词云
  20. 开关电源计算机仿真技术pdf,《开关电源仿真设计》PPT课件.ppt

热门文章

  1. 课堂作业--物不知数
  2. python怎么更新setuptools_Python Setuptools 升级(Upgrade)
  3. 计算机中确实MSVCO120.DLL,Win10开机提示丢失msvcr120.dll文件
  4. 架构师最重视的文档--技术白皮书
  5. 永磁同步电机(PMSM)
  6. 年会抽奖 抽奖系统 抽奖软件 C# Winform
  7. 说说自己理解的web架构
  8. Rsync用于数据备份
  9. 智能化小区安全方面应该有的五道防线!
  10. CAD制图初学入门常见问题秘笈,助你摆脱节后综合症!(上)