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

在语义分割任务中,评估模型性能的一个重要指标是混淆矩阵。混淆矩阵包含了模型预测结果与真实标签之间的关系,其中真负例(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 - NE[ak] - JNE[ak]).float()

代码解释:

  1. batchshape 存储了每个批次的样本数量。2. TP, FP, FN 分别代表真阳性、假阳性和假阴性样本数量。3. NEJNE 应该是在代码中其他地方定义的变量,用于处理特定情况,例如预测结果和真实标签都为空的情况。4. TN 通过从总样本数量中减去所有其他类别(TP,FP,FN,NE[ak],JNE[ak])来计算得出。

注意:

  • 这段代码假设您正在处理二分类语义分割任务。* 您需要根据您的实际情况调整代码,例如类别数量, NE 和 JNE 的定义。

希望这段代码能够帮助您在PyTorch语义分割任务中计算混淆矩阵中的真负例!

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

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

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