从分割掩模中如何找到IoU?

9
我正在进行图像分割任务,使用的数据集只有真实值但没有边界框或多边形。
我有2个类(忽略背景的0),输出和真实标签都在数组中,如下:
预测--/---标签 0|0|0|1|2 0|0|0|1|2 0|2|1|0|0 0|2|1|0|0 0|0|1|1|1 0|0|1|1|1 0|0|0|0|1 0|0|0|0|1
如何从这些计算IoU?
PS:我正在使用带有pytorch API的Python3。
2个回答

8

1

您可以为给定的类创建二进制地图。

    def calculate_iou(self, gt_mask, pred_mask, class=1):
    if threshold:
        pred_mask = (pred_mask == class) * 1
        gt_mask = (gt_mask == class) * 1

    overlap = pred_mask * gt_mask  # Logical AND
    union = (pred_mask + gt_mask)>0  # Logical OR
    iou = overlap.sum() / float(union.sum())
    return iou

请注意,这种表示方式是通过为每个类别创建二进制概率来创建的。因此,模型为4个类别创建了4个概率图。然后,每个像素的最大概率被视为最大概率类别。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接