关于AP, MAP的一些理解

涉及概念:

平均精度(AP:Average Precision)、平均精度均值(mAP:Mean Average Precision)、查准率(precision)、查全率(recall),IOU(Intersection over Union)、置信度阈值(confidence thresholds)

查准率(precision)和查全率(recall,召回率):

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为

真正例(true positive):预测为1,实际也为1

假正例(false positive):预测为1,实际也为0

真反例(true negative):预测为0,实际也为0

假反例(false negative):预测为0,实际也为1

四种情形,令TP(真正例)、FP(假正例)、TN(真反例)、FN(假反例)分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数。分类结果的“混淆矩阵”(confusion matrix)如表所示:

查准率P和查全率R分别定义为:

实际上(单类别):预测为反例0则不框

查准率Precision为所有预测为1中正确预测的比例,也就是框对的/所有预测框数目;

查全率Recall为所有真实框中被成功预测出1的比例,也就是框对的/所有真框数目

一个例子为:P=“挑出来的西瓜中有多少比例是好瓜”,R=“所有好瓜中有多少比例被挑出来”。

查全率和查准率是一对矛盾的度量。一般来说查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

平均精度(AP)和平均精度均值(mAP)

Mean Average Precision(mAP)通常在信息检索和目标检测中作为评估标准使用。在这两个领域中mAP的计算方法不同,这里主要介绍目标检测中的mAP。

目标检测中定义的mAP最先在PASCAL VisualObjects Classes(VOC) challenge中使用。至少有两个变量用来决定precison和recall,分别是IOU(Intersection over Union)和置信度阈值(confidence thresholds)。IOU(交并比)是一个简单的几何度量,可以容易地被标准化。另一方面置信度也影响模型,会改变precison _recall曲线形状。因此PASCAL VOC组织提出了一种方法来解释这个变化。

AP即为求precison_recall曲线下方的面积,即为平均精度。2010年前后计算方法不同而已。2010前时11点插值平均精度,算出来是曲线下近似面积;2010年后新方式采用在所有点插值,算出来时更加精确的曲线下方面积(因为可以减小曲线震荡摇摆的影响)。

我们需要以模型不可知的方式来作为评估模型的标准。论文中提出一种称为Average Precision(AP)的方法来计算。对给定的任务和类别,precision_recall曲线以一种方法的排序输出来计算。Recall被定义为给定序列上所有正样本的部分;precison被定义为正类别序列上的所有样本。

AP概括了precision_recall曲线的形状,被定义为在一组11个等间距recall水平[0, 0.1, 0.2,…,1]上的precision平均值(这种方法比较旧,英文叫做11-point interpolated average precision)。这意味着我们选择11个不同的置信度阈值(这决定序列)。置信度阈值的设定需要使recall值为0,0.1,0.2,…,1。这使得mAP可以纵览整个precison_recall曲线(尽量让Recall值增长的同时保持Precision的值在一个很高的水平。而性能比较差的分类器可能会损失很多Precision值才能换来Recall值的提高)。

当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, ..., M/M),对于每个recall值r,我们可以计算出对应(r' > r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。

MAP就是所有AP值的平均值。

Approximated Average precision(近似平均精度):

对每一种阈值分别求(Precision值)乘以(Recall值的变化情况),再把所有阈值下求得的乘积值进行累加

Interpolated average precision(插值平均精度):

不再使用当系统识别出k个图片的时候Precision的值与Recall变化值相乘。而是使用在所有阈值的Precision中,最大值的那个Precision值与Recall的变化值相乘。

上述两种求AP方法,前者与精度曲线(precision_recall)很接近,后者算出来比前者值高,一般重要的论文都使用后者,因为可以减轻抖动。PASCAL VOC CHALLENGE 就用的后者。

下面是几个在比较mAP值时需要记住的几个重点:

1、 mAP需要计算完整个数据集;

2、 虽然模型输出的绝对量化是难以解释的,但mAP可以通过一个很好的相关性标准来帮助我们。当我们在流行的公开数据集上计算这个标准时,它可以很容易地用来比较目标检测的新旧方法。 3、 根据类别在训练集上的分布方式,AP值可能在某些类别上从很高(这有很好的训练数据)变化到很低(对数据很少或不好的类别)。所以你的mAP可能是合适的,但你的模型可能对某些类别非常好而对某些类别非常差。因此当分析你的模型结果时,观察独立类别的AP是明智的。这些值可能作为添加更多训练样本的指示器。

参考链接:

https://github.com/rafaelpadilla/Object-Detection-Metrics

https://www.zhihu.com/question/53405779/answer/419532990

https://blog.csdn.net/zdh2010xyz/article/details/54293298

关键看参考链接1,但是其中关于新的voc计算方法举例中,作者为了计算简单省略了一些点,实际应该是全用。下面这个图是连接2最后的计算,为正确方式。

猜你喜欢

转载自blog.csdn.net/m0_37857151/article/details/83186637
今日推荐