作者:Ren Jie Tan
编译:ronghuaiyang
如果你做过PASCAL Visual Object Classes (VOC)和MS Common Objects in Context (COCO)挑战,或者涉足过信息检索和重识别(ReID)的项目,那么你可能非常熟悉一个叫做mAP的度量。
mAP的Wikipedia定义:
其中Q为集合中的查询数量,AveP(q)为给定查询q的平均精度(AP)。
这个公式本质上告诉我们的是,对于给定的查询q,我们计算它对应的AP,然后所有这些AP得分的平均值会给我们一个单独的数字,称为mAP,它量化了我们的模型在查询方面的性能有多好。
这个定义让(像我一样的)刚开始从事这个领域的人感到困惑。我的问题是这组查询是什么?AP是什么意思?它只是精度的平均值吗?
本文希望解决这些问题,并为物体检测和信息检索任务计算mAP。本文还将探讨为什么mAP是用于信息检索和物体检测任务的合适且常用的度量标准。
精确率和召回率是判断给定分类模型性能的两个常用指标。要理解mAP,我们首先需要检查精确率和召回率。
给定分类类别的精确率,即正预测值,表示为真阳性(TP)与预测阳性总数的比值。公式如下:
同样,给定分类类别的召回率,即真阳性率或灵敏度,定义为TP与ground truth真阳性率之和的比值。公式如下:
仅通过查看公式,我们就可以怀疑,对于给定的分类模型,其精确率和召回率性能之间存在权衡。如果我们使用神经网络,这种平衡可以通过模型的最终层softmax阈值来调整。
为了提高精确度,我们需要减少FP的数量,这样做会减少召回率。同样地,通过减少FN的数量会增加我们的召回率,降低我们的精确度。通常对于信息检索和物体检测案例,我们希望我们的精度很高(我们的预测阳性值为TP)。
准确度和召回率通常与其他指标一起使用,如accuracy、F1-score、specificity又名真负率(TNR)、ROC等。
然而,当决定一个模型在信息检索或物体检测任务中是否表现良好时,所有这些度量都失败了。这就是mAP发挥作用的地方!
需要注意的是,用于物体检测和信息检索任务的mAP的计算略有不同。下面几节将演示如何计算和一些关于为什么要这样做的讨论。
计算AP
信息检索中的一个典型任务是用户向数据库提供查询,并检索与查询非常相似的信息。现在让我们用一个带有三个ground truth阳性(GTP)的示例来执行AP的计算。
附加术语:ground truth阳性是标记为阳性的数据。
我们将定义以下变量:
用户使用图像Q查询G
通过对每一幅带有Q的图像进行d(,)的计算,我们可以对G进行排序,得到G '。回忆一下精度的定义,现在我们将使用它来计算G '中的每张图像的AP。
使用GT=3,计算给定查询Q的AP
这个查询的总体AP是0.7。需要注意的是,由于我们知道只有三个GTP,所以AP@5就等于整个AP。一般的AP@k公式可以这样写:
其中GTP为查询的ground truth阳性总数,TP为查询到k时的真值阳性总数。
对于另一个查询Q,如果返回的G '排序为:
使用GT=3,计算给定查询Q的AP
在这种情况下,AP所做的是惩罚那些不能以TPs为主导对G '排序的模型。它提供了一个数字,能够基于评分函数d(,)量化排序的优劣。通过用总GTP除以精度和而不是除以G '的长度,可以更好地表示只有几个GTP的查询。
计算mAP
对于每个查询Q,我们可以计算一个对应的AP。用户可以对这个标记的数据库进行任意数量的查询。mAP只是使用的所有查询的平均值。
计算AP(Traditional IoU = 0.5)
交并比(IoU)
为了计算用于目标检测的AP,我们首先需要了解IoU。IoU由预测边界框与ground truth边界框的交面积与并面积之比给出。
IoU用于确定预测边界框(BB)是TP、FP还是FN。TN不被计算,因为每个图像中都假定有一个物体。让我们考虑下面的图像:
图片中,一个人和一匹马使用ground truth边界框进行标记
图像包含一个人和一匹马,以及它们对应的ground truth边界框。我们暂且不谈那匹马。我们在此图像上运行我们的物体检测模型,并收到一个人的预测边界框。传统上,如果IoU为> 0.5,我们将预测定义为TP。可能出现的情况如下:
True Positive (IoU > 0.5)
IoU的预测BB(黄色)和GT BB(蓝色)> 0.5具有正确的分类
False Positive
有两种可能的情况,BB将被视为FP:
举例说明不同的场景,预测的BB(黄色)将被视为FP
False Negative
当预测的BB的IoU > 0.5,但分类错误时,预测的BB为FN。
FN BB作为预测的类是一匹马而不是一个人
精确率/召回率曲线(PR曲线)
通过正式定义TP、FP和FN,我们现在可以计算出我们对整个测试集中给定类的检测的精度和召回率。每个BB都有它的置信级别,通常由它的softmax层给出,并用于对输出进行排序。注意,这与信息检索案例非常相似,只是我们没有使用相似函数d(,)来提供排名,而是使用了模型预测的BB的置信度。
插值精度
在绘制PR曲线之前,我们首先需要知道插值精度。插值精度p_interp在每个召回级别r上进行计算,取该r测量的最大精度。公式如下:
其中p (r)˜为在在召回率r˜上的测量精度。
他们插值PR曲线的目的是为了减少由于探测等级的微小变化而引起的“摆动”的影响。
有了这些,我们现在可以开始绘制PR曲线。考虑一个person类的例子,它有3个TP和4个FP。我们根据上述公式计算出相应的精度、查全率和插值精度。
以一个有3个tp和4个fp的样本为例绘制PR曲线的计算表。行对应于BB,按其各自的softmax置信度排序的人的分类。
从上述排名得到的精度-召回曲线
然后用PR曲线下的面积计算AP。这是通过将召回率平均分割为11个部分来实现的:{0,0.1,0.2,…,0.9,1}。我们得到如下结果:
计算mAP
用于物体检测的mAP是对所有类计算的AP的平均值。同样重要的是,对于某些论文,它们可以互换使用AP和mAP。
COCO提供了六种计算AP的方法。
其中三种方法是在对BB的iou使用不同的阈值:
对于主AP, 0.5:0.05:0.95表示从IoU = 0.5开始,以0.05为步长,增加到IoU = 0.95。这将导致在10个不同的阈值上进行AP的计算。平均值是为了提供一个单一的数字,奖励在定位方面做得更好的检测器。
剩下的三种方法是跨尺度计算AP:
AP ^small:小物体的AP:面积< 32²px
AP ^medium:中等物体的AP:32²px<面积< 96²px
AP^large:大物体的AP:面积> 96²px
这将允许更好地区分模型,因为一些数据集具有比其他数据集更多的小物体。
英文原文:https://towardsdatascience.com/breaking-down-mean-average-precision-map-ae462f623a52
请长按或扫描二维码关注本公众号