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

    文章

    5502

    浏览量

    121124
收藏 人收藏

    评论

    相关推荐

    什么是大屏数据可视化?特点有哪些?

    大屏数据可视化是指通过大屏幕展示大量数据和信息,以直观、可视化的方式帮助用户理解和分析数据。这种展示方式通常用于展示复杂的数据集、实时监控系统、企业管理仪表盘等。以下是关于 大屏数据可视化 的详细
    的头像 发表于 12-16 16:59 157次阅读

    如何找到适合的大屏数据可视化系统

    选择合适的大屏数据可视化系统是企业或组织在数字转型过程至关重要的一步。一个优秀的大屏数据可视化系统能够实时呈现关键业务数据,提升决策效率,同时提供直观、易于理解的视觉呈现,助力企业
    的头像 发表于 12-13 15:47 116次阅读

    Minitab 数据可视化技巧

    在数据分析领域,数据可视化是一种将数据以图形或图像的形式展示出来的技术,它可以帮助我们更直观地理解数据,发现数据的模式、趋势和异常。Minitab作为一款专业的统计分析软件,提供了多种数据可视化
    的头像 发表于 12-02 15:40 289次阅读

    智慧能源可视化监管平台——助力可视化能源数据管理

    博达可视化大屏设计平台在智慧能源领域的价值体现在实时监控、数据可视化、决策支持和效率提升等方面。借助该平台,企业可以轻松搭建智慧能源类可视化大屏,更加精确和高效地管理生产和生活,实现能源的可持续发展。
    的头像 发表于 11-29 10:00 282次阅读
    智慧能源<b class='flag-5'>可视化</b>监管平台——助力<b class='flag-5'>可视化</b>能源数据管理

    智慧楼宇可视化的优点

    智慧楼宇可视化是指通过数据可视化技术来展示和分析楼宇的各种数据,为楼宇管理者和用户提供直观、清晰的信息展示和决策支持。以下是智慧楼宇可视化的优点,详细介绍其在楼宇管理和运营的重要作用
    的头像 发表于 11-19 14:25 180次阅读

    如何实现园区大屏可视化

    孪生可视化 构建平台利用Web三维可视化技术对现实场景进行仿真,实现园区级业务场景 的可视化呈现,助力企业快速完成项目的实施。实现园区场景立体可先,极致可视。那么,今天古河云科技就来给
    的头像 发表于 06-19 15:39 417次阅读
    如何实现园区大屏<b class='flag-5'>可视化</b>?

    态势数据可视化技术有哪些

    的一些主要类型及特点: 智慧华盛恒辉网络安全态势指标可视化分析系统: 基于地理信息系统、网络拓扑、攻击路径等的安全态势可视化分析系统方法。 通过可视化技术将安全态势数据以多视图、多角
    的头像 发表于 06-11 15:47 371次阅读

    大屏数据可视化的作用和意义

    大屏数据可视化是指利用大屏幕设备展示数据信息,通过图表、图像、动画等视觉手段将数据呈现出来,以便用户能够直观、清晰地理解数据背后的含义和关联。在信息化时代,数据已经成为企业决策和运营的重要依托,而
    的头像 发表于 06-03 17:56 664次阅读

    大屏数据可视化是什么?运用了什么技术

    解数据、发现规律和趋势,从而支持决策制定和问题解决。 在大屏数据可视化,常用的技术包括: 数据采集与处理: 数据从各种来源(数据库、传感器、API等)采集后,经过清洗、转换、处理等步骤,以符合可视化需求的格式呈现。 可
    的头像 发表于 05-24 15:35 848次阅读

    请问freertos可视化调试打印任务信息是不是只可以打印一次?

    在freertos,使用可视化调试打印任务消息,但是打印不全,还只能打印一次,使用IAR自带的调试插件看,显示可视化调试任务的堆栈顶全是a,这事怎么回事?
    发表于 05-07 06:16

    数据可视化:企业数字建设效果的呈现

    数据可视化即通过图表的形式将数据的内在信息有逻辑性地呈现给用户,使用户更容易发现数据蕴藏的规律,找出问题,进而做出决策;另一方面,数据可视化项目也是一张重要的名片,是企业数字建设效
    的头像 发表于 04-29 10:18 462次阅读
    数据<b class='flag-5'>可视化</b>:企业数字<b class='flag-5'>化</b>建设效果的呈现

    深入探讨机器学习可视化技术

    机器学习可视化(简称ML可视化)一般是指通过图形或交互方式表示机器学习模型、数据及其关系的过程。目标是使理解模型的复杂算法和数据模式更容易,使技术和非技术利益相关者更容易理解它。
    发表于 04-25 11:17 410次阅读
    深入探讨机器<b class='flag-5'>学习</b>的<b class='flag-5'>可视化</b>技术

    FUXA基于Web的过程可视化软件案例

    FUXA——基于Web的过程可视化软件
    发表于 04-24 18:32 2次下载

    态势数据可视化技术有哪些

    确,计算方法不实用,可视化效果不直观等技术问题,设计并实现了基于地理信息系统,网络拓扑,攻击路径等的安全态势可视化分析系统方法, 通过可视化技术将安全态势数据以多视图,多角度,多层次
    的头像 发表于 04-22 15:17 402次阅读

    可视化全程追溯,可视化资产管理系统

    摘要:本文将从应用价值、系统功能、资产盘点、资产出入库、资产定位以及系统实现能效等几个方面,阐述新导物联可视化资产管理系统为企业提供的优势,以提升资产管理的效率和准确度。 一、应用价值 可视化资产
    的头像 发表于 01-11 13:54 496次阅读
    <b class='flag-5'>可视化</b>全程追溯,<b class='flag-5'>可视化</b>资产管理系统