我正在执行一个图像分割任务,我使用的数据集只有地面真实值,但没有边界框或多边形。我有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我怎么用这些来算欠钱?PS:我使用的是python3和pytorch API
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
p3rjfoxz1#
所以我才发现jaccard_similarity_score被认为是IOU。所以解决方法很简单,from sklearn.metrics import jaccard_similarity_score jac = jaccard_similarity_score(predictions, label, Normalize = True/False)来源链接:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.jaccard_score.html#sklearn.metrics.jaccard_score
from sklearn.metrics import jaccard_similarity_score jac = jaccard_similarity_score(predictions, label, Normalize = True/False)
am46iovg2#
您可以为给定类创建二进制Map。
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个概率图。然后,每个像素的最大概率被视为最大概率类。
2条答案
按热度按时间p3rjfoxz1#
所以我才发现jaccard_similarity_score被认为是IOU。
所以解决方法很简单,
from sklearn.metrics import jaccard_similarity_score jac = jaccard_similarity_score(predictions, label, Normalize = True/False)
来源链接:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.jaccard_score.html#sklearn.metrics.jaccard_score
am46iovg2#
您可以为给定类创建二进制Map。
请注意,这种表示是通过为每个类创建二进制概率来创建的。因此,模型为4个类创建4个概率图。然后,每个像素的最大概率被视为最大概率类。