PyTorch语义分割:计算混淆矩阵中的TN
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()
代码解释:
batchshape存储了每个批次的样本数量。2.TP,FP,FN分别代表真阳性、假阳性和假阴性样本数量。3.NE和JNE应该是在代码中其他地方定义的变量,用于处理特定情况,例如预测结果和真实标签都为空的情况。4.TN通过从总样本数量中减去所有其他类别(TP,FP,FN,NE[ak],JNE[ak])来计算得出。
注意:
- 这段代码假设您正在处理二分类语义分割任务。* 您需要根据您的实际情况调整代码,例如类别数量, NE 和 JNE 的定义。
希望这段代码能够帮助您在PyTorch语义分割任务中计算混淆矩阵中的真负例!
原文地址: http://www.cveoy.top/t/topic/fR2K 著作权归作者所有。请勿转载和采集!