如何解决使用 Detectron2 对每个图像模型进行评估
我已经使用 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 来自哪里。此外,正如已经说过的,问题只出现在第三次迭代中,而且奇怪的是,它与图像无关(如果我交换列表中图像的顺序,如果它在第一个图像中,则完全相同的图像不会出错两个位置)。也许评估过程必须在每次迭代时以某种方式重置,但我找不到任何函数来这样做(除非我也清除了预测)。
关于如何对测试数据集的每个图像递归运行评估有什么想法吗?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。