使用Detectron2评估Perimage模型

2024-05-19 03:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经使用Detectron2训练了一个自定义图像分割模型,并且我已经成功地对一批图像运行了推理和模型评估,主要遵循了创建者提供的Colab Notebook中的指南

现在,我还想为测试数据集中的每个图像而不是整个批次收集评估指标(AP或mAP)。为此,我修改了inference_on_dataset函数,将原始代码的最后一位从

results = evaluator.evaluate()

进入

for img_id in img_ids:
    result = evaluator.evaluate(img_ids = [img_id,])
    res_dict[img_id] = result

其中img_ids是要计算的图像的列表res_dict是初始为空的字典。 这样,推理应该只对整批图像运行一次,而对每个图像进行评估,并将结果保存在字典中

for循环的前两次迭代一切正常,但在第三次迭代时,出现以下错误

AssertionError: A prediction has category_id=4, which is not available in the dataset.

但是这些预测都是正确的,并且在正确的ID范围(0-3)内,我不明白4是从哪里来的。此外,如前所述,问题只出现在第三次迭代中,而且奇怪的是,它与图像无关(如果我交换列表中图像的顺序,同一图像在前两个位置上不会出现错误)。也许每次迭代时都必须以某种方式重置评估过程,但我找不到任何函数来重置(除非我也清除了预测)

关于如何对测试数据集的每个图像递归运行评估,有什么想法吗?谢谢大家!


Tags: 函数in模型图像ididsimgfor

热门问题