当缺少类时,在 PyTorch 中计算平均 IoU 的正确方法是什么?

问题描述 投票:0回答:1

我的用例与此示例几乎相同:

from torchmetrics import JaccardIndex
import torch

pred = torch.tensor([1, 2, 19, 17, 17])
target = torch.tensor([1, 2, 3, 17, 4])

jaccard = JaccardIndex(num_classes=21)

jaccard(pred, pred)
Out: tensor([0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
        0., 1., 0.])

当存在不存在的类时,如何正确计算 pred 和 target 之间的 mIoU?换句话说,我不希望它简单地将零分配给测试数据集中不存在的类。此外,只有当它确实是一个错误的预测时,我们才需要考虑零,而不是一个缺席的类。

python machine-learning deep-learning pytorch metrics
1个回答
0
投票

您可以在此处使用 DeepLabV3Plus 指标类。

    metric = StreamSegMetrics(n_classes)
    for batch_idx, _ in enumerate(self.loader_val.Loader):
        metric.update(label_trues, label_preds) # update every iterations

    metrics_out = metric.get_results()
© www.soinside.com 2019 - 2024. All rights reserved.