自由Man

mAP-Mean Average Precision

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

计算mAP的github:https://github.com/Cartucho/mAP

1.IoU

就是交并比,衡量bounding-boxground Truth的重合程度。

2.TP、TN、FP、FN

True positives(TP):  被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数;

False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;

False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;

True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

在目标检测中:

TP:预选框检测检测正确,即IoU>=0.5的预选框

FP:预选框检测检测错误,即IoU<0.5的预选框

FN:未被检测到的ground Truth

TN:不使用。这将代表纠正错误检测。在目标检测任务中,有许多可能的边界框在图像中不应被检测到。因此,TN将是所有可能未被检测到的边界框(图像中有如此多的可能框),这就是指标不使用它的原因。

3.Precision&Recall

精度    :

召回率:

4.Precision-Recall curve

根据预测的结果对样例进行排序,本文使用置信度confidence作为预测结果,排在前面的是模型认为”最可能“是正例的样本,排在最后的则是模型认为”最不可能”是正例的样本。按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的精度和召回率。以精度为纵轴,以召回率为横轴,就可以获得“P-R曲线”。

在这里插入图片描述

P-R曲线是评估对象检测器性能的好方法,因为通过绘制每个对象类的曲线可以改变置信度。如果一个特定类别的物体探测器的精度随着召回的增加而保持高水平,则被认为是好的,这意味着如果改变置信度阈值,精度和召回率仍然很高。

5.Average Precision

AP是在0和1之间的所有召回值的平均精度。就是P-R曲线的曲线下面积。

由于曲线难以计算,所以我们采用11点插值法来求得,2012年后采用8点对应的Percision最大值,求取曲线面积即为AP值。

11点插值试图通过平均一组11个等间距召回级别[0,0.1,0.2,...,1]的精度来总结Precision x Recall曲线的形状:

其中:就是Percision对应点的最大值。

面积计算方法见下文。


mAP计算

有7个图像,其中15个ground-Truth绿色边界框表示,24个预选框红色边界框表示。每个检测到的对象都具有置信水平,并由字母(A,B,...,Y)标识。

1.计算出bounding-box与ground-Truth的IoU的值,利用阈值把预选框分为TP&FP

如果IOU>=30%,则考虑TP ,否则为FP。在一些图像中,存在多于一个与地面实况重叠的检测(图像2,3,4,5,6和7)。对于这些情况,采用具有最高IOU的检测,丢弃其他检测。“例如,单个对象的5个检测(TP)被计为1个正确检测和4个错误检测。

2.计算累计精度和召回率

这里:按置信度的从小到大,逐个把样本作为正例进行预测,则每次可以计算出当前的精度和召回率。

ground-Truth=15

3.绘制P-R曲线图

可以发现随着选定的样本越多,召回率一定会越高,而精度则呈下降趋势。如果一个特定类别的物体探测器的精度随着召回的增加而保持高水平,则被认为是好的。

4.计算AP值

11点插值平均精度的想法是在一组11个召回级别(0,0.1,...,1)处平均精度。插值精度值是通过采用其召回值大于其当前调用值的最大精度获得的,如下所示。即Recall=[0,0.1,0.2,...,0.9,1]的11处Percision的最大值:[1,0.6666,0.4285,0.4285,0.4285,0,0,0,0,0,0]。

面积法:

平均精度(AP)可以解释为P-R曲线的近似AUC(面积)。

Recall=[0,0.0666,0.1333,0.2,0.2666,0.3333,0.4,0.4666],选取Percision对应点的最大值:[1,1,0.6666,0.4285,0.4285,0.4285,0.4285,0.3043],然后求曲线的面积。

看一下上图,我们可以将AUC划分为4个区域(A1,A2,A3和A4):

计算总面积,我们有AP:

5.计算mAP

AP衡量的是对一个类检测好坏,mAP就是对多个类的检测好坏。就是简单粗暴的把所有类的AP值取平均就好了。比如有两类,类A的AP值是0.5,类B的AP值是0.3,那么mAP=(0.5+0.3)/2=0.4

总结:

1.根据IOU计算TP、FP

2.按照置信度大小进行排序

3.在不同置信度阈值下获得Precision和Recall,也就是通过累计TP和FP计算精度和召回率

4.绘制P-R曲线并计算AP值

5.计算mAP值


相关文章
mAP-Mean Average Precision2021年03月23日

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.5.2 Zero Theme By 爱墙纸

Copyright ZiYouMan.cn. All Rights Reserved. 蜀ICP备15004526号