mAP---评价目标检测模型
https://github.com/rafaelpadilla/Object-Detection-Metrics
写在开头:
(1) mAP总是在固定的数据集上计算
(2)它不是量化模型输出的绝对度量,但是是一个比较好的相对度量。当我们在流行的公共数据集上计算这个度量时,这个度量可以很容易的用来比较不同目标检测方法
(3)根据训练中类的分布情况,平均精度值可能会因为某些类别(具有良好的训练数据)非常高(对于具有较少或较差数据的类别)而言非常低。所以我们需要MAP可能是适中的,但是模型可能对于某些类非常好,对于某些类非常不好。因此建议在分析模型结果的同时查看个各类的平均精度,这些值也可以作为我们是不是需要添加更多训练样本的一个依据。
目标检测中的mAP是什么含义?
目标检测中衡量识别精度的指标是mAP(mean average precision)。多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积,mAP是多个类别AP的平均值。
在VOC2010以前,只需要选取当Recall >= 0, 0.1, 0.2, ..., 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值。在VOC2010及以后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值。
参见:The PASCAL Visual Object Classes Challenge 2012 (VOC2012) Development Kit
mAP定义及相关概念
- mAP: mean Average Precision, 即各类别AP的平均值
- AP: PR曲线下面积
- PR曲线: Precision-Recall曲线
- Precision: TP / (TP + FP),Precision是从已经预测为同一类别的样本抽样
- Recall: TP / (TP + FN),召回率(Recall)是从数据集的同一类的样本抽样
- TP: IoU>threshold的检测框数量(同一Ground Truth只计算一次)
- FP: IoU<=threshold的检测框,或者是检测到同一个GT的多余检测框的数量
- FN: 没有检测到的GT的数量
Precision
查准率(Precision)是针对预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。
Recall
召回率(Recall, 又称为 TPR)是针对原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。
一个例子帮助我们更好地理解mAP的概念:
7张图,15个真实框(绿色),24个检测到的框(红色),每个框有它的置信度,并给它从A开始定义
IOU的阈值为0.3,计算prdiction_box与gt_box的iou,大于阈值的为TP,小于的为FP.当一个gt_box有多个prediction_box相交时,此时选取IOU大的作为TP,其他为FP。
算出准确率和召回率
准确率(Precision)=TP/TP+FP=TP/all detections
召回率(recall)=TP/TP+TN=TP/all ground truths=TP/15
由置信度从大到小排列,Acc TP:累计的TP Acc FP:累计的FP
画出P-R曲线:
计算单标签图像分类的AP(average precision)(两种方式):
1.VOC2010前,我们选区Recall>=0,0.1,0.2,...,0.9,1的11处Percision的最大值
2.VOC2010及以后的方法,对于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,然后求对应曲线的面积。
mAP计算:多标签图像分类(Multi-label Image Classification)每一个类别都计算出AP,然后再计算AP的平均值就是mAP