如何计算mAP

文章摘选自多篇文章,仅用于学习,在此表示感谢,若有侵权请联系,感谢


mAP: mean Average Precision, 即各类别AP的平均值

AP: PR曲线下面积,其实是在0~1之间所有recall值的precision的平均值。

PR曲线: Precision-Recall曲线

Precision: TP / (TP + FP)

Recall: TP / (TP + FN)


如何绘制P-R曲线

Precision-Recall曲线,简称P-R曲线,其横轴是召回率,纵轴是精确率。


如何计算AP

要计算mAP必须先绘出各类别PR曲线,计算出AP。

1)积分求解
由于每个图片计算出来的P-R很大可能不是一条连续的曲线,如果使用积分的方式计算会造成和多问题

2)插值求解

但通常情况下都是使用估算或者插值的方式计算:

(1)估算计算方式approximated average precision

(2)插值计算方式Interpolated average precision

如何计算mAP_第1张图片

(3)插值方式进一步演变


VOC采取的两种插值方式

在VOC2010以前,只需要选取当Recall >= 0, 0.1, 0.2, ..., 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值。在VOC2010及以后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值。

如何计算mAP_第2张图片

1)11-point interpolation(VOC07,10之前)

11-point interpolation通过平均一组11个等间距的Recall值[0,0.1,0.2,...,1]对应的Precision来绘制P-R曲线.

计算precision时采用一种插值方法(interpolate),即对于某个recall值r,precision值取所有recall>=r中的最大值(这样保证了p-r曲线是单调递减的,避免曲线出现抖动)

如何计算mAP_第3张图片

2)Interpolating all points(VOC10之后)

不再是对召回率在[0,1]之间的均匀分布的11个点,而是对每个不同的recall值都计算一个ρinterp(r),然后求平均,r取recall>=r+1的最大precision值。

如何计算mAP_第4张图片

你可能感兴趣的:(如何计算mAP)