[PyTorch]即插即用的热力图生成

news2025/7/14 11:11:23

        先上张效果图,本来打算移植霹雳老师的使用Pytorch实现Grad-CAM并绘制热力图。但是看了下代码,需要骨干网络按照标准写法(即将特征层封装为features数组),而我写的网络图省事并没有进行封装,改造网络的代价又太大了,所以干脆直接重写一个。

一、生成热力图

        大致可以分为三步:①读取图片;②前向传递运算;③用特征向量生成特征图。而图片的resize图简单可以直接用transforms,后面反正也是直接resize回来的,并不会造成变形。

# 加载一个transforms用于变形,input_shape为预设的图像尺寸
transform = transforms.Compose([transforms.Resize((input_shape[0],input_shape[1])),
                                    transforms.ToTensor(),
                                    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),])
image = Image.open(image_path)     #image_path为文件路径
input_tensor = transform(image)    #将图片转换为tensor类型
input_batch = input_tensor.unsqueeze(0)    #为tensor添加batch维度

# 前向传递
model.eval()
with torch.no_grad():
    output = model(input_batch)

        使用特征图生成热力图的原理是:将该维度上所有的tensor进行叠加,然后将生成的矩阵变形回输入向量的尺寸

heatmap = torch.sum(output, dim=1)    #所有通道求和
max_value = torch.max(heatmap)
min_value = torch.min(heatmap)
heatmap = (heatmap-min_value)/(max_value-min_value)*255

heatmap = heatmap.cpu().numpy().astype(np.uint8).transpose(1,2,0)  # 提取热力图

heatmap = cv2.resize(heatmap, input_shape,interpolation=cv2.INTER_LINEAR)  # 还原尺寸

# 将矩阵转换为image类
heatmap=cv2.applyColorMap(heatmap,cv2.COLORMAP_JET)
heatimg = Image.fromarray(heatmap)

二、叠加原图

        直接使用plt进行叠加!

    # 将热力图叠加到原图上
    org_size = image.size
    heatimg = heatimg.resize(org_size)    #将热力图变回输入图像的尺寸
    plt.axis('off')
    plt.imshow(image)
    plt.imshow(heatimg, alpha=0.5)  # alpha为热力图的透明度

    # 显示叠加后的图形
    plt.show()

三、总结

        这段代码和霹雳老师的Grad-CAM对比优劣都很明显,优点是代码比较简单。上可以通过插入前向传递的环境直接得到任何层的热力图。但缺点就是不能关注特定的类别,且生成的热力图也不是很美观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1103017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据Flink(九十八):SQL函数的归类和引用方式

文章目录 SQL函数的归类和引用方式 一、SQL 函数的归类

算法、推理、部署,面了40多个大佬的感想

今年三月份到现在陆陆续续面了40来个人,有实习生,有校招生,也有来社招的大佬们。面了挺久,有些总结和感想,发出来和大家交流交流,也趁着这个机会为之后参与校招的同学提供一些学习方向。 我面的岗位主要是…

【STL】平衡二叉树

前言 对于之前普通的二叉搜索树,其搜索的效率依靠树的形状来决定,如下: 可以看到 A图 中的树比较彭亨,搜索一个元素的效率接近 O(logN) ;而 B图 中的形状也符合搜索二叉树,但是很不平衡,这时的…

SamSung三星笔记本NP930QCG-K02CN原装出厂OEM预装Win10系统

下载链接:https://pan.baidu.com/s/13GsR_r9caJkLjiWWaXa30Q?pwdncp9 系统自带指纹驱动、声卡,网卡,显卡等所有驱动、三星出厂时主题壁纸、系统属性三星专属LOGO标志、Office办公软件等三星出厂时自带的预装程序 由于时间关系,绝大部分资料没有上传,不…

SpringCloud: sentinel热点参数限制

一、定义controller package cn.edu.tju.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockException; import org.springframework.web.bind.annotation.PathVariable; import org.springframewo…

出详图和工程图(上)-SOLIDWORKS 2024新功能

保持尺寸链共线 即使空间有限,您也可以确保尺寸链保持共线。 当尺寸文本和箭头重叠时,您可以选择最合适的选项。 要在尺寸文本重叠时保持尺寸链共线: 1. 单击工具 > 选项 > 文档属性 > 尺寸 > 线性 > 尺寸链。 2. 在共线选…

Nginx的安装——window环境

1、下载Nginx 在官网下载稳定版本: http://nginx.org/en/download.html 以nginx/Windows-1.24.0为例,直接下载 nginx-1.24.0.zip。 下载后解压,解压后如下: 2、启动nginx 在window环境下启动nginx的方法有以下两种: …

Hadoop3教程(二十):MapReduce的工作机制总结

文章目录 (109)MapTask工作机制(110)ReduceTask工作机制&并行度ReduceTask工作机制MapTask和ReduceTask的并行度决定机制 (122)MapReduce开发总结参考文献 (109)MapTask工作机制…

数据存储工程解决

在构建大规模爬虫系统时,数据存储是一个至关重要的环节。面对大量数据的处理和存储,我们需要采取一些工程化的解决方案,以确保数据的有效管理和快速检索。在本文中,我将与大家分享一些关于大规模爬虫数据存储的解决方案&#xff0…

Linux中的主要系统调用

Linux 操作系统中就是创建进程。创建进程的系统调用叫fork。在 Linux 里,要创建一个新的进程,需要一个老的进程调用 fork 来实现,其中老的进程叫作父进程(Parent Process),新的进程叫作子进程(C…

【刷题篇】回溯算法(广度优先搜索(一))

文章目录 N 叉树的层序遍历腐烂的橘子单词接龙打开转盘锁 N 叉树的层序遍历 给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参…

AADL 端到端流延迟分析示例项目 Latency-case-study 简述

一、项目概述 latency-case-study 项目是一个增量延迟分析系统。该系统从系统的总体框架开始,逐步迭代增进,最终建立起系统的模型并实现对模型的分析。(个人觉得这个过程有一些类似于“自顶向下,逐步求精”的过程) 示…

它来了,xhadmin多应用Saas框架正式发布!

这是一个很激动人心的时刻,因为这个框架从立项到现在已经一年多的时间了,先给大家欣赏下颜值吧。 上图所示是总后台的首页截图,看上去还是比较满意的,不过后续还有一些小小的调整。 应用市场的效果也是相当炸裂的,整体…

Windows10找不到msvcr100.dll如何修复呢?详细有效的修复方法分享

在使用Windows10操作系统的过程中,我们经常会遇到各种各样的技术问题。其中,一些常见的问题是关于系统文件丢失或损坏,如“找不到msvcr100.dll”的错误。这个问题在Windows 10系统中尤其常见,msvcr100.dll是一个动态链接库文件&am…

用友NC-Cloud uploadChunk 任意文件上传漏洞

一、漏洞描述 用友 NC Cloud,大型企业数字化平台, 聚焦数字化管理、数字化经营、数字化商业,帮助大型企业实现 人、财、物、客的全面数字化,从而驱动业务创新与管理变革,与企业管理者一起重新定义未来的高度。为客户提…

收集灵感都有哪些网站推荐?

设计是一件非常令人兴奋的事情。特别是最常见的平面设计,作为一种传达想法或信息的视觉表达形式,被要求不仅突出个性和主题,而且具有创造力和美感,使许多设计师在灵感枯竭时疯狂。此时,浏览一些平面设计网站&#xff0…

YOLOv8涨点技巧:手把手教程,注意力机制如何在不同数据集上实现涨点的工作,内涵多种网络改进方法

💡💡💡本文独家改进:手把手教程,解决注意力机制引入到YOLOv8在自己数据集不涨点的问题点,本文提供五种改进方法来解决此问题; ContextAggregation | 亲测在血细胞检测项目中涨点,…

C/C++文件操作(细节满满,part2)

该文章上一篇:C/C文件操作(细节满满,part1)_仍有未知等待探索的博客-CSDN博客 个人主页:仍有未知等待探索_C语言疑难,数据结构,小项目-CSDN博客 专题分栏:C语言疑难_仍有未知等待探索的博客-CSDN博客 目录 …

AGI 黑客松收官,Zilliz 向量数据库助力34支参赛队伍角逐大模型时代的Killer App

紧张的 72 小时、34 组 AGI 前沿玩家、天马行空的创意、一场酣畅淋漓的黑客松比赛! 近期,由 Zilliz、Founder Park、智谱 AI 联合主办的 AGI Playground Hackathon 在北京圆满落幕。作为此次大赛的主办方之一,Zilliz 为选手提供了开箱即用的向…

Tuxera NTFS2024Mac电脑磁盘读写工具

NTFS是一种广泛用于Windows系统的文件系统,但是如果你想在Mac系统中读写NTFS格式的硬盘或U盘,你会发现Mac系统并不支持NTFS读写。这时,NTFS for Mac就变得非常有用了。本文将介绍NTFS for Mac有什么用,NTFS for Mac怎么用。 一、…