YOLOV8 GradCam 热力图可视化.

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

先来看一下效果图

YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
这个是由官方权重yolov8m实现的。

操作教程 哔哩哔哩视频

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

YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
简单来说就是直接复制到你的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

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

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文件夹不为空,其会先清空文件夹。

YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
运行输出如下:
YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
运行后其会输出你的结构,你可以根据这个结构去选择你的层号,然后还会有一行:

	Transferred 475/475 items

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

QA:

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

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

4. 查看输出

打开设定的保存路径result文件夹下:
YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
在这里,你可以挑选效果比较好的出来进行展示。

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

YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
这个实验主要是给大家看下,不同的layer,不同的backward_type,不同的method出来的效果都不一样,有些可能效果很差,需要自行调整测试,热力图这个东西是比较玄学的,有些结果会比较乱,有些结果会比较可观,有些图它可能就是热力图效果不好也有可能。

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

发表回复