获得YOLOv8系列热力图的方法

1.配置相关环境,这里就不过赘述了

2.导入以下代码

3.主要参数修改如下:

weight: 'xxxxxx',  训练出来的权重文件路径
cfg: 'xxxxxx',  训练权重对应的yaml配置文件
device: 'cuda:0', 代表使用一张显卡
method: 'GradCAM',   GradCAMPlusPlus, GradCAM, XGradCAM , 使用的热力图库文件不同的效果不一样可以多尝试
layer: 'model.model[9]',   对应网络结构中的某某层
backward_type': 'all',   class, box, all
conf_threshold': 0.0000001, (我这里设置的很低,可以自行修改) # 0.6  # 置信度阈值,有的时候你的进度条到一半就停止了就是因为没有高于此值的了
ratio: 0.02  # 0.02-0.1

最底下切换检测图片的路径 和保存文件夹的位置

4.单击运行即可

目前应该只适用于YOLOv8 其他系列运行此代码可能会报错


import warnings

warnings.filterwarnings('ignore')
warnings.simplefilter('ignore')
import torch, yaml, cv2, os, shutil
import numpy as np

np.random.seed(0)
import matplotlib.pyplot as plt
from tqdm import trange
from PIL import Image
from ultralytics.nn.tasks import DetectionModel as Model
from ultralytics.utils.torch_utils import intersect_dicts
from ultralytics.utils.ops import xywh2xyxy
from pytorch_grad_cam import GradCAMPlusPlus, GradCAM, XGradCAM
from pytorch_grad_cam.utils.image import show_cam_on_image
from pytorch_grad_cam.activations_and_gradients import ActivationsAndGradients


def letterbox(im, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32):
    # Resize and pad image while meeting stride-multiple constraints
    shape = im.shape[:2]  # current shape [height, width]
    if isinstance(new_shape, int):
        new_shape = (new_shape, new_shape)

        # Scale ratio (new / old)
    r = min(new_shape[0] / shape[0], new_shape[1] / shape[1])
    if not scaleup:  # only scale down, do not scale up (for better val mAP)
        r = min(r, 1.0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值