mAP计算
1.precision与recall
首先看一下混淆矩阵:
对于某个类别,假设有N个detections对所有的检测结果按它们的confidence从大到小排序,然后依次取一个结果出来,这样每次计算precision时All detections都要加1,然后计算Precision,这样得到一个长度为N的序列;同样的,每去除一个结果,计算Recall,也得到一个长度为N的序列。
上面公式中的All detections表示该类的所有ground truth。
Precision 反映的是模型针对dataset中某一类预测正确的正样本(TP)数量占所有预测的样本数量比值;
Recall反映的是模型针对dataset中某一类的预测正确的正样本数量(TP)占ground truth数量的比值;
Precision 与Recall一般是反相关,即提高Precision会降低Recall,因此需要在两者之间选择一个折衷的办法;
Recall有一个特点,因为all ground truths是固定值,当TP增加时会提高Recall。当我们从all detections中一个一个取出样本时,Recall是不减的。
AP (average precision)
-
第一套标准(2007年)
根据recall值,可以将得到的长度为N的序列分成11段,[0,0.1,0.2,---,1];将precision序列中与其recall分段长度对应的部分内的最大值作为当前分段的precision代表值,这样得到11个值,最后把这11个数求平均值就作为我们的AP。
新方法
在实际应用中,我们不对其平滑操作来简化计算,对PR曲线上的每个点,Precision的值取该点右侧最大的Precision的值,结果如下图所示:蓝先为原始所有recall对应的precision,AP即黄线以下的面积之和。
mAP(mean average precison)
其实m就是mean均值的意思我们AP不是算个一个类别的吗,mAP就是把所有的类别的AP都算出来然后求个均值就可以了