feature map可视化学习记录

一、简单可视化

任务背景:学姐让我做的。。。
任务内容:网络中间层feature map可视化。
初步思路:学学别人。
成果:找到了这篇文章。
https://blog.csdn.net/xz1308579340/article/details/85622579
之后应用他的代码在自己的二分类VGG16上运行。
原图在这里插入图片描述
在这里插入图片描述在这里插入图片描述
上图为前三层(包括BN、ReLU等,不是卷积的前三层),随便拿的图。
简单示例,这部分不重要。因为基本就只是输出而已。

二、热力图版本

背景:学姐不满意。然后给我看了这个。
https://github.com/utkuozbulak/pytorch-cnn-visualizations
说她想让我做这个热力图的样子。

图片
我就去代码里读。关于Grad-Cam细节可以搜其他文章。我主要记录我的经验。大体算法可以描述如下:

  1. 输入图片到网络,不直接使用网络的forward,而是上层输出作为下层输入的方式计算。计算过程中使用register_hook用于记录梯度。另外还需要一个数据结构计算中间conv_output。
    2.利用ackward(gradient=output_it_should_have, retain_graph=True)得到梯度。这里output_it_should_have是一个理想状态下应有的输出结果。
  2. 对于第i层第j个feature map,将其对于的grad求平均。例如原本维度是55*55的grad,平均后为一个常数。这样一来。然后就得到了第i层每一个feature map的权重,对其加权求和,得到一个map代表该层结果,这个map就是CAM。
    4.将CAM和原图结合起来,然后输出。
    在这里插入图片描述
    在这里插入图片描述
    上图为某个模型某层可视化结果。深色区域表示网络关注的区域。以此可以判断模型好坏,作为调试依据。

三、其他方法

中间还尝试过这个。
https://blog.csdn.net/weixin_40500230/article/details/93845890
这个大体上是在第一部分那种的基础上,把黑白的feature map处理,变成heatmap。不过没有梯度加权,不如第二部分的Grad_CAM。

四、进一步学习

这部分内容是在第二部分基础上的。主要补充如下:

1.用crop加overlay的方式切割,求激活图,再重新拼接。效果更好。
2.heat map中色调越冷,数值越高。

在这里插入图片描述
最后附一张用了crop的图片。
在这里插入图片描述

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值