参考博客


step1 将预测图片输入模型进行处理

img = image.load_img(img_path, target_size=(224,224))x = image.img_to_array(img) #  img对象转化为array对象 shape=(224,224,3)x = np.expand_dims(x,axis=0) # 升维,添加一个batch维x = preprocess_input(x) # 对图片使用均值和标准差进行归一化

step2 求模型输出关于最后一层卷积层激活输出的梯度

predict_output = model.output[:,386] # shape=(batch_size, 1000)last_conv_layer=model.get_layer(‘block5_conv3’) # .output.shape=(batch_size, 14, 14, 512) 512为通道数grads = K.gradients(predict_output, last_conv_layer.output)[0] # shape=(batch_size, 14, 14, 512) 第i个分类下的预测概率求最后一个卷积层中各通道的梯度pooled_grads = K.mean(grads, axis=(0,1,2)) # shape=(512,) 512个通道中每一个通道的平均梯度iterate = K.function([model.input],[pooled_grads, last_conv_layer.output[0]])pooled_grads_value, conv_layer_output_value = iterate([x]) # 建立三者的函数关系

step3 最后卷积层激活输出各点位对模型决策分类的重要程度,并进行预处理

# 类激活图,用于表示每一个点位对于模型最后的分类决策的重要程度for i in range(512):conv_layer_output_value[:, :, i] *= pooled_grads_value[i]heatmap = np.mean(conv_layer_output_value, axis=-1) # 沿着通道方向计算平均值heatmap = np.maximum(heatmap,0) # 去除负数heatmap /=max (heatmap) # 归一化处理plt.matshow(heatmap)

step4 生成热力图

heatmap_test = cv2.resize(heatmap, (test.shape[1], test_shape[0]))plt.imshow(heatmap_test)heatmap_test = np.uint8(255*heatmap_test) # 将heatmap数组转换为(0,255)之间的无符号的uint8数值heatmap_test = cv2.applyColorMap(heatmap_test, cv2.COLORMAP_JET) # 转换热力图为喷射效果superimposed_img_test = heatmap_test * 0.5 + test # 热力图与原始图像叠加,0.5是渲染强度

Reference:

Example:

Grad-CAM热力图相关推荐

  1. 【学习打卡03】可解释机器学习笔记之CAM类激活热力图

    可解释机器学习笔记之CAM类激活热力图 文章目录 可解释机器学习笔记之CAM类激活热力图 CAM介绍 CAM算法原理 GAP全局平均池化 GAP VS GMP CAM算法的缺点及改进 CAM可视化 同 ...

  2. CAM和GradCAM

    CAM来自Learning Deep Features for Discriminative Localization, CVPR2016: GradCAM来自Grad-CAM: Visual Exp ...

  3. [可解释机器学习]Task03:[算法]CAM

    CAM可解释性分析-算法讲解 CAM类激活热力图:深度学习可解释性分析.显著性分析经典之作 Learning Deep Features for Discriminative Localization ...

  4. 【学习打卡】CAM可解释性分析-算法讲解

    文章目录 引言 该算法能做什么 直观上 研究上 意义上 精妙之处 定位特点 弱监督学习特点 作者简介 CAM算法原理 具体计算方法 巧妙之处 讨论 全卷积神经网络 池化简介 池化的作用 全局平均池化 ...

  5. 深入浅出深度学习Pytroch

    本文将以通俗易懂的方式,深入浅出地为您揭开深度学习模型构建与训练的面纱: 深度学习 = 数据 d a t a + 模型 m o d e l + 损失函数 l o s s + 优化 o p t i m ...

  6. 论文阅读:Grad-CAM

    Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 神经网络输出可视化 文章目录 Grad ...

  7. 细粒度图像分类论文研读-2019

    文章目录 Cross-X Learning for Fine-Grained Visual Categorization(by end-to-end) Abstract Introduction Ap ...

  8. 图像分类:13个Kaggle项目的经验总结

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 方向:图像分类,编辑:数据派THU 本文约2800字,建议阅读9分钟 本 ...

  9. 使用关键点进行小目标检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 [导语]本文搞了一个小的库,主要是用于 ...

  10. 自动驾驶中可解释AI综述和未来研究方向

    作者丨黄浴@知乎 来源丨https://zhuanlan.zhihu.com/p/453146210 编辑丨3D视觉工坊 arXiv上2021年12月21日上传的自动驾驶可解释AI的综述:" ...

最新文章

  1. float向u8和s8的转换
  2. 在哪里查看计算机配置的网络协议簇,tcp/ip协议簇
  3. 在Spring MVC中使用Velocity
  4. element实现动态路由+面包屑
  5. 英语语法学习2--句子的成分
  6. java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释
  7. InfoQ中文站2015年度优秀社区编辑评选揭晓
  8. java里面add报错_java.util.Arrays$ArrayList addAll报错
  9. python scipy optimize_scipy.optimize.fminbound:设置参数的界限
  10. Git(1)-- Win10 安装 Git 详细教程(超详细纯小白教程)
  11. 【VRP】基于matlab改进的模拟退火和遗传算法求解车辆路径规划问题【含Matlab源码 343期】
  12. USB Server远程连接USB实现方式
  13. C语言全局变量的使用
  14. excel求方差和标准差的函数_excel标准差函数是什么?怎么计算?
  15. jenkins构建报错: ssh: connect to host github.com port 22: Connection timed out
  16. 固态硬盘linux提升,固态硬盘在Linux系统下提升使用率妙方
  17. AI绘图实战(一):制作购物车图标icon | Stable Diffusion成为设计师生产力工具
  18. 阿里身份实名认证实例
  19. python pyecharts 下载生成的render图片 下载背景为黑色
  20. 嵌入式应用层开发要学习什么

热门文章

  1. Strace 解决性能问题案例一则
  2. 广东“阳光检务网”昨正式启用
  3. java swing开发窗体程序开发(一)GUI编程
  4. GoAccess日志分析工具,适用于Nginx/Apache/IIS 等
  5. xboxone硬盘坏的表现_固态硬盘测速软件作用,不只是测速那么简单(另附下载链接)...
  6. c语言上机实验指导西南交通大学,操作系统原理与应用实验指导书-西南交通大学.doc...
  7. 浅谈新GRE考试题型差异
  8. Windows截图操作
  9. Canon 7D Mark II: Tips, Tricks, Techniques Canon 7D Mark II使用技巧 Lynda课程中文字幕
  10. Restful风格设计