mAP值解析
目标检测算法评价指标——mAP值
mAP值即为平均精度,是衡量目标检测算法优劣的常用指标。
AP(平均精度)是衡量目标检测算法好坏的常用指标,在Faster R-CNN,SSD等算法中作为评估指标。
AP等于recall值取0-1时,precision值的平均值。
Precision & Recall(查准率和查全率)
概念
Precision:衡量你的模型预测准确度。即预测的数目中正确的百分比。
例:你预测100个图片是苹果,其中80个真的是苹果,那么你的Precision为0.8
recall:召回表示预测正确的目标数量。
例:总共有100张苹果图片,你成功找到其中50张,那么你的recall为0.5
定义
以二分类结果为例:
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数。分类结果的“混淆矩阵”(confusion matrix)如表所示:
查准率P和查全率R分别定义为:
$ P = \frac{TP}{TP+FP}$ $R = \frac{TP}{TP+FN}$
一般来说查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
平衡点(BER):查准率=查全率时的取值,用来比较模型好坏.
交并比(IoU)
IoU是预测框与ground truth的交集和并集的比值。
为了计算precision和recall,与所有机器学习问题一样,我们必须鉴别出True Positives(真正例)、False Positives(假正例)、True Negatives(真负例)和 False Negatives(假负例)。
假设边界框对应的IoU大于某个阈值(一般来说,比较常用的IoU阈值是0.5),我们就可以说这个预测的边界框是对的,或者说可以被划分为TP中。反之如果IoU小于阈值,那么这个预测的边界框就是错的,或者说是一个FP。如果对于图像中某个物体来说,我们的模型没有预测出对应的边界框,那么这种情况就可以被记为一次FN。
- True Positive (TP): IOU>=阈值的检测框
- False Positive (FP): IOU<阈值的检测框
- False Negative (FN): 未被检测到的GT
- True Negative (TN): 忽略不计
对于每一个图片,ground truth数据会给出该图片中各个类别的实际物体数量。我们可以计算每个Positive预测框与ground truth的IoU值,并取最大的IoU值,认为该预测框检测到了那个IoU最大的ground truth。然后根据IoU阈值,我们可以计算出一张图片中各个类别的正确检测值(True Positives, TP)数量以及错误检测值数量(False Positives, FP)。
既然我们已经得到了正确的预测值数量(True Positives),也很容易计算出漏检的物体数(False Negatives, FN)。
AP值
定义
PR曲线下面积的近似,是一个0~1之间的数值,也可用来衡量模型的performance。
- PR曲线比较直观,但由于曲线的上下震荡,不方便比较不同模型的PR曲线
- AP是一个数字,模型的AP大,则模型更好,方便比较不同模型
计算方法
计算AP值,一般有两种方法:
11点插值法:
选取当Recall >= 0, 0.1, 0.2, …, 1共11个点时的Precision最大值,AP是这11个Precision的平均值,此时只由11个点去近似PR曲线下面积。
$$
AP = \frac{1}{11}\sum_{r\in(0,0,,1…1)}\rho_{interp(r)}
$$$$
\rho_{interp(r)} = max_{\widetilde{r}:\widetilde{r}\geq{r}}\rho(\widetilde{r})
$$所有点插值法:
针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值:
$$
\sum_{r=0}^{1}(r_{n+1}-r_n)\rho_{interp}(r_{n+1})
$$$$
\rho_{interp(r)} = max_{\widetilde{r}:\widetilde{r}\geq{r}}\rho(\widetilde{r})
$$由于此方法用了所有点去近似PR曲线下面积,计算的AP比11点插值法更准确。
mAP(mean Average Precision, 即各类别AP的平均值)
对于各个类别,分别按照上述方式计算AP,取所有类别的AP平均值就是mAP。这就是在目标检测问题中mAP的计算方法。可能有时会发生些许变化,如COCO数据集采用的计算方式更严格,其计算了不同IoU阈值和物体大小下的AP.
在评测时,COCO评估了在不同的交并比(IoU)[0.5:0.05:0.95]共10个IoU下的AP,并且在最后以这些阈值下的AP平均作为结果,记为mAP@[.5, .95]。
而在Pascal VOC中,检测结果只评测了IOU在0.5这个阈值下的AP值。因此相比VOC而言,COCO数据集的评测会更加全面:不仅评估到物体检测模型的分类能力,同时也能体现出检测模型的定位能力。因此在IoU较大如0.8时,预测框必须和真实的框具有很大的重叠比才能被视为正确。