Keras可视化类激活热力图_keras 可视化热力图-程序员宅基地

技术标签: 深度学习  AI  Keras  

#page142#########类激活图(CAM,class activation map)可视化。
from keras.applications.vgg16 import VGG16
model=VGG16(weights='imagenet')#这次网络中没有舍弃密集连结分类
#对应vgg16_weights_tf_dim_ordering_tf_kernels.h5
#加载图像使得大小调整为224*224#带分类器识别出是哪个物体
from keras.preprocessing import image
from keras import backend as K
from keras.applications.vgg16 import preprocess_input,decode_predictions
import numpy as np
img_path = './data/creative_commons_elephant.jpg'
img=image.load_img(img_path,target_size=(224,224))
x=image.img_to_array(img)
x=np.expand_dims(x,axis=0)#增加一个维度(1,224,224,3)
#卷积神经网络都是4维的
x=preprocess_input(x)#对批量进行预处理,按通道进行颜色标准化
preds=model.predict(x)
print('预测结果:',decode_predictions(preds,top=3)[0])
#C:\Users\Administrator\.keras\models\imagenet_class_index.json
 #[('n02504458', 'African_elephant', 0.9101744),
 #('n01871265', 'tusker', 0.08544522), 
 #('n02504013', 'Indian_elephant', 0.0043368954)]
print('索引编号:',np.argmax(preds[0]))#386
#######为了展示图像中那些部分是非洲象我们使用Grad_Cam算法#######
african_elephant_output=model.output[:386]#预测向量中的非洲象元素
last_conv_layer=model.get_layer('block5_conv3')
#得到指定层的输出特征图,这是Vgg16最后一个卷积层
grads=K.gradients(african_elephant_output,last_conv_layer.output)[0]
#得到非洲象在block5_conv3输出特征图的梯度
pooled_grads=K.mean(grads,axis=(0,1,2))
#(512,)的向量,每个元素是特征图通道的梯度平均大小
print('合并梯度形状:',pooled_grads.shape)
iterate=K.function([model.input],[pooled_grads,last_conv_layer.output[0]])
#访问pooled_grads:对于给定的样本图像,pooled_grads和block5_conv3层的输出特征图
pooled_grads_value,conv_layer_output_value=iterate([x])
for i in range(512):
    conv_layer_output_value[:,:,i]*=pooled_grads_value[i]
    #将特征图数组中的每个通道*这个通道对“大象”类别的重要程度。
heatmap=np.mean(conv_layer_output_value,axis=-1)
#得到特征图的逐个通道平均值即类激活热力图
######为了可视化,将热力图标准化到0-1范围内##############################
heatmap=np.maximum(heatmap,0)
heatmap/=np.max(heatmap)
###########用openCv来生成一张图片,然后将原始图像叠加在刚刚生成的热力图上########
import cv2
img=cv2.imread(img_path)#加载原始图像
heatma=cv2.resize(heatmap,(img.shape[1],img.shape[0]))
#将热力图调整为与原始图像一样大小
heatmap=np.uint8(255*heatma)#将热力图改为rgb格式
heatmap=cv2.applyColorMap(heatmap,cv2.COLORMAP_JET)#将热力图应用于原始图像
superimposed_img=heatmap*0.4+img#0.4是热力图的强度因子
#cv2.imwrite('./data/大象_cam.jpg',superimposed_img) #不支持中文,可以写入但是文件名乱码
###############################################################################################################
#newimg = cv2.imdecode(np.fromfile("'./data/大象_cam.jpg'",dtype=np.uint8),cv2.IMREAD_UNCHANGED)#中文读取
img_write = cv2.imencode(".jpg",superimposed_img)[1].tofile('./data/大象_cam.jpg')#中文写入

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq576826394/article/details/90298003

智能推荐

可狱可囚的爬虫系列课程 07:BeautifulSoup4(bs4)库的使用_beautifulsoup4库 获取br-程序员宅基地

文章浏览阅读1.5k次,点赞21次,收藏18次。BeautifulSoup4 属于 BeautifulSoup 系列的第四代版本,BeautifulSoup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库,这个库能够实现树文档的导航、查找,从而帮助我们提取到网页中所需要的数据。。如果忘记了在哪里安装,请回看 Requests 模块第一篇文章。安装好以后,我们围绕数据提取这个话题对 BeautifulSoup4 进行剖析。"""# 问题一:使用标签选择器获取源代码中所有的 p 标签。_beautifulsoup4库 获取br

rpm包及作用_cannot install both libpng-2:1.5.13-8.el7.x86_64 a-程序员宅基地

文章浏览阅读1.9k次。基于Red Hat Enterprise Linux Server release 7.4 (Maipo)最小化安装将会慢慢补齐每个包的作用:1 bash-completion-2.1-6.el7.noarch https://cbs.centos.org/koji/rpminfo?rpmID=4260 2 grubby-8.28-23.el7.x86_64 ..._cannot install both libpng-2:1.5.13-8.el7.x86_64 and libpng-2:1.6.37-1.ky10.

vxworks的RTP学习_vxworks rtp-程序员宅基地

文章浏览阅读2.1k次。这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma..._vxworks rtp

用户层与驱动通信-程序员宅基地

文章浏览阅读185次。以进行加法和减法为例,用户层将要进行的操作码和参数,返回缓冲发给驱动,驱动进行处理并将结果写到返回缓冲中driver.c//_stdcall#include<ntddk.h>#include<ntstrsafe.h>#pragma code_seg("INT")#define SynLinkName L"\\??\\freesec_tx..._pirpstack->majorfunction

Android Framework 分析-程序员宅基地

文章浏览阅读91次。http://raymond1860.spaces.live.com/Blog/cns!BF47B6FD104579C9!797.entry1.目录树/framework/base/api/framework/base/awt/framework/base/build/framework/base/camera关 于camera的HAL接口库。最终生成native共享库l..._android framework cmds 开发

springboot+mysql互联网互联网美食分享平台源码53102-程序员宅基地

文章浏览阅读82次。免费领取项目源码,请关注●点赞收藏并私信博主,谢谢-、互联网美食分享平台采用Java技术,Mysql数据库存储数据,基于Springboot框架开发。系统采用了模块化设计方法,根据用户的需求开发功能模块,方便了程序扩展维护,以便后期的更新。整个开发过程首先对系统进行需求分析,得出系统主要功能模块。接着对系统进行总体设计和详细设计。最后对系统进行了功能测试,并对测试结果进行了分析总结,得出系统的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为以后开发类似系统提供了借鉴和帮助。

随便推点

E - Mafia CodeForces - 348A 【二分】_348a二分-程序员宅基地

文章浏览阅读317次。E - Mafia CodeForces - 348A 【二分】One day n friends gathered together to play “Mafia”. During each round of the game some player must be the supervisor and other n - 1 people take part in the game. Fo..._348a二分

四元数和旋转矩阵_四元数 旋转矩阵-程序员宅基地

文章浏览阅读1.6w次。四元数和旋转矩阵Quaternion(四元数)Quaternion 的定义四元数一般定义如下: q=w+xi+yj+zk其中 w,x,y,z是实数。同时,有: i*i=-1 j*j=-1 k*k=-1四元数也可以表示为: q=[w,v]其中v=(x,y,z)是矢量,w是标量,虽然v是矢量,但不能简_四元数 旋转矩阵

WebComponents.exe未安装的解决办法-程序员宅基地

文章浏览阅读5.8w次,点赞6次,收藏3次。很多人在使用海康威视的开发包的时候,都会遇到下面几个问题在安装WebComponents.exe之后 浏览器在运行的时候提示WebComponents.exe为安装 或者是WebComponents.exe不是最新版本开发包提供的版本如下,浏览器自动安装的版本为3.0.5.34这2个版本都是是可以使用的 ,而且不需要更新那么问题就在浏览器了_webcomponents.exe

集成测试与系统测试_集成测试是系统测试吗-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏42次。 集成测试与系统测试_集成测试是系统测试吗

Jenkins中文官网地址_jenkins官网-程序员宅基地

文章浏览阅读792次,点赞9次,收藏8次。Jenkins 是一个开源自动化服务器。Jenkins 用户手册。_jenkins官网

nginx 网页匹配跳转(rewrite、location)_nginx location直接指向某个网页-程序员宅基地

文章浏览阅读1.7k次,点赞29次,收藏23次。location,rewrite基于:域名、客户端ip、旧域名、参数匹配,跳转_nginx location直接指向某个网页

推荐文章

热门文章

相关标签