热力图可视化 仅标签框内的热力图 去除红色以外区域的热力图
使用Grad-CAM方法建立YOLOv5中实现三种不同的热力图可视化普通热力图、仅标签框内的热力图、去除红色以外区域的热力图文章目录使用Grad-CAM方法建立YOLOv5中实现三种不同的热力图可视化普通热力图、仅标签框内的热力图、去除红色以外区域的热力图步骤 1: 导入必要的库步骤 2: 加载YOLOv5模型步骤 3: 定义Grad-CAM类步骤 4: 处理输入图像步骤 5: 获取热力图特定区域热力图仅标签框内的热力图去除红色以外区域的热力图完整代码YOLOv5热力图grad-cam建立目标3种热力图可视化:普通的仅标签框内的去除红色以外区域的用于YOLOv5添加注意力机制、改进模型等YOLOv5中实现三种不同的热力图可视化普通热力图、仅标签框内的热力图、去除红色以外区域的热力图我们可以使用Grad-CAM方法。代码示例仅供参考。如何加载模型、处理图像、生成热力图以及展示结果。步骤 1: 导入必要的库importcv2importnumpyasnpimporttorchfromtorchvision.transformsimportfunctionalasFfrompytorch_grad_camimportGradCAM,ScoreCAM,GradCAMPlusPlus,AblationCAM,XGradCAM,EigenCAM,EigenGradCAM,LayerCAMfrompytorch_grad_cam.utils.imageimportshow_cam_on_imagefrommodels.experimentalimportattempt_load# 假设这是加载YOLOv5模型的方式步骤 2: 加载YOLOv5模型modelattempt_load(yolov5_weights.pt,map_locationcpu)# 或 cuda 如果有GPU的话model.eval()步骤 3: 定义Grad-CAM类target_layermodel.model[-1]# 这里假设目标层是最后一个层camGradCAM(modelmodel,target_layertarget_layer,use_cudaTrueiftorch.cuda.is_available()elseFalse)步骤 4: 处理输入图像defpreprocess_image(img_path):imgcv2.imread(img_path)imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)img_tensorF.to_tensor(img).unsqueeze(0)# 添加batch维度returnimg,img_tensor步骤 5: 获取热力图defget_gradcam_visualization(model,img_tensor,cam_method,target_categoryNone):grayscale_camcam_method(input_tensorimg_tensor,target_categorytarget_category)grayscale_camgrayscale_cam[0,:]visualizationshow_cam_on_image(img/255.0,grayscale_cam,use_rgbTrue)returnvisualization# 普通热力图img,img_tensorpreprocess_image(path_to_your_image.jpg)visualizationget_gradcam_visualization(model,img_tensor,cam)# 显示结果importmatplotlib.pyplotasplt plt.imshow(visualization)plt.show()特定区域热力图仅标签框内的热力图defget_bounding_boxes(model,img_tensor):withtorch.no_grad():outputmodel(img_tensor)boxesoutput.xyxy[0].tolist()returnboxesdefvisualize_bounding_box_heatmap(img,boxes,visualization):forboxinboxes:x1,y1,x2,y2int(box[0]),int(box[1]),int(box[2]),int(box[3])cropped_imgimg[y1:y2,x1:x2]cropped_tensorF.to_tensor(cropped_img).unsqueeze(0)cropped_visualizationget_gradcam_visualization(model,cropped_tensor,cam)img[y1:y2,x1:x2]cropped_visualizationreturnimg boxesget_bounding_boxes(model,img_tensor)heatmap_with_boxesvisualize_bounding_box_heatmap(img,boxes,visualization)plt.imshow(heatmap_with_boxes)plt.show()去除红色以外区域的热力图defremove_non_red_regions(visualization):lower_rednp.array([200,0,0],dtypeuint8)upper_rednp.array([255,100,100],dtypeuint8)maskcv2.inRange(visualization,lower_red,upper_red)visualization[mask0][255,255,255]# 将非红色区域变白或其他颜色returnvisualization heatmap_without_non_redremove_non_red_regions(visualization)plt.imshow(heatmap_without_non_red)plt.show()完整代码importcv2importnumpyasnpimporttorchfromtorchvision.transformsimportfunctionalasFfrompytorch_grad_camimportGradCAM,ScoreCAM,GradCAMPlusPlus,AblationCAM,XGradCAM,EigenCAM,EigenGradCAM,LayerCAMfrompytorch_grad_cam.utils.imageimportshow_cam_on_imagefrommodels.experimentalimportattempt_load# 加载YOLOv5模型modelattempt_load(yolov5_weights.pt,map_locationcpu)model.eval()# 定义Grad-CAM类target_layermodel.model[-1]camGradCAM(modelmodel,target_layertarget_layer,use_cudaTrueiftorch.cuda.is_available()elseFalse)# 处理输入图像defpreprocess_image(img_path):imgcv2.imread(img_path)imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)img_tensorF.to_tensor(img).unsqueeze(0)returnimg,img_tensor# 获取热力图defget_gradcam_visualization(model,img_tensor,cam_method,target_categoryNone):grayscale_camcam_method(input_tensorimg_tensor,target_categorytarget_category)grayscale_camgrayscale_cam[0,:]visualizationshow_cam_on_image(img/255.0,grayscale_cam,use_rgbTrue)returnvisualization# 获取边界框defget_bounding_boxes(model,img_tensor):withtorch.no_grad():outputmodel(img_tensor)boxesoutput.xyxy[0].tolist()returnboxes# 可视化边界框内的热力图defvisualize_bounding_box_heatmap(img,boxes,visualization):forboxinboxes:x1,y1,x2,y2int(box[0]),int(box[1]),int(box[2]),int(box[3])cropped_imgimg[y1:y2,x1:x2]cropped_tensorF.to_tensor(cropped_img).unsqueeze(0)cropped_visualizationget_gradcam_visualization(model,cropped_tensor,cam)img[y1:y2,x1:x2]cropped_visualizationreturnimg# 去除非红色区域defremove_non_red_regions(visualization):lower_rednp.array([200,0,0],dtypeuint8)upper_rednp.array([255,100,100],dtypeuint8)maskcv2.inRange(visualization,lower_red,upper_red)visualization[mask0][255,255,255]returnvisualization# 主程序if__name____main__:img_pathpath_to_your_image.jpgimg,img_tensorpreprocess_image(img_path)# 普通热力图visualizationget_gradcam_visualization(model,img_tensor,cam)plt.imshow(visualization)plt.show()# 仅标签框内的热力图boxesget_bounding_boxes(model,img_tensor)heatmap_with_boxesvisualize_bounding_box_heatmap(img,boxes,visualization)plt.imshow(heatmap_with_boxes)plt.show()# 去除红色以外区域的热力图heatmap_without_non_redremove_non_red_regions(visualization)plt.imshow(heatmap_without_non_red)plt.show()展示了如何在YOLOv5中实现三种不同的热力图可视化并且可以用于各种 YOLOv5模型以添加注意力机制和改进模型。仅供参考。

相关新闻

RTOS内核中断管理:从硬件机制到软件框架的深度解析与实践

RTOS内核中断管理:从硬件机制到软件框架的深度解析与实践

1. 从一个真实的调试场景说起最近在调试一个基于Cortex-M3内核的RTOS项目时,遇到了一个让我琢磨了半天的现象。我的任务是在一个实时数据采集模块里,通过CAN总线接收数据,同时用SysTick定时器做一个精确的1ms时基。代码写好后,大部…

2026/8/18 20:33:07 阅读更多 →
AI Agent 开发实战(09):第一个 AI Agent

AI Agent 开发实战(09):第一个 AI Agent

发布时间:2026-07-24 标签:AI Agent|实战|Python|Tool Calling|Memory目标前面 05–08 篇用的 Hermes、OpenClaw 都是别人写好的 Agent。本篇第一次自己写:用 Python 一个 LLM SDK,…

2026/8/18 20:33:07 阅读更多 →
FreeRTOS嵌入式开发实战:从任务调度到项目应用全解析

FreeRTOS嵌入式开发实战:从任务调度到项目应用全解析

1. 从零到一:为什么FreeRTOS是嵌入式开发的必修课如果你刚开始接触单片机,可能觉得裸机编程(也就是不用操作系统,直接在main函数里写while(1)循环)已经足够应付LED闪烁、按键检测这些简单任务了。但当你开始面对一个需…

2026/8/18 20:33:07 阅读更多 →

最新新闻

从零DIY生态水族缸:超白玻璃选材、结构计算与粘缸实战指南

从零DIY生态水族缸:超白玻璃选材、结构计算与粘缸实战指南

1. 从零开始:为什么选择自己动手造一个“缸”“DIY tank”这个标题,听起来有点硬核,甚至带点军事或工业的意味。但别急着划走,这里的“tank”其实可以非常多元。它可能是一个水族爱好者梦寐以求的生态水族缸,一个极客用…

2026/8/19 3:31:16 阅读更多 →
基于Neopixel的巨型七段数码管DIY:从电路设计到编程映射全解析

基于Neopixel的巨型七段数码管DIY:从电路设计到编程映射全解析

1. 项目缘起:从“小方块”到“大像素”的执念几年前,我在一个创客展上看到一个用LED灯带做的巨型数字时钟,每个数字差不多有半人高,在昏暗的展位上显得格外酷炫。当时我就想,这玩意儿原理应该不复杂,不就是…

2026/8/19 3:31:16 阅读更多 →
基于Wio Terminal的USB HMI设计:为嵌入式Linux打造高效图形外设

基于Wio Terminal的USB HMI设计:为嵌入式Linux打造高效图形外设

1. 项目缘起:为什么需要一块USB HMI? 在嵌入式开发的世界里,我们常常面临一个尴尬的局面:手头的核心板(比如BeagleBoard这类功能强大的单板计算机)性能强劲,但“面子”上却有点寒酸。它可能没有…

2026/8/19 3:31:16 阅读更多 →
函数式编程实战:从纯函数、不可变数据到Java Stream与Python高阶函数应用

函数式编程实战:从纯函数、不可变数据到Java Stream与Python高阶函数应用

在实际软件开发中,函数式编程(Functional Programming, FP)是一种与命令式编程、面向对象编程并列的重要编程范式。它并非一个新鲜事物,其数学基础可以追溯到几十年前的λ演算,但在近年来,随着多核处理器、…

2026/8/19 3:31:16 阅读更多 →
基于RTL8195的空气质量监测仪:硬件选型、软件实现与物联网集成实战

基于RTL8195的空气质量监测仪:硬件选型、软件实现与物联网集成实战

1. 项目概述:空气质量监测仪的硬件核心选择最近在捣鼓一个空气质量监测的小项目,核心目标是想做一个能实时显示PM2.5、温湿度、二氧化碳浓度等关键环境数据的桌面摆件。市面上成品不少,但要么功能单一,要么数据封闭,总…

2026/8/19 3:31:16 阅读更多 →
构建个人数字身份管理系统:从硬件密钥到统一凭证的实践指南

构建个人数字身份管理系统:从硬件密钥到统一凭证的实践指南

1. 项目概述:从“钥匙”到“数字身份”的进化最近在捣鼓一些个人数据安全方案时,我反复琢磨一个概念:我们每天要记住的密码、要携带的实体门禁卡、要验证的生物信息,本质上都是不同形式的“钥匙”。但这些钥匙太分散了&#xff0c…

2026/8/19 3:30:16 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →