当前位置: 首页 > news >正文

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

        先上张效果图,本来打算移植霹雳老师的使用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)*255heatmap = 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.sizeheatimg = heatimg.resize(org_size)    #将热力图变回输入图像的尺寸plt.axis('off')plt.imshow(image)plt.imshow(heatimg, alpha=0.5)  # alpha为热力图的透明度# 显示叠加后的图形plt.show()

三、总结

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

相关文章:

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

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

golang笔记18--go并发多线程

golang笔记18--go并发多线程 介绍核心用法MutexRWMutexWaitGroupCondOncemapPoolContextselect 注意事项参考文档 介绍 大家都知道go语言近年来越来越火了,其中有一个要点是go语言在并发场景有很高的性能,比如可以通过启动很多个 goroutine 来执行并发任…...

使用OkHttp和Java来下载

以下是一个使用OkHttp和Java来下载内容的下载器程序,同时使用了jshk.com.cn/get_proxy来获取代理服务器。请注意,为了简化代码,我们将忽略一些异常处理和安全性检查。 import java.io.File;import java.io.FileOutputStream;import java.io.I…...

HttpServlet源码分析及HttpServletRequest接口

2023.10.20 HttpServlet HttpServlet类是专门为HTTP协议准备的。比GenericServlet更加适合HTTP协议下的开发。 http包下都有哪些类和接口呢?(jakarta.servlet.http.*) jakarta.servlet.http.HttpServlet (HTTP协议专用的Servlet…...

CENTOS 7基于ISO文件进行安装新软件

众所周知,YUM是CENTOS7的安装程序。 普通情况下,连网之后 ,用yum install 就可以安装。 但当网络环境经常出现连接失败的情况,默认情况下的行为就走不通了。 为解决这个问题,可以考虑如下三个方案 方案一:Y…...

模拟器-雷电-使用adb push或adb pull操作文件

一、环境 windows 10 雷电模拟器4.0.83 二、问题 有时候我们会需要往模拟器拷贝文件或者复制文件到我的电脑 三、方法 1、获取root权限 adb root adb remount 有可能遇到【daemon not running; starting now at tcp:5037】的报错 查看端口占用进程:netstat -…...

【前端设计模式】之命令模式

引言 命令设计模式是一种行为型设计模式,它允许你将命令封装到一个对象中,从而使你可以参数化不同的请求,以及存储、排队、重播和撤销请求。这种设计模式在处理用户界面操作、远程网络请求或其他需要异步执行的操作时非常有用。在前端开发中…...

用c++写一个高精度计算的乘法运算

这段代码是一个用C编写的程序&#xff0c;它实现了两个大整数的乘法运算。 #include<iostream> #include<cstdio> #include<cstring> using namespace std;int main(){char a1[101]"222",b1[101]"2";int a[101],b[101],c[10001],lena,l…...

UE5 ChaosVehicles载具 实现大漂移 (连载四)

载具设置成前驱模式 前轮摩擦力倍增x5 后轮摩擦力倍增x0.5...

基于Arrow的轻量线程池

基于Arrow的轻量线程池 大家好&#xff0c;我是光城&#xff0c;最近花了几周业余时间&#xff0c;开发出这款轻量线程池&#xff0c;代码也全部开源啦&#xff0c;欢迎大家star。 本线程池的设计与实现会有涉及非常多的知识&#xff0c;这些内容也都会以视频的方式分享在知识星…...

泛微OA E-Office V10 OfficeServer 任意文件上传漏洞复现

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 漏洞简介 泛微e-ofice是一款标准化的协同0A办公软件&#xff0c;泛微 …...

spring-cloud-starter-gateway踩坑

1.bean of type org.springframework.http.codec.ServerCodecConfigurer that could not be found. 需要将项目中用到的spring-boot-starter-web依赖给去掉 去掉以下的 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo…...

视频SDK开发,多平台SDK快速接入

随着科技的不断发展&#xff0c;视频已经成为了企业业务中不可或缺的一部分。无论是在线教育、企业培训还是产品展示&#xff0c;视频都发挥着至关重要的作用。为了满足企业对视频应用的需求&#xff0c;美摄视频SDK应运而生&#xff0c;为企业提供了一站式的视频解决方案。 一…...

面试官:如何理解CDN?说说实现原理?

一、是什么 CDN (全称 Content Delivery Network)&#xff0c;即内容分发网络 构建在现有网络基础之上的智能虚拟网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降…...

C语言 牛客网习题 10.20 day2

1.求最小公倍数 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值&#xff0c;设计一个算法&#xff0c;求输入A和B的最小公倍数。 1≤a, b≤100000 输入描述&#xff1a; 输入两个正整数A和B。 输出描述&#xff1a; 输出A和B的最小公倍数。 #include <st…...

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…...

PDF编辑阅读 PDF Expert v3.5.2

PDF Expert是由Readdle开发的一款专业的PDF编辑和阅读工具。它可以帮助用户在Mac、iPad和iPhone等设备上查看、注释、编辑、填写和签署PDF文档。 以下是PDF Expert的特点&#xff1a; PDF编辑&#xff1a;PDF Expert提供了丰富的PDF编辑功能&#xff0c;包括添加、删除、移动…...

新技术:WEB组态能页面嵌套、属性继承吗?

目前市面上的工业组态或数据大屏工具有不少&#xff0c;也有很多0代码、无代码、低代码、零代码、低代码概念。 有没有可以支持图纸嵌套、属性暴露的&#xff1f;或者说页面任意嵌套、属性多继承暴露到上层&#xff1f; 比如页面A有输入框&#xff0c;页面B有对话框&#xff…...

【C++ Primer Plus学习记录】复习题

1.如何声明下述数据&#xff1f; a.actor是由30个char组成的数组。 char actor[30]; b.betsie是由100个short组成的数组。 short betsie[100]; c.chuck是由13个float组成的数组。 flaot chuck[13]; d.dipsea是由64个long double组成的数组。 long double dipsea[64]; …...

【LeetCode】62. 不同路径

1 问题 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f…...

为什么高频PLL里偏爱用TSPC分频器?聊聊动态触发器的那些事儿

为什么高频PLL设计者钟爱TSPC分频器&#xff1f;动态触发器的技术内幕 在5G通信和毫米波雷达的电路设计中&#xff0c;工程师们常常面临一个关键抉择&#xff1a;当锁相环&#xff08;PLL&#xff09;需要工作在10GHz以上频率时&#xff0c;传统分频器架构突然变得力不从心。此…...

3个颠覆性技巧让AI到PSD转换效率提升300%

3个颠覆性技巧让AI到PSD转换效率提升300% 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 你是否曾为Illustrator到Photoshop的转换而头疼&…...

量子强化学习在TSP问题中的参数优化与应用

1. 量子强化学习在TSP问题中的应用概述量子强化学习&#xff08;Quantum Reinforcement Learning, QRL&#xff09;作为量子计算与强化学习的交叉领域&#xff0c;为解决组合优化问题提供了全新的技术路径。在旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff0…...

VMware Tools安装后别急着庆祝!共享文件夹设置、分辨率调整与性能优化的完整配置清单

VMware Tools安装后必做的10项深度配置&#xff1a;从能用变好用的进阶指南 当你看到"Enjoy, –the VMware team"的提示时&#xff0c;VMware Tools的安装只是完成了第一步。真正提升虚拟机体验的关键&#xff0c;在于后续这一系列深度配置。本文将带你解锁共享文件夹…...

别再只用@keydown.enter了!盘点Vue表单交互中回车键监听的5个实用场景与避坑点

Vue表单交互中回车键的高级应用&#xff1a;5个实战场景与深度优化 在Web应用开发中&#xff0c;表单交互占据了用户操作的重要部分。虽然大多数开发者都熟悉基础的keydown.enter用法&#xff0c;但回车键在不同场景下的精细控制往往能显著提升用户体验。本文将深入探讨五个典型…...

别再被Excel空行坑了!手把手教你用EasyExcel自定义监听器精准过滤无效数据

别再被Excel空行坑了&#xff01;手把手教你用EasyExcel自定义监听器精准过滤无效数据 Excel数据处理是Java开发者常见的任务场景&#xff0c;但你是否遇到过这样的困扰&#xff1a;从业务部门收集的报表中明明只有几十条有效数据&#xff0c;导入系统后却变成上千条记录&…...

别再问FreeSWITCH能不能搞WebRTC了,手把手教你用Verto模块5分钟搭个Web电话(附避坑清单)

5分钟用FreeSWITCH Verto模块打造Web电话系统&#xff1a;极简配置与实战避坑指南 如果你正在寻找一种比传统SIP更轻量、更"Web原生"的实时通信解决方案&#xff0c;FreeSWITCH的Verto模块可能正是你需要的答案。不同于需要复杂配置的SIP over WebSocket方案&#xf…...

革命性AI视频编辑工具Mov2mov:让Stable Diffusion动起来的终极指南

革命性AI视频编辑工具Mov2mov&#xff1a;让Stable Diffusion动起来的终极指南 【免费下载链接】sd-webui-mov2mov This is the Mov2mov plugin for Automatic1111/stable-diffusion-webui. 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-mov2mov Mov2mov是一款…...

【数据分析电商领域】电商类指标

电商核心指标 GMV 转化 流量 用户 履约 商品 营销 风控 流量&#xff1a;UV、PV、访问深度、跳出率转化&#xff1a;转化率、加购率、支付率、客单价&#xff08;AOV&#xff09;用户&#xff1a;新客占比、复购率、留存率、LTV交易&#xff1a;GMV、订单量、支付金额、…...

【Android取证实战】小米手机OTG连接疑难排查与数据提取全攻略

1. OTG连接基础与小米手机兼容性解析 第一次用OTG线连接小米手机和U盘时&#xff0c;我也遇到过插上没反应的尴尬情况。后来才发现&#xff0c;这就像用钥匙开门——光有钥匙还不够&#xff0c;得先确认锁孔对不对得上。小米手机从2013年后发布的机型基本都支持OTG功能&#xf…...