为什么我们在深度学习中使用mAp评分来评估物体探测器?

Sha*_*ana 5 object-detection deep-learning

在这个Tensorflow检测模型动物园中,他们提到了不同检测体系结构的COCO mAp评分.他们还表示,mAp得分越高,准确度越高.什么是不明白的是如何计算?它可以获得的最高分是多少?为什么这个mAp评分与数据集的数据不同?

esh*_*ima 18

要了解MAP(平均平均精度),我首先要从AP(平均精度)开始.

假设我们正在搜索一朵花的图像,我们为我们的图像检索系统提供一张玫瑰(查询)的样本图片,我们确实得到了一堆排名图像(最可能是最不可能的).通常并非所有这些都是正确的.因此,我们计算每个正确返回图像的精度,然后取平均值.


例:

如果我们返回的结果是花的图像1, 0, 0, 1, 1, 1在哪里1,而0不是,那么每个正确点的精度是:

Precision at each correct image = 1/1, 0, 0, 2/4, 3/5, 4/6
Summation of these precisions = 83/30
Average Precision = (Precision summation)/(total correct images) = 83/120
Run Code Online (Sandbox Code Playgroud)

边注:

本节提供了每个正确图像精度计算背后的详细说明,以防您仍然对上述分数感到困惑.

为了便于说明,我们1, 0, 0, 1, 1, 1将其存储在一个数组中results[0] = 1,results[1] = 0等等.

totalCorrectImages = 0, totalImagesSeen = 0, pointPrecision = 0

公式pointPrecisiontotalCorrectImages / totalImagesSeen

results[0], totalCorrectImages = 1, totalImagesSeen = 1pointPrecision = 1

因为results[1] != 1,我们忽略了它totalImagesSeen = 2 && totalCorrectImages = 1

因为results[2] != 1,totalImagesSeen = 3 && totalCorrectImages = 1

results[3], totalCorrectImages = 2, totalImagesSeen = 4pointPrecision = 2/4

results[4], totalCorrectImages = 3, totalImagesSeen = 5pointPrecision = 3/5

results[5], totalCorrectImages = 4, totalImagesSeen = 6pointPrecision = 4/6


一种简单的解释方法是产生一个零和一个组合,它们将提供所需的AP.例如,0.5的AP可以具有类似的结果0, 1, 0, 1, 0, 1, ...,其中每一个第二图像是正确的,而AP的0.333具有0, 0, 1, 0, 0, 1, 0, 0, 1, ...其中每一个第三图像是正确的.

对于AP来说0.1,每10个图像都是正确的,这绝对是一个糟糕的检索系统.另一方面,对于上面的AP 0.5,我们将在顶部结果中遇到比错误更正确的图像,这绝对是一个好兆头.

MAP只是AP的扩展.您只需获取一定数量查询的所有AP分数的平均值即可.上述AP分数的解释也适用于MAP.MAP范围从0到100,越高越好.

维基百科上的 AP公式

维基百科上的 MAP公式

归功于此博客

编辑I:

在对象检测方面应用相同的概念.在这种情况下,您将计算每个类的AP.这由给定类的精确回忆曲线下的面积给出.从这一点开始,您会发现他们的平均值达到了mAP.

有关详细信息,请参阅2012 Pascal VOC Dev Kit的 3.4.1和4.4节.相关文章可以在这里找到.