一、前言

  本篇主要介绍Map的计算,主要参考以下两篇文章

https://blog.csdn.net/hsqyc/article/details/81702437

https://blog.csdn.net/zhou4411781/article/details/105839357

二、TP、TN、FP、FN

  这4个值由以下图就很好理解了

目标检测学习(2)map计算

TP:实际为真,预测为真

TN:实际为假,预测为假

FP:实际为假,预测为真

FN:实际为真,预测为假

三、Accuracy、Precision、Recall

准确率 Accuracy = (TP+TN)/(TP+TN+FP+FN) , 所有样本中,预测对的概率

精确类 Precision = TP/(TP+FP),所有被预测为真的样本中,实际为真的概率

召回率 Recall = TP/(TP+FN) ,所有实际为真的样本中,被预测为真的概率,也叫查全率

四、Map的计算

Map为平均准确度均值的意思,实际ap计算为PR曲线下的面积

 对于目标检测,先了解IOU的定义,为基准框和预测框的覆盖面积比例,衡量两者的重合程度

目标检测学习(2)map计算

  此外,还有给出预测框的label、以及置信度阈值

  取定某个置信度阈值,某个label,则对该label的所有大于等于该阈值的预测框做统计,如果一个预测框IOU大于0.5,则为TP,否则为FP,若有基准框没被检测出,则该框为FN。故可计算Precision、Recall值

  通过取定多个阈值,可得到多组Precision、Recall值,可画出RP曲线,对曲线下的面积做统计则为AP,对所有label的AP取平均值,则可得到Map值

(1)voc2007的计算方法:

在计算AP时,首先要把结果按照置信度排序,公式如下:

目标检测学习(2)map计算

(2)voc2010的计算方法:

比起07年,10年以后的新方法是取所有真实的recall值,得到所有recall/precision数据点以后,计算recall/precision曲线下的面积,如以下PR曲线:

目标检测学习(2)map计算

a)07年的方法:我们选取Recall >={ 0, 0.1, …, 1}的11处Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0。AP = 5.5 / 11 = 0.5

b)VOC2010及以后的方法,对于Recall >= {0, 0.14, 0.29, 0.43, 0.57, 0.71, 1},我们选取此时Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0。计算recall/precision下的面积:AP = (0.14-0)x1 + (0.29-0.14)x1 + (0.43-0.29)x0.5 + (0.57-0.43)x0.5 + (0.71-0.57)x0.5 + (1-0.71)x0 = 0.5

计算出每个类别的AP以后,对于所有类别的AP取均值就得到mAP了。