Python 3.x 在背景图像上绘制神经网络权重的热图

Python 3.x 在背景图像上绘制神经网络权重的热图,python-3.x,matplotlib,deep-learning,conv-neural-network,seaborn,Python 3.x,Matplotlib,Deep Learning,Conv Neural Network,Seaborn,我有一个问题,就是要展示给我的原始图像,以便以一种方式进行可视化,即原始图像位于背景中,并且指定的权重以seaborn热图形式显示 热图图片示例: 我发现了一些关于使用混淆矩阵可视化的答案,但是权重是一个完全不同的东西 此外,我想问,是否有可能以这样的方式可视化图像,比如图像是28x28,那么3x3的权重如何覆盖所有内容?我假设您的热图来自网络中卷积层的特征图,并且您希望使用CAM(类激活贴图)或渐变CAM等技术(梯度加权类激活映射) 假设您已将卷积功能图转换为14x14 numpy阵列的热图

我有一个问题,就是要展示给我的原始图像,以便以一种方式进行可视化,即原始图像位于背景中,并且指定的权重以seaborn热图形式显示

热图图片示例:

我发现了一些关于使用混淆矩阵可视化的答案,但是权重是一个完全不同的东西


此外,我想问,是否有可能以这样的方式可视化图像,比如图像是28x28,那么3x3的权重如何覆盖所有内容?

我假设您的热图来自网络中卷积层的特征图,并且您希望使用CAM(类激活贴图)或渐变CAM等技术(梯度加权类激活映射)

假设您已将卷积功能图转换为14x14 numpy阵列的热图,并希望将其覆盖在256x256像素的图像上。热图包含0到1之间的32个浮点数。其想法是首先使用opencv将14x14功能图的采样增加到256x256:

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('./my-image.png')
# Resize the heatmap
heatmap = cv2.resize(heatmap, (img.shape[0], img.shape[1]))
# Convert dtype to uint8
heatmap = np.uint8(255 * heatmap)
# Overlay the heatmap on the image
heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_RAINBOW)
result = cv2.addWeighted(img, 0.6, heatmap, 0.4, 0)
可以使用matplotlib打印结果:

fig, ax = plt.subplots()
ax.imshow(result)
这是一个纯粹的matplotlib解决方案,而不是seaborn解决方案。seaborn主要提供matplotlib包装器,因此您应该能够从这里开始。对于完整的grad cam示例(以及此答案的源代码),您可以