【python】热力图绘制: intensity_heatmap,density_heatmap

绘制视差图的误差热力图 目录一、pfm格式的读取二、npz格式的存储与读取2.1 npz格式文件创建与读取三、热力图的绘制 阅读详情

在使用深度学习时,尤其生成模型,我们想知道生成误差或者重构误差出现在什么地方,这时我们就需要用热力图来可视化。在可视化中,除了要显示损失的heatmap以外,我们还要与原始图像进行一个加权,使我们清楚地看到重构误差损失出现在什么位置。

本文提供两个函数解决这个问题:intensity_heatmap和density_heatmap

  • intensity_heatmap:损失强度热力图。像素值的亮暗显示损失的强与弱。

  • density_heatmap:损失密度热力图。只统计损失强度超过一定阈值的点,并且按阈值二值化。然后对这些强损失点添加半径,可视化强损失点的密度。

代码如下:

首先,需要安装三个函数包 cv2,PIL,pyheatmap,其中pyheatmap的安装如下:

pip install pyheatmap
# conda install pyheatmap  会报错,conda中不存在这个程序包

热力图的定义,使用代码如下:

import cv2
from PIL import Image
from pyheatmap.heatmap import HeatMap

def intensity_heatmap(background_img, intensity_map, blue_mask_weight=0.3, heat_map_weight=0.5):
	"""
	
	:param background_img: 背景图
	:param intensity_map: 损失强度图
	:param blue_mask_weight: 
	:param heat_map_weight: 
	:return: 
	"""
	assert background_img.ndim == 3
	assert intensity_map.ndim == 2 or intensity_map.ndim == 3
	assert background_img.shape[0:2] == intensity_map.shape[0:2]
	background_img_norm = ((background_img - background_img.min()) / (background_img.max() - background_img.min())
	                       * 255).astype(np.uint8)
	intensity_map_norm = ((intensity_map - intensity_map.min()) / (intensity_map.max() - intensity_map.min())
	                      * 255).astype(np.uint8)
	
	# 背景图需要加一个蓝色掩码,以更好的显示热力图
	blue_mask = cv2.rectangle(background_img.copy(), (0, 0), background_img.shape[0:2], (0, 0, 255), -1).astype(np.uint8)
	heatmap_base = cv2.addWeighted(blue_mask, blue_mask_weight, background_img_norm, 1 - blue_mask_weight, 0).astype(np.uint8)
	
	# 获取热力图
	hotmap_blue = np.array(cv2.applyColorMap(intensity_map_norm, cv2.COLORMAP_HOT))  # 是蓝色的3通道heatmap
	hotmap_red = cv2.cvtColor(hotmap_blue, cv2.COLOR_RGB2BGR)  # 由蓝色heatmap转为红色heatmap
	
	intensity_hotmap_img = cv2.addWeighted(hotmap_red, heat_map_weight, heatmap_base, 1 - heat_map_weight, 0)
	
	return intensity_hotmap_img

def density_heatmap(background_img, intensity_map, intensity_thr=50, density_radius=5, heat_map_weight=0.5):
	"""
	
	:param background_img: 背景图
	:param intensity_map: 损失map
	:param intensity_thr: 强损失阈值
	:param density_radius: 密度半径
	:param heat_map_weight: 
	:return: 
	"""
	assert background_img.ndim == 3
	assert intensity_map.ndim == 2 or intensity_map.ndim == 3
	assert background_img.shape[0:2] == intensity_map.shape[0:2]
	background_img_norm = ((background_img - background_img.min()) / (background_img.max() - background_img.min())
	                       * 255).astype(np.uint8)
	intensity_map_norm = ((intensity_map - intensity_map.min()) / (intensity_map.max() - intensity_map.min())
	                      * 255).astype(np.uint8)
	hotmap_points = []
	for i in range(intensity_map.shape[0]):  ##获取异常点
		for j in range(intensity_map.shape[1]):
			if intensity_map_norm[i, j] > intensity_thr:
				hotmap_points.append([j, i])
	
	background = Image.new("RGB", (intensity_map.shape[1], intensity_map.shape[0]), color=0)  ## heatmap基底
	hm = HeatMap(hotmap_points)
	density_heatmap_img = np.array(hm.heatmap(base=background, r=density_radius))
	density_heatmap_img = cv2.addWeighted(density_heatmap_img, heat_map_weight, background_img_norm,
	                                      1 - heat_map_weight, 0)
	
	return density_heatmap_img

if __name__ == "__main__":
    img_path = "gt_img.jpg" 
    loss_map_path = "loss_map.npy" 
    
    gt_img = cv2.imread(img_path) # shape = [h,w,c]
    loss_map = np.load(loss_map_path) # shape = [h,w,1] 或 shape = [h,w]
    
    density_heatmap_img = density_heatmap(gt_img,loss_map,intensity_thr=50,density_radius=10,heat_map_weight=0.5)
    intensity_hotmap_img = intensity_heatmap(gt_img,loss_map,blue_mask_weight = 0.1,heat_map_weight = 0.6)
    
    plt.subplot(121)
    plt.imshow(density_heatmap_img)
    plt.subplot(122)
    plt.imshow(intensity_hotmap_img)
    plt.show()

以下使用示例引用自:https://blog.youkuaiyun.com/weixin_43289135/article/details/104651047 

# -*- coding: utf-8 -*-
from pyheatmap.heatmap import HeatMap
import numpy as np
x = [10,20,30,80,50,40,70,90,60,30,40,50]
y = [50,40,20,30,60,90,60,20,60,10,70,50]
data = []
for i in range(0,11):
    temperature = [int(x[i]), int(y[i]),1]# 设置每个像素点处的温度
    data.append(temperature)
heat = HeatMap(data)
heat.clickmap(save_as="1.png") #点击图
heat.heatmap(save_as="2.png") #热图

感受野的热力图可视化 理论: 事物的发展是有规律的(如果时间紧急可以跳过),或许下面的博客可以启发您 有些理论1 1.首先选择某一层特征图,用register_forward_hook拿到该特征图。2.对该特征图中心坐标,在batch和channel维度求均值。3.对求得的值进行backward,并得到输入张量的梯度。4.如果输入张量为彩色图像,对batch和channel维度算均值,得到的应该是一个二维的张量。5.随机选择一定数量的输入图像,执行第一步到第四步,并将第四步得到所有的张量进行累加并进行归一化。6.对归一化后的二维 阅读详情

相关推荐

海洋热浪强度可视化实战:从NetCDF到网页大屏的Python全流程

海洋热浪是海表温度持续异常偏高的极端事件,对渔业、生态和气候系统都有显著影响。科学量化其强度与时空演变,需要依赖气候态阈值识别、强度指标计算与可视化呈现。利用Python生态中的xarray、pandas、Cartopy与Plotly,可以高效完成从NetCDF数据读取、区域裁剪、阈值计算到空间分布图、时间序列及交互大屏的完整分析链路。通过南海北部的实际案例,展示海洋热浪识别的技术原理与可视化设计方法,帮助科研与工程人员快速掌握气候数据可视化的核心技能,让高温风险清晰可见。

weixin_33970449的博客 482

异常检测中的误差热力图画法

视频异常检测误差热力图的制作。

weixin_44323744的博客 3182

Python地铁客流可视化:从CSV到交互热力图全流程

地铁客流可视化是城市交通数据分析的基础技术,其核心在于将时空维度的客流数据与地理空间信息融合呈现。原理上需完成坐标系统一、线路拓扑建模、多维聚合计算及动态渲染四大环节,技术价值体现在提升分析可解释性与决策响应速度。典型应用场景包括高校课程设计、交通规划辅助、运营调度优化及GIS教学实践。本方案基于纯Python技术栈,无需前端框架,支持WGS84坐标处理、GeoJSON线路解析与Pyecharts/ECharts双引擎渲染,特别适配地铁站点热力图与换乘枢纽强度分析等高频需求。

weixin_32238157的博客 275

Python opencv cv2.applyColorMap 伪色彩函数

在图像处理中,伪色彩用途广泛。在OpenCV库中,常见的伪色彩模式都可通过 cv2.applyColorMap(src, userColor[, dst]) 直接调用,很是方便快捷。 例如伪色彩中的COLORMAP_JET模式,就常被用于生成我们所常见的热力图: import cv2 # COLORMAP_AUTUMN = 0, # COLORMAP_BONE = 1, # COLORMAP_JET = 2, # COLORMAP_WINTER = 3, # COLORMA......

hxxjxw的博客 1万+

WebGIS地震灾害可视化系统:从Leaflet、PostGIS到风险评估的毕业设计实战

WebGIS(网络地理信息系统)是GIS技术与Web技术融合的产物,其核心原理在于通过浏览器实现地理数据的可视化、查询与分析。这项技术的价值在于将专业的地理空间能力泛化为可被互联网应用调用的服务,极大地拓展了GIS在灾害预警、城市规划、物流管理等领域的应用场景。实现一个实用的WebGIS系统,通常需要整合前端地图库(如Leaflet)、空间数据库(PostGIS)和地图服务器(GeoServer)等技术栈。其中,空间数据库PostGIS支持直接使用SQL进行高效的空间查询(如缓冲区分析),而Leaflet则

weixin_33910385的博客 427

钢丝绳缺陷检测数据集:1300张工业级标注样本实战指南

钢丝绳缺陷检测是工业视觉在电力巡检、桥梁缆索评估等关键场景中的典型小目标识别任务。其核心挑战在于微小缺陷(<2mm)、低对比度、复杂光照与类别不平衡,需兼顾高召回率与严苛误报率(<0.5%)。真实数据集必须覆盖雷击熔痕、断丝、锈蚀等多类物理缺陷,并具备XML+TXT双格式标注、工况多样性及结构完整性校验能力。技术价值体现在支撑YOLOv8等模型快速完成baseline构建、标注一致性验证、物理可信增强与部署级热力图验证。本文围绕1300张带缺陷定位的真实样本,详解数据校验、VOC转YOLO、绳股纹理定制增强

weixin_42523711的博客 286

《python深度学习》可视化热力图

import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras import models import tensorflow.keras.backend as K import cv2 from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions VGG16_mode.

白雪 2280

校园消费行为分析:构建课表驱动的时空锚点分析框架

校园消费行为是一种受课表节奏、学期周期和场景身份强约束的非连续脉冲式行为,不同于通用RFM模型或电商时间序列分析。其核心原理在于识别‘时空-角色-金额’三维耦合关系,通过行为锚点(如课间10分钟窗口、学期阶段划分、地点语义聚类)实现从原始流水到可解释行为标签的转化。该技术显著提升异常识别精度(如经济困难学生定位)、资源调度合理性(如食堂窗口排班)与教育管理响应速度。本文聚焦Python工程化落地,覆盖字段归一化、金额/时间鲁棒解析、滑动窗口脉冲强度计算及三维交叉分析等关键环节,特别适配高校教务、学工与后勤部

weixin_27256197的博客 198

kepler.gl Heatmap 密度热力图实战:从 pandas 数据到独立 HTML 地图的完整配置指南

密度热力图(Density Heatmap)是 kepler.gl 中最适合表达"点密集程度"的图层类型:它把大量经纬度点聚合为一张连续密度面,无需逐点渲染,即可在大规模数据上直观呈现空间集聚与热点分布。本篇指南基于 kepler.gl 官方技能文档([skill/skill-references/heatmap.md](https://link.gitcode.com/i/8a7b8e279b9

gitblog_01139的博客 430

乳腺癌分割数据集质检三步法:文件对齐、像素编码、语义验证

医学图像分割中的‘数据可用性’并非指文件存在,而是指图像与掩膜在文件系统、像素编码、病理语义三个层面严格对齐。其核心原理在于:医学标注具有强临床语义约束,0/1或0/255的mask像素值必须明确映射到具体细胞结构(如癌变细胞核),否则将导致模型学习偏差甚至临床误判。该技术价值体现在提升模型可解释性与落地鲁棒性,广泛应用于病理AI辅助诊断、数字切片分析及多中心数据协同建模。本文聚焦乳腺细胞癌症分割场景,系统拆解文件名匹配校验、mask编码方式识别、标签-组织学语义对齐等关键质检步骤。

weixin_29050271的博客 241

牛只姿态检测数据集实战指南:从解压到部署的完整避坑流程

牛只姿态检测是智慧牧场与农业AI落地的关键技术,其核心在于高质量、场景适配的视觉数据集。本文围绕‘牛只姿态检测数据集(已标注).zip’这一典型农业边缘数据资产,系统解析其内在结构、标注规范缺失、YOLO格式兼容性等底层原理;强调数据诊断、标准化清洗与鲁棒性增强的技术价值;覆盖站立、卧倒、采食、警觉等6类真实姿态在雨雾、低光、泥泞等复杂场景下的工程适配;最终指向边缘部署(Jetson)、多框架迁移(YOLOv8/MMDetection)及置信度可解释性验证等落地闭环。适合算法工程师与智慧农业实施团队快速构建

weixin_32597009的博客 179

景区热力图实战:从行为事件流到时空行为强度建模

热力图本质上是空间与时间维度上人类行为密度的可视化表达,其核心原理并非简单点聚合,而是对停留、移动、交互等多维事件的加权时空强度计算。在智慧文旅领域,尤其北京这类高密度、多尺度、强规则约束的景区场景中,传统KDE核密度估计因忽略行为语义与设施 proximity 而失效。真正具备业务解释力的热力模型必须融合游客预约规则、动线约束、设施可达性及事件权重体系,实现从‘哪里人多’到‘为什么热、热在何处、热向何方’的深度解析。本文基于Python构建可验证、可干预、可服务化的景区行为热力分析框架,覆盖自适应网格建模

weixin_34343308的博客 337

深入解析西门子S7通信协议:从抓包到实战应用

本文深入解析西门子S7通信协议,从环境搭建、抓包分析到实战应用,提供了一套完整的协议分析方法。通过Wireshark工具进行抓包分析,详细拆解了S7协议各层结构,并结合真实案例,展示了如何利用抓包技术解决通信故障、优化性能及进行安全审计,是掌握工业通信底层原理的实用指南。

weixin_29224529的博客 281

Unity热力图资源包:从数据可视化到性能优化的完整实现指南

数据可视化是游戏开发和数据分析中的基础技术,它通过图形化手段将抽象数据转化为直观的视觉信息,帮助开发者洞察数据分布与模式。其核心原理在于将离散数据点通过密度计算与插值算法(如高斯核密度估计)转化为连续的色彩分布,从而揭示数据的热点区域与趋势。在技术实现上,高效的网格化处理、GPU加速计算与着色器渲染构成了关键技术栈,这直接决定了可视化效果的流畅度与实时性。对于Unity开发者而言,一个封装完善的热力图资源包能够大幅降低技术门槛,将数据映射、颜色梯度配置、交互功能等复杂流程简化为可配置组件,其价值在于提升开发

cuml0912的博客 435

[基于STM32底盘控制与ROS上层导航小车制作] 第一节 stm32电机驱动与编码器读取反馈

系列文章目录 第一节stm32电机驱动与编码器读取反馈 第二节 stm32电机pid控制 第三节 stm32线速度标定 第四节 stm32添加mpu6050得到angle角度 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息 第六节 ROS计算和发布里程计 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 系列文章目录 前言 1.pwm与电机正反转 2.编码器初始化 二、pwm控制与编码器使用 1.pwm使电机 .

LanLanLan1927的博客 1万+

STM32硬件SPI驱动ADS1220实战:从零搭建高精度数据采集系统(附避坑指南)

本文详细介绍了使用STM32硬件SPI驱动24位高精度ADC芯片ADS1220的完整实战方案。内容涵盖从硬件设计、CubeMX工程配置、SPI通信底层实现到数据读取策略与性能优化的全流程,并重点分享了多通道切换、噪声抑制等关键避坑指南,帮助开发者构建稳定可靠的高精度数据采集系统。

o4p5q6r7s的博客 450

情感分析驱动的美国新闻意识形态分类方法

情感分析是自然语言处理中识别文本情绪倾向的基础技术,其核心在于从词汇、句法和语境层面量化态度极性与强度;随着大模型与领域适配嵌入的发展,细粒度情感解析已能支撑更深层的立场建模任务;该技术不仅服务于舆情监控与内容审核,更在媒体偏见评估、ESG报告真实性验证及教育文本多元性分析等场景展现出强解释性与可迁移价值;本文聚焦于以情感为代理变量,构建面向美国新闻语料的意识形态分类系统,融合情感分析与立场建模两大关键技术路径。

494

基于51单片机的简易计算器设计(原理图+仿真+源代码+参考论文)

本设计以51单片机为核心,矩阵键盘输入数字,通过1602显示屏显示计算结果,能够实现整数的加、减、乘、除四则运算,具备清除功能。

u012759563的博客 7697

Uber实战:用规则引擎实现合成数据驱动的机器学习训练加速

合成数据是解决机器学习中长尾场景覆盖不足、标注成本高、冷启动慢等工程瓶颈的关键技术。其核心原理并非追求样本‘逼真’,而是通过可解释的生成逻辑保障事件因果链与物理约束的一致性,从而提升模型在真实业务场景下的鲁棒性与泛化能力。技术价值体现在显著压缩模型迭代周期、降低标注依赖、支撑跨城市快速部署;典型应用场景包括实时ETA预测、极端天气调度、新POI冷启动及ML Ops持续训练流水线。本文聚焦Uber产线级实践,深入解析基于领域知识的程序化生成、分布对齐的反事实误差热力图、以及动态衰减权重机制等关键设计,揭示合成

weixin_30897233的博客 454

ModuleNotFoundError: No module named‘langchain.schema.output parserlangchain.schema is not a package

电脑里现有的langchain库版本与import所需的不同,卸载原有langchain,重新下载最新的langchain。在步骤1后,若仍不可运行。在确保已重新下载新langchain后,重启python后,可正常运行。在版本号中填入所需的langchain版本号,可在requirements.txt查看。运行如下代码时,出现error。

weixin_45751925的博客 1713

32GB Jetson Orin SOM 不能刷机问题排查

拿到了一个新的Orin SOM,当用orin Devkit CVB或定制的CVB不能用Linux_For_Tegra刷机,flash日志(JetPack5.0DP和5.0.1DP都失败了) 2. 确认mb2配置中将CVB的eeprom读取大小设置是否为0 ? 已经确认是正常的 在定制的orin cvb flash上使用Orin devkit som,启动是成功的。但新得到的Orin som并不工作可以排除理由:使用Orin Devkit CVB和Orin SOM(不是Devkit SOM)仍然不能

jzwjzw19900922的博客 1499

失窃自行车数据分析:Tableau地理可视化实战指南

自行车失窃是城市公共安全中高频、隐蔽且具空间聚集性的治安问题,其本质是一类典型的时空点事件数据——具备地理坐标、时间戳、车辆属性与报案文本等多维特征。理解其分析逻辑,需从地理编码原理出发,解决非标准地址解析、模糊时间归因、车型风险量化等核心挑战;技术价值在于将零散警情转化为可定位、可预测、可干预的治理信号;典型应用场景包括派出所巡防调度、社区防盗指南生成、跨部门协同防控等。本文以真实警务数据为基底,聚焦Tableau在脏数据清洗、热力图建模、时间螺旋环与风险雷达图构建中的工程化落地方法,覆盖地理编码容错处理

355

Gemini-CLI 登录失败?解决报错 This account requires setting the GOOGLE_CLOUD_PROJECT env var 的问题

🚀 刚装好 `gemini-cli` 就遇到登录拦路虎?别慌!本文带你深入解析 `GOOGLE_CLOUD_PROJECT` 环境变量错误的根源,并提供超详细的图文解决方案,让你丝滑开启 AI 命令行之旅!快来抄作业!✍️

XiaoqiangClub的博客 5137

基于图像处理的皮肤修复效果量化评估:从时序分析到本地化系统搭建

图像处理技术通过计算机视觉算法对视觉信息进行提取、分析和理解,其核心原理在于将图像转化为数字矩阵,并利用特征工程与模式识别方法挖掘数据规律。在工程实践中,这项技术为客观量化评估提供了强大工具,尤其在需要追踪渐进式变化的场景中价值显著。例如,在皮肤健康管理领域,传统的修复效果评估往往依赖主观描述,缺乏客观数据支持。通过时序图像分析、特征提取与变化检测等技术,可以构建一套标准化的量化评估流程。具体而言,利用OpenCV、scikit-image等库进行图像对齐与ROI提取,再计算纹理、平整度等特征指标,最终实现

weixin_30861459的博客 309

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

信息瓶颈驱动的点云跟踪:90FPS实时三维目标追踪技术

点云跟踪是自动驾驶与机器人感知的核心环节,其本质是在无序、稀疏、动态变化的3D点集中持续识别并关联同一目标。传统方法受限于结构稀疏性、动态不确定性和计算爆炸性,常在精度与速度间艰难取舍。信息瓶颈(IB)理论为此提供新范式——通过最大化特征与目标ID的互信息、最小化特征与原始点云的冗余信息,实现任务导向的智能压缩。CompTrack将IB深度嵌入特征编码、关联决策与轨迹更新全流程,不仅达成单卡90FPS实时性能,更在KITTI、nuScenes等基准上保持SOTA精度。该技术已落地于L4无人配送与AR手势识别

dianjiaxian1205的博客 378

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: tf.contrib.data.Dataset 读取数据的原理--buffer
下一篇: tensorflow tensorboard summary的工作特点
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值