0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习中类别激活热图可视化背后的思想

电子设计 来源:电子设计 作者:电子设计 2022-02-12 16:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:Valentina Alto
编译:ronghuaiyang

导读

使用Keras实现图像分类中的激活热图的可视化,帮助更有针对性的改进模型。

类别激活图(CAM)是一种用于计算机视觉分类任务的强大技术。它允许研究人员检查被分类的图像,并了解图像的哪些部分/像素对模型的最终输出有更大的贡献。

基本上,假设我们构建一个CNN,目标是将人的照片分类为“男人”和“女人”,然后我们给它提供一个新照片,它返回标签“男人”。有了CAM工具,我们就能看到图片的哪一部分最能激活“Man”类。如果我们想提高模型的准确性,必须了解需要修改哪些层,或者我们是否想用不同的方式预处理训练集图像,这将非常有用。

在本文中,我将向你展示这个过程背后的思想。为了达到这个目的,我会使用一个在ImageNet上预训练好的CNN, Resnet50。

我在这个实验中要用到的图像是,这只金毛猎犬:

首先,让我们在这张图上尝试一下我们预训练模型,让它返回三个最有可能的类别:

from keras.applications.resnet50 import ResNet50 from keras.preprocessing import image from keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as npmodel = ResNet50(weights='imagenet')img_path = 'golden.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)preds = model.predict(x) # decode the results into a list of tuples (class, description, probability) print('Predicted:', decode_predictions(preds, top=3)[0])

pIYBAGAIcnmAW7XHAACQM7Rb8AQ223.png

如你所见,第一个结果恰好返回了我们正在寻找的类别:Golden retriver。

现在我们的目标是识别出我们的照片中最能激活黄金标签的部分。为此,我们将使用一种称为“梯度加权类别激活映射(Grad-CAM)”的技术(官方论文:https://arxiv.org/abs/1610.02391)。

这个想法是这样的:想象我们有一个训练好的CNN,我们给它提供一个新的图像。它将为该图像返回一个类。然后,如果我们取最后一个卷积层的输出特征图,并根据输出类别对每个通道的梯度对每个通道加权,我们就得到了一个热图,它表明了输入图像中哪些部分对该类别激活程度最大。

让我们看看使用Keras的实现。首先,让我们检查一下我们预先训练过的ResNet50的结构,以确定我们想要检查哪个层。由于网络结构很长,我将在这里只显示最后的block:

from keras.utils import plot_model plot_model(model)

o4YBAGAIcr2AB_55AAFPjDgG7Bk409.png

让我们使用最后一个激活层activation_49来提取我们的feature map。

golden = model.output[:, np.argmax(preds[0])] last_conv_layer = model.get_layer('activation_49') from keras import backend as K grads = K.gradients(golden, last_conv_layer.output)[0] pooled_grads = K.mean(grads, axis=(0, 1, 2)) iterate = K.function([model.input], [pooled_grads, last_conv_layer.output[0]]) pooled_grads_value, conv_layer_output_value = iterate([x]) for i in range(pooled_grads.shape[0]): conv_layer_output_value[:, :, i] *= pooled_grads_value[i] heatmap = np.mean(conv_layer_output_value, axis=-1) import matplotlib.pyplot as plt heatmap = np.maximum(heatmap, 0) heatmap /= np.max(heatmap) plt.matshow(heatmap)

这个热图上看不出什么东西出来。因此,我们将该热图与输入图像合并如下:

import cv2 img = cv2.imread(img_path) heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0])) heatmap = np.uint8(255 * heatmap) heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET) merged= heatmap * 0.4 + imgplt.imshow(merged)

如你所见,图像的某些部分(如鼻子部分)特别的指示出了输入图像的类别。

英文原文:https://valentinaalto.medium.com/class-activation-maps-in-deep-learning-14101e2ec7e1
本文转自:AI公园,作者:Valentina Alto,编译:ronghuaiyang,
转载此文目的在于传递更多信息,版权归原作者所有。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 深度学习
    +关注

    关注

    73

    文章

    5613

    浏览量

    124723
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    高质量可视化大屏应该这样设计

    在数据驱动决策的当下,可视化大屏已成为企业数据呈现、业务监控的核心载体,扑软件基于自研 HT for Web 前端可视化引擎,打造无需依赖第三方插件、纯 Web 端部署的 2D3D 图形渲染内核
    的头像 发表于 04-23 14:22 172次阅读
    高质量<b class='flag-5'>可视化</b>大屏应该这样设计

    3D系统可视化

    本身的深入描述和F-Theta透镜的应用示例。 光学系统的3D-可视化 VirtualLab Fusion提供的工具可以实现光学系统的3D可视化,因此可以用于检查元件的位置,以及快速了解系统内部的光
    发表于 03-30 09:25

    森林消防智慧预警技术实现:火灾监测 Web GIS 可视化平台搭建

    本文基于扑软件(Hightopo)自研的 HT 前端插件,从技术实现与功能落地角度,解析森林消防火灾监测 Web GIS 可视化平台的搭建逻辑、核心技术应用及功能模块实现流程,该平台依托
    的头像 发表于 03-19 11:31 261次阅读
    森林消防智慧预警技术实现:火灾监测 Web GIS <b class='flag-5'>可视化</b>平台搭建

    KubePi:开源Kubernetes可视化管理面板,让集群管理如此简单

    、总结:为什么选择KubePi? 在Kubernetes可视化管理工具的选择,KubePi凭借其以下突出优点脱颖而出: 简单易用 :直观的界面设计显著降低了学习成本,即使是对Kubernetes不太熟悉
    发表于 02-11 12:53

    基于扑 HT 数字孪生 3D 风电场可视化系统实现解析

    在 “双碳” 目标与产业数字升级的双重驱动下,风力发电作为可再生能源的核心组成部分,其智能管控需求持续攀升。扑(Hightopo)基于自主研发的 HT for Web 前端可视化
    的头像 发表于 01-09 15:35 647次阅读
    基于<b class='flag-5'>图</b>扑 HT 数字孪生 3D 风电场<b class='flag-5'>可视化</b>系统实现解析

    工业数字孪生:可视化技术架构与行业应用解析

    在工业互联网向深度智能演进的进程,数字孪生技术成为连接物理工业系统与虚拟信息空间的核心桥梁,而可视化则是实现数字孪生价值落地的关键载体。
    的头像 发表于 12-11 16:49 796次阅读
    工业数字孪生:<b class='flag-5'>图</b>扑<b class='flag-5'>可视化</b>技术架构与行业应用解析

    基于 HT 技术的园区元宇宙可视化管理平台

    在数字转型浪潮下,园区管理对智能可视化的需求日益迫切。本文基于 HT(Hightopo)技术栈,不依赖任何第三方插件,从技术开发视角,详细阐述园区元宇宙智慧综合治理可视化管理平台
    的头像 发表于 11-07 14:54 673次阅读
    基于 HT 技术的园区元宇宙<b class='flag-5'>可视化</b>管理平台

    扑 HT 驱动智慧社区数字转型:多维可视化与系统集成实践

    在社区管理向数字、智能升级的浪潮扑软件(Hightopo)依托自主研发的HT for Web 前端可视化技术,构建起覆盖社区全场景
    的头像 发表于 10-31 14:44 671次阅读
    <b class='flag-5'>图</b>扑 HT 驱动智慧社区数字<b class='flag-5'>化</b>转型:多维<b class='flag-5'>可视化</b>与系统集成实践

    工业可视化平台是什么

    工业可视化平台是一种基于信息技术和可视化技术,将工业生产过程的数据、信息、流程等以直观、动态的图形方式呈现,并实现交互式管理与分析的数字化工具。它通过整合工业物联网(IIoT)、大
    的头像 发表于 10-24 18:00 1303次阅读

    光伏电站可视化的实现

    实现光伏电站可视化,核心是在于通过直观的视觉界面,解决传统运维中低效巡检、数据孤岛、被动响应等痛点,从而提升运营效率并提供决策支持。这是一种有效的技术手段,通过数字孪生、三维建模、数据融合等技术
    的头像 发表于 10-21 17:29 1422次阅读
    光伏电站<b class='flag-5'>可视化</b>的实现

    数字孪生可视化系统构建行业数字智能管理生态!

    数字孪生可视化系统具备丰富的模型组件,包括二维平面组件及3D模型组件,可根据用户需求进行定制。数字孪生可视化系统在行业数字升级、数字管理中有着重要的意义,充分利用大数据技术和信息技
    的头像 发表于 09-19 11:45 938次阅读
    数字孪生<b class='flag-5'>可视化</b>系统构建行业数字<b class='flag-5'>化</b>智能管理生态!

    一文读懂 | 晶圆Wafer Maps:半导体数据可视化的核心工具

    在精密复杂的半导体制造领域,海量数据的有效解读是提升产能、优化良率的关键。数据可视化技术通过直观呈现信息,帮助工程师快速识别问题、分析规律,而晶圆正是这一领域中最具影响力的可视化工具——它将芯片
    的头像 发表于 08-19 13:47 3558次阅读
    一文读懂 | 晶圆<b class='flag-5'>图</b>Wafer Maps:半导体数据<b class='flag-5'>可视化</b>的核心工具

    3Dfindit 提供的数字立方体模型为研究项目的可视化提供了支持

    魔方的帮助下实现多视角可视化 为了克服这一挑战并实现多视角可视化,我们使用了3Dfindit立方体动画模型。博物馆和学生们可以利用 3D 模型提出新的历史教学问题。
    发表于 08-01 14:36

    如何使用协议分析仪进行数据分析与可视化

    分析与可视化需结合工具功能与业务场景: 快速诊断:依赖内置统计和IO Graph。 深度分析:导出数据至Python/R进行统计建模。 长期监控:集成至SIEM/APM系统实现自动。 通过合理选择工具链(如
    发表于 07-16 14:16

    工业设备可视化管理系统是什么

    工业设备可视化管理系统是一种基于物联网(IoT)、大数据、云计算、数字孪生等技术,对工业设备的运行状态、性能参数、维护信息等进行实时监测、数据整合与可视化呈现的智能管理平台。它通过将复杂的设备数据
    的头像 发表于 05-27 14:56 1389次阅读
    工业设备<b class='flag-5'>可视化</b>管理系统是什么