PyTorch语义分割: 计算混淆矩阵中的TN

在语义分割任务中,评估模型性能的一个重要指标是混淆矩阵。混淆矩阵可以帮助我们理解模型在不同类别上的表现,包括真阳性(TP)、假阳性(FP)、假阴性(FN)和真阴性(TN)。

本篇博客将重点介绍如何在PyTorch语义分割代码中计算TN。

**代码示例:**pythonwith torch.no_grad(): for i, b in enumerate(batch(dataset, batch_size)):

    imgs = np.array([k[0] for k in b]).astype(np.float32)        true_masks = np.array([k[1] for k in b])

    imgs = torch.from_numpy(imgs)        imgs = imgs.unsqueeze(1)        true_masks = torch.from_numpy(true_masks)

    pre_masks_eval = torch.zeros(true_masks.shape[0],14,256,256)        true_masks_eval = torch.zeros(true_masks.shape[0],14,256,256)        batchshape = true_masks.shape[0]

    batch_dice = torch.zeros(14).cuda()        if gpu:            imgs = imgs.cuda()            true_masks = true_masks.cuda()            net.cuda()

    output_img = net(imgs)        input = output_img.cuda()        pre_masks = input.max(1)[1].float() #索引代表像素所属类别的数字        for ak in range(14):            if ak == 0:                continue            pre_masks_eval[:,ak] = (pre_masks==ak)            true_masks_eval[:,ak] = (true_masks==ak)            premasks = pre_masks_eval[:,ak].view(true_masks.shape[0],-1)            truemasks = true_masks_eval[:,ak].view(true_masks.shape[0],-1)

        intersection = premasks * truemasks            TP = intersection.sum(1)            FP = premasks.sum(1) - TP            FN = truemasks.sum(1) - TP

        # 计算每个类别的TN            TN = (batchshape - TP - FP - FN).sum()

        # 可以将每个类别的TN存储在一个列表或张量中,例如:            # TN_per_class[ak] = TN

计算所有类别的TNtotal_TN = TN.sum()

代码解释:

  1. 计算每个类别的TN: 在计算TP、FP和FN之后,我们可以使用以下公式计算每个类别的TN: TN = (batchshape - TP - FP - FN).sum() 其中 batchshape 是batch size,TPFPFN 是对应类别的真阳性、假阳性 和 假阴性。

  2. 计算所有类别的TN: 要计算所有类别的TN,只需将每个类别的TN加起来即可: python total_TN = TN.sum()

总结:

通过以上步骤,我们可以在PyTorch语义分割代码中轻松计算TN。这将有助于我们更全面地评估模型性能,并更好地理解模型在不同类别上的表现。

PyTorch语义分割: 计算混淆矩阵中的TN

原文地址: https://www.cveoy.top/t/topic/fRUi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录