yolov8-gradcam热力图可视化即插即用不需要对源码做任何修改!(代码片段)

魔鬼面具 魔鬼面具     2023-03-29     618

关键词:

YOLOV8 GradCam 热力图可视化.

本文给大家带来yolov8-gradcam热力图可视化,这个可视化是即插即用不需要对源码做任何修改喔!给您剩下的不少麻烦!
代码链接:yolo-gradcam
里面还有yolov5和v7的热力图可视化代码,也是即插即用不需要对源码做任何修改喔!

先来看一下效果图


这个是由官方权重yolov8m实现的。

操作教程 哔哩哔哩视频

1. 从github中下载源码到自己的代码路径下。


简单来说就是直接复制到你的v8代码文件夹下即可,路径一定要放对,不然会找不到一些包。

2. 修改参数

def get_params():
    params = 
        'weight': 'yolov8m.pt',
        'cfg': 'ultralytics/models/v8/yolov8m.yaml',
        'device': 'cuda:0',
        'method': 'GradCAM', # GradCAMPlusPlus, GradCAM, XGradCAM
        'layer': 'model.model[8]',
        'backward_type': 'all', # class, box, all
        'conf_threshold': 0.6, # 0.6
        'ratio': 0.02 # 0.02-0.1
    
    return params

主要参数都在这个函数里面,其中解释如下:

  • weight
    权重路径。
  • cfg
    配置文件路径。(需要跟权重所训练出来的配置文件一致)
  • device
    运行的设备。cpu:cpu,gpu:cuda:0
  • method
    默认是GradCAM,还支持GradCAMPlusPlus和XGradCAM。但是作者这边实测都是GradCAM效果最好。
  • layer

    代码中的model.model[8]就是上图所示,经测试,对于yolov8,使用5-9效果还可以,至于对于自己的数据集,这个就需要慢慢测试了。
    所以如果需要修改求梯度的层,只需要修改数字即可,比如我想用第9层,也就是model.model[9]。
  • backward_type
    反向传播的变量。这里默认是all,也就是score+box进行反向传播,然后进行梯度求和。
    其中还支持score和box。建议使用all,效果不佳再换。
  • conf_threshold
    置信度阈值,默认0.6。
  • ratio
    取前多少数据,默认是0.02,就是只取置信度(yolov8为类别最大概率为置信度)排序后的前百分之2的目标进行计算热力图。
    这个可能比较难理解,一般0.02就可以了,这个值不是越大越好,最大建议是0.1

3.运行

if __name__ == '__main__':
    model = yolov8_heatmap(**get_params())
    model(r'20230117113354.jpg', 'result')
model = yolov8_heatmap(**get_params()) 这行代码为初始化
model(r'20230117113354.jpg', 'result') 第一个参数是图片的路径,第二个参数是保存路径,比如是result的话,其会创建一个名字为result的文件夹,如果result文件夹不为空,其会先清空文件夹。


运行输出如下:

运行后其会输出你的结构,你可以根据这个结构去选择你的层号,然后还会有一行:

	Transferred 475/475 items

这个非常重要,这个如果分子不等于分母的话,那证明你的cfg文件和你的模型权重不匹配!
然后下方有一个进度条:

QA:

  1. 为什么进度条还没有满就停止了呢?
    因为后面的目标已经不满足置信度的设定值。
  2. 这个进度条的长度126是什么意思?
    这个就是之前设定的参数ratio的作用,其只会选择前0.02的目标进行热力图可视化。

那么其实我们可以看到ratio等于0.02已经足够了,其他目标都是小于0.6的置信度。

4. 查看输出

打开设定的保存路径result文件夹下:

在这里,你可以挑选效果比较好的出来进行展示。

最后我这里做了一个实验,分别是对7,8,9layer进行实验:




这个实验主要是给大家看下,不同的layer,不同的backward_type,不同的method出来的效果都不一样,有些可能效果很差,需要自行调整测试,热力图这个东西是比较玄学的,有些结果会比较乱,有些结果会比较可观,有些图它可能就是热力图效果不好也有可能。

最后祝大家都能出到满意的图,如果可以的话github帮忙点个star,博文也帮忙点个赞,谢谢大家咯!

深度学习中的即插即用模块pdf下载

《卷积神经网络中的即插即用模块》是首发于GiantPandaCV公众号的电子书教程,欢迎关注其微信公众号:链接:https://pan.baidu.com/s/1Tzrcs-6XmObawb19Q68iOw提取码:os3g部分目录:  查看详情

cbam——即插即用的注意力模块(附代码)(代码片段)

...f09;Channelattention+spatialattention3.图像分类4.目标检测5.CBAM可视化6.Pytorch代码实现总结前言CBAM( ConvolutionalBlockAttentionModule )是一种轻量级注意力模块的提出于2018年,它可以在空间维度和通道维度上进行Attention操作。... 查看详情

macos读写ntfs即插即用.

1.安装osxfusehttps://osxfuse.github.io/2.安装brewhttps://brew.sh/index_zh-cn.html3.安装ntfs-3gbrewinstallntfs-3g4.替换本地的mount_ntfs文件sudomv/sbin/mount_ntfs/sbin/mount_ntfs.oldsudoln-s/usr/local/sbin/mount_ntf 查看详情

如何为高度解耦、即插即用的复杂组件构建 Redux?

】如何为高度解耦、即插即用的复杂组件构建Redux?【英文标题】:HowtostructureReduxforahighlyde-coupled,plug-n-playcomplexcomponent?【发布时间】:2018-04-1012:49:16【问题描述】:我对Redux很陌生,想在我的应用程序中使用它,但我在Redux部分... 查看详情

如何在没有 Windows 窗体的情况下接收即插即用设备通知

】如何在没有Windows窗体的情况下接收即插即用设备通知【英文标题】:HowtoreceivePlug&Playdevicenotificationswithoutawindowsform【发布时间】:2011-01-0421:26:00【问题描述】:我正在尝试编写一个可以捕获Windows消息的类库,以便在设备已... 查看详情

将即插即用设备映射到 PCI 插槽 ID,C#

】将即插即用设备映射到PCI插槽ID,C#【英文标题】:MappingPlugNPlayDevicestoPCISlotIDs,C#【发布时间】:2017-06-0918:18:42【问题描述】:我有一定数量的外部设备,我们称它们为事物。每个事物都通过插入PCI插槽的PnP卡与计算机连接。每... 查看详情

智能家居通用管理平台-即插即用机制的设计

   即插即用机制,对智能家居的推广,非常重要。没有她,老百姓估计不会使用。   好了,现在有了“智能冰箱”和它的驱动程序,SHM就可以使用它的SHDD来与冰箱交互了,并且是使用TCPIP协议通信。但... 查看详情

第一个不支持即插即用的nt式helloworld驱动

1.安装好驱动包2.编写源代码Sources文件和makefile文件##源代码/*********************************文件名称:Driver.h*作者:左飞*完成日期:2016-9-4*********************************/#pragmaonce//保证头文件只被编译一次#ifdef__cplusplusextern"C"//兼容C代码{ 查看详情

即插即用开源在线客服系统——ppmessage

PPMessage是一个开源的在线客服平台。PPMessage能够帮助你在第一时间与你的客户建立联系,开发人员可以非常容易的将PPMessage集成到你的网站或者iOS、Android的应用中。PPMessage的前端后端都是开源的,后端全部基于Python,简洁高效... 查看详情

分享一个即插即用的私藏缓动动画js小算法

二、即插即用的缓动小算法原理如下:假设要从数值A变化到数值B,如果是线性运动,则每次移动距离是一样;如果是缓动,每次移动距离不一样。那如何才能不一样呢?很简单,按比例移动就可以。例如:每次移动剩余距离的... 查看详情

如何让即插即用的 WPF 应用程序创建 SQL 数据库? [关闭]

】如何让即插即用的WPF应用程序创建SQL数据库?[关闭]【英文标题】:HowtomakeaplugandplayWPFappcreateaSQLdatabase?[closed]【发布时间】:2020-11-2212:22:15【问题描述】:我目前正在学习WPF,目的是为朋友制作一个简单的应用程序。此应用程... 查看详情

即插即用安全验证模块-使用pam模块(代码片段)

可插入式验证模块(PAM)。可插入式验证木块。应用程序调用libpam函数来验证和授权用户。libpam基于应用程序的PAM配置文件做检测。可以通过libc在NSS中检查。共享的,动态可配置代码。文档:/usr/share/doc/pam-<version>/#man-kpam_... 查看详情

type-c领夹式麦克风方案,即插即用,外围简单兼容性优秀

TYPE-C领夹式麦克风方案,即插即用,外围简单兼容性优秀的芯片-LDR6028结构示意图单接手机(由手机往外输出电压给板子工作)1、概述LDR6028SOP8是乐得瑞科技针对USBType-C标准中的Bridge设备而开发的USB-CDRP接口USBPD通... 查看详情

linuxtogo:制作随身携带、即插即用的linux系统

...USB驱动器中启动并运行?下面我将教大家制作随身携带、即插即用的Linux操作系统。(把当前系统移植到移动硬盘上)为什么需要这个功能呢?硬件:软件:Linux发行版自带的工具如gpartedgrubcp制作Linux启动盘的制作分为以下几个... 查看详情

数据可视化python热力图(seaborn.heatmap)(代码片段)

Python数据可视化-热力图热力图cmapcenterannotannot_kwsfmtlinewidthslinecolorxticklabelsyticklabelsmask热力图应用热力图以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。热力图可以显示不可点击区域发生的事情。城市... 查看详情

空间数据可视化:3.空间热力图

1.powermap 对于热力图它跟空间柱状图是差不多的,也是空间位置+value值;如果只有空间位置,可能求的是密度图,就是我们之前用python中的seaborn做的两个维度的密度图,其实就是热力图的意思;两个维度的密度图就是热力图&... 查看详情

r使用热力图(heatmap)可视化数据集(代码片段)

R使用热力图(heatmap)可视化数据集R使用热力图(heatmap)可视化数据集#安装、加载包install.packages(\'RNHANES\')library(RNHANES)library(tidyverse)******************************************************************************Warningmes 查看详情

r语言ggplot2可视化热力图(heatmap)自定义配置图例标签为百分比进行热力图颜色渐变显示(legendtodisplaypercentagesign)

R语言ggplot2可视化热力图(heatmap)、自定义配置图例标签为百分比进行热力图颜色渐变显示(legendtodisplaypercentagesign)目录 查看详情