深度学习模型的可视化1
一、可视化特征层
我是直接加在网络中的代码段,对特征层直接取出来,进行可视化。
二、使用步骤
1.引入库
基本上是这几个库:
import matplotlib.pyplot as plt
import numpy as np
import cv2
2.加入在特征层之后
代码如下:
#取出当前的feat
res = []
feature_map = feat.squeeze(0)
feature_map = feature_map.cpu().numpy()
feature_map_num = feature_map.shape[0]
# row_num = np.ceil(np.sqrt(feature_map_num))
row_num = 3
plt.figure() #可以按照每排每列输出
for index in range(1, 10): # 10 取决于特征层的通道数,为row_num的平方加1
# plt.subplot(row_num, row_num, index)
res.append(feature_map[index - 1])
plt.imshow(feature_map[index - 1], cmap='gray')
plt.axis('off') #是否展示尺寸
plt.savefig(str(index) + "feat"+".png")
cv2.imwrite(str(index) + ".png",feature_map[index - 1])
plt.show()
# 整体叠加的图
map_sum = sum(ele for ele in res)
plt.imshow(map_sum)
plt.savefig("sum_map.png")
实际效果:
三.CAM通道注意力热图
对图片进行通道注意力热图的可视化
1.相关知识
2.实际操作
可以接续第一小节直接写
heatmap = np.maximum(res, 0) #res存储了所有通道的特征图
heatmap = np.mean(heatmap, axis=0)
heatmap /= np.max(heatmap)
img = cv2.imread('test.jpg') #添加图片
heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0]))
heatmap = np.uint8(255 * heatmap)
heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)
heat_img = cv2.addWeighted(img, 1, heatmap, 0.5, 0)
cv2.imwrite('out.jpg', heat_img) #输出图片