卷积可视化:特征图的可视化

import keras
import matplotlib.pyplot as plt
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np

import numpy as np
import tensorflow as tf

model = VGG16(weights='imagenet', include_top=False)

img_path = 'elephants.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

features = model.predict(x)

features = np.mean(features, -1, keepdims=False)[0]

import cv2

features = cv2.resize(features, (224, 224), interpolation=cv2.INTER_LINEAR)

features /= np.max(features)

norm_img = np.zeros(features.shape)
# cv2.normalize(features, norm_img, 0, 255, cv2.NORM_MINMAX)
norm_img = np.asarray(features * 255, dtype=np.uint8)

heat_img = cv2.applyColorMap(norm_img, cv2.COLORMAP_JET) # 注意此处的三通道热力图是cv2专有的GBR排列
# heat_img = cv2.cvtColor(heat_img, cv2.COLOR_BGR2RGB)# 将BGR图像转为RGB图像

origin = cv2.resize(cv2.imread(img_path), (224, 224))

img_add = cv2.addWeighted(origin, 0.3, heat_img, 0.7, 0)

img = cv2.cvtColor(img_add, cv2.COLOR_BGR2RGB)

plt.figure("Image") # 图像窗口名称
plt.imshow(img)
plt.axis('on') # 关掉坐标轴为 off
plt.title('image') # 图像题目
plt.show()

在这里插入图片描述
在这里插入图片描述


版权声明:本文为DaVinciL原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。