【问题标题】:How to calculate mAP (mean average precision) for the whole dataset?如何计算整个数据集的 mAP(平均精度)?
【发布时间】:2020-08-19 12:48:42
【问题描述】:

我是计算机视觉的新手,我有一个简单的问题,在网上找不到任何答案。我正在使用 Matterport 的 mask rcnn 实现对一些图像执行二进制分类,并且我有一些额外的代码行来计算每个图像的 mAP。现在我想知道,如果我可以将每个图像计算的 mAP 相加,然后除以该数字以获得整个数据集的 mAP,如果不能,我该如何计算整体 mAP? (最好使用 mask rcnn 模型的实用程序)

【问题讨论】:

  • 2 个步骤 - 1. 对于每张图像,计算不同召回阈值点的平均精度 - 在数学上,我们将其称为 - 每张图像的“精确召回曲线下面积”的积分。 2. 以上所有图像的平均值,即(总精度之和)/(图像数量)如果您可以将输出格式作为样本共享会更清楚。
  • @Prachi 感谢您的回复。这比我想象的要方便得多,但我不明白它为什么会起作用。你能详细说明一下吗,或者给我介绍一些教科书?因为我认为应该为所有图像的所有实例计算精度和召回率,然后曲线下的区域将产生最终的 mAP,对吧?
  • 这里的实例是什么“跨所有图像的实例”?
  • @Prachi 通过实例我指的是检测到的任何对象。因此,例如在这篇文章 (medium.com/@jonathan_hui/…) 下,假设我们有相同数量的对象,但分为两个图像。如果我计算每张图像的mAP,然后对所有图像进行平均,或者将所有检测结果相加,对它们进行排名,然后计算mAP,结果会相同吗?
  • 好的,所以在对象检测中,结果会在图像级别与相应的检测到的边界框一起报告。因此,如果一个图像有 5 个 Bbox,它将在预测数据集中有行,并且为每个 bbox 单独计算精确召回率。这里的解释可以帮助stats.stackexchange.com/questions/260430/…

标签: machine-learning average-precision


【解决方案1】:

是的,你可以这样做

np.sum(recall)/num_test
np.sum(precision)/num_test

num_test 是测试图像的数量

只需将训练和测试数据分开即可。

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多