我对如何计算 AP 或 mAP 值感到很困惑,因为似乎有很多不同的方法。我特别想获取对象检测的 AP/mAP 值。
我只知道:
召回率 = TP/(TP + FN),精度 = TP/(TP + FP)
例如,如果我只有 1 个类要评估,并说 500 个测试图像。每张测试图像可能有不同数量的预测(边界框建议),但每张图像只有一个真实边界框。
图 1:[类别,概率,x1,y1,x2,y2],[类别,概率,x3,y3,x4,y4],[类别,概率,x5,y5,x6,y6],[类别,概率, x7, y7, x8, y8], ...
图 2:[类别,概率,x1,y1,x2,y2],[类别,概率,x3,y3,x4,y4],...
. . . (等等)
*只是一个例子,我编的
我知道要获得 TP,我们必须找到每个预测的 IOU,并计算高于所选阈值(例如 0.5)的 IOU(如果我们有多个 IOU 高于阈值的预测,我们是否只计算一次并处理其他的作为FP?)。
这就是让我困惑的地方:
TP + FP = 为每张图像做出的预测数?
由于所有测试图像都没有底片,TP+FN = 500?
它是按图像计算的,还是按类别计算的?
有人可以让我知道根据我的示例获取 AP/mAP 的分步指南吗?我发现最模棱两可的部分是我们是按图像还是按班级(即一次全部 500 张图像)进行处理。
我发现的大多数指南/论文都非常针对信息检索。在这方面将不胜感激。
*注意:我正在一些自定义数据集上对其进行测试。我知道 PASCAL VOC 有一些代码可以做到这一点,但我想自己编写代码,根据我自己的数据定制。