语义分割中求miou代码模板

本文详细介绍了使用PyTorch进行图像分类,并通过混淆矩阵和IoU计算来评估模型性能。通过softmax函数预测概率分布,然后找到最大值对应的真实类别,生成混淆矩阵,进一步计算每个类别的IoU和整体的平均IoU (mIoU)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章 https://www.jianshu.com/p/42939bf83b8a

import torch
import numpy as np
import matplotlib.pyplot as plt

def fast_hist(a, b, n):
    """
    生成混淆矩阵
    a 是形状为(HxW,)的预测值
    b 是形状为(HxW,)的真实值
    n 是类别数
    """
    # 确保a和b在0~n-1的范围内,k是(HxW,)的True和False数列
    a = a.numpy()
    b = b.numpy()
    k = (a >= 0) & (a < n)
    # 横坐标是预测的类别,纵坐标是真实的类别
    return np.bincount(a[k].astype(int) + n*b[k], minlength=n ** 2).reshape(n, n)

def per_class_iou(hist):
    """
    hist传入混淆矩阵(n, n)
    """
    # 因为下面有除法,防止分母为0的情况报错
    np.seterr(divide="ignore", invalid="ignore")
    # 交集:np.diag取hist的对角线元素
    # 并集:hist.sum(1)和hist.sum(0)分别按两个维度相加,而对角线元素加了两次,因此减一次
    iou = np.diag(hist) / (hist.sum(1) + hist.sum(0) - np.diag(hist))
   
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值