CAM实现的流程--基于Pytorch实现

CAM类激活映射

CAM是什么

  • 可视化CNN的工具, CAM解释网络特征变化,CAM使得弱监督学习发展成为可能,可以慢慢减少对人工标注的依赖,能降低网络训练的成本。通过可视化,就像往黑箱子里打了一个手电筒,让人们可以尝试去理解网络。
  • 在不同空间位置处存在这些视觉图案的加权线性和, 通过简单地将类激活映射上采样到输入图像的大小,我们可以识别与特定类别最相关的图像区域
    在这里插入图片描述
     GAP就是把特征图转换成特征向量,每一层特征图用一个值表示,所以如果这个特征图的深度是512,那么这个特征向量的长度就是512                                                                     Australian terrier这个类对应的权重乘上特征图对应的层,用热力图归一化,即下面一排热力图:W1*蓝色层+W2*红色层+…+Wn*绿色层=类激活映射(CAM),所以说CAM是一个加权线性和

[step1:选择可视化的特征层,例如尺寸为 16∗16∗1024 的特征图 step2:获取该特征的每个channel的权重,即长度为1024的向量; step3:通过线性融合的方式,把不同channel的权重赋回原特征图中,在依次的将各个通道的特征图线性相加获取尺寸为1616的新特征图; step4:对该新特征图进行归一化,并通过插值的方式还原到原图尺寸]:

  • CAM基于分类,所以被激活的区域是根据分类决定的在这里插入图片描述
  • 改变网络结构,例如把全连接层改成全局平均池化层,这不利于训练
  • 在弱标记图像中定位比较抽象的概念:
    在这里插入图片描述
  • CAM可视化这可以帮助我们理解网络,通过CAM技术,我们可以看到网络关注哪里,可以利用CAM帮助我们发现问题,改进结构

CAM与CNN

CNN的操作可以看做是滤波器对图片进行特征提取,被一层层卷积核提取后,基本就是卷积核判断是重要的信息,其值越大,特征越明显,得到卷积的关注度就越高。

一个深层的卷积神经网络,通过层层卷积操作,提取出语义信息和空间信息,我们一直都很希望可以打破深度神经网络的黑盒,可以溯源特征提取的过程,甚至可以知道特征所代表的语义内容, 通常每一层的特征图还会有很多的层,我们一般用channel表示,这些不同层(通道)特征图,我们可以认为理解为存放着卷积提取到不同的特征。随着卷积的逐层深入,该特征已经失去了原有的空间信息和特征信息,被进一步的集成压缩为具有高度抽象性的特征图。这些特征图所代表的语义信息我们不得而知,但是这些特征图的重要性我们却可以通过计算得出。所以我们的CAM主要作用就是根据不同通道的贡献情况,融合出一张CAM图,那么我们就可以更直观的了解到在图像中那些部分是在CNN中是高响应的重要信息,哪些信息是无关紧要的无聊信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值