平均精度(Average Precision,mAP)是一种常用的用于评估目标检测模型性能的指标。在目标检测任务中,模型需要识别图像中的不同目标,并返回它们的边界框(bounding box)和类别。mAP用于综合考虑模型在不同类别上的准确度和召回率。
基本知识
IOU (Intersection Over Union)是一种基于Jaccard Index的度量,用于评估两个边界框之间的重叠。它需要一个真实边界框和一个预测的边界框。
通过IOU,可以判断检测是否有效或无效。IOU由预测边界框与地面真实边界框的重叠面积除以两者的并集面积得到:
这里的Bp是预测框,Bgt是真实的边框
下图显示了真实边界框(绿色)和检测到的边界框(红色)之间的IOU。
指标使用的一些基本概念:
- TP(True Positive):真正例,表示模型正确地将正样本分类为正样本。也就是模型预测为正样本且实际上是正样本的数量。
- FP(False Positive):假正例,表示模型错误地将负样本分类为正样本。也就是模型预测为正样本但实际上是负样本的数量。
- FN(False Negative):假反例,表示模型错误地将正样本分类为负样本。也就是模型预测为负样本但实际上是正样本的数量。
- TN(True Negative):真反例,表示模型正确地将负样本分类为负样本。也就是模型预测为负样本且实际上是负样本的数量。
一般情况下我们的指标都是如下计算的:
精确率(Precision):精确率衡量模型在预测为正样本的样本中的正确率,计算公式为 TP / (TP + FP)。
召回率(Recall):召回率衡量模型正确检测出的正样本占所有正样本的比例,计算公式为 TP / (TP + FN)。
上面就是我们常见的一些指标的基本知识,下面开始介绍关于用于目标检测的指标。
Precision-Recall Curve
精确率-召回率曲线(Precision-Recall Curve)是用于评估分类模型在不同阈值下精确率和召回率之间的权衡关系的一种可视化工具。它通过绘制不同阈值下的精确率和召回率之间的曲线来展示模型的性能。
精确率-召回率曲线以召回率为横轴,精确率为纵轴,将不同阈值下的精确率和召回率连接起来形成一条曲线。通常,模型在较高的阈值下可以实现更高的精确率,但召回率较低;而在较低的阈值下,模型可以实现较高的召回率,但精确率较低。精确率-召回率曲线的形状可以显示模型在不同精确率和召回率之间的平衡点。
通过观察精确率-召回率曲线,可以根据具体问题的需求选择合适的阈值,从而在精确率和召回率之间进行权衡。例如,在一些情况下,更高的精确率可能更重要,而在另一些情况下,更高的召回率可能更为关键。
平均精度 Average Precision
另一种比较目标检测器性能的方法是计算Precision x Recall曲线下面积(AUC)。由于AP曲线通常是上下曲折的曲线,比较同一图中的不同曲线(不同的检测器)通常不是一件容易的事情,因为曲线往往会频繁地相互交叉。这就是为什么平均精度(AP),一个数值度量,也可以帮助我们比较不同的探测器。在实践中,AP是0到1之间所有召回值的精度平均值。
从2010年开始,PASCAL VOC挑战计算AP的方法发生了变化。PASCAL VOC执行的插值使用所有数据点,而不是像他们的论文中所说的那样只插值11个等间隔的点。所以这里我们将两种实现方式都使用代码实现:
11点插值
11点插值通过在一组11个等间隔召回水平[0,0.1,0.2,…,1]上平均精度来总结Precision x Recall曲线的形状:
使用插值后的精确率-召回率曲线计算mAP。通过对插值后的曲线进行积分,计算每个类别的AP,然后对所有类别的AP进行平均,得到mAP值。通过平滑精确率-召回率曲线,更准确地评估模型的性能。它提供了更稳定和可靠的指标。
所有点插值
不是只在11个等间距的点上插值,你可以通过所有的点n进行插值
AP不再使用仅在几个点上观察到的精度,而是通过插值每个级别的精度来获得,取召回值大于或等于r+1的最大精度。这样我们就可以计算出曲线下的估计面积。
精确率-召回率曲线是通过在不同阈值下计算离散点得到的。然而,这些离散点可能不足以完整地描述模型的性能。为了得到更平滑的曲线和更准确的mAP值,可以对曲线上的所有点进行插值。对精确率-召回率曲线上的每个点进行插值处理。插值方法可以使用各种技术,例如线性插值、多项式插值或样条插值。插值的目的是在两个已知点之间估计出新的点,以获得曲线上更密集的数据点,使得曲线更平滑。
样例
我们可视化一个例子来更好地理解插值平均精度的概念。考虑以下结果:
一共有7幅图像,其中15个真值对象由绿色边界框表示,24个检测对象由红色边界框表示。每个检测到的对象都有一个置信水平,并由字母(a,B,…,Y)标识。
下表显示了具有相应置信度的边界框。最后一列将检测标识为TP或FP。如果IOU≥30%,则认为是TP,否则为FP。通过查看上面的图像,可以大致判断检测到的是TP还是FP。
在一些图像中,有多个检测重叠一个基本真值(图2、3、4、5、6和7)。对于这些情况,具有最高IOU的预测框被认为是TP(例如,在图1中,“E”是TP,而“D”是FP,因为E和基本真值之间的IOU大于D和基本真值之间的IOU)。该规则适用于PASCAL VOC 2012度量:“例如,单个对象的5次检测(TP)被计算为1次正确检测和4次错误检测”。
Precision x Recall曲线是通过计算累积TP或FP检测的Precision和Recall值来绘制的。所以需要根据检测的置信度对结果进行排序,然后计算每个累积检测的精度和召回率,如下表所示(注意,对于召回率计算,分母项“Acc TP + Acc FN”或“TP”恒定为15,因为无论检测如何,真值是恒定的):
第二行的示例计算:Precision = TP/(TP+FP) = 1/2 = 0.5, Recall = TP/(TP+FN) = 1/15 = 0.066
绘制精度和召回值,我们有以下精度x召回曲线:
前面已经说乐,有两种不同的方法来测量插值平均精度:11点插值和插值所有点。下面我们对它们进行比较:
11点插值
11点插值平均精度的思想是在一组11个召回水平(0,0.1,…,1)上平均精度。内插精度值取召回值大于其当前召回值的最大精度,如下所示:
通过应用11点插值,我们得到:
所有点的插值
通过插值所有点,平均精度(AP)可以解释为精度x召回率曲线的近似AUC。这样做的目的是减少曲线波动的影响。
从上图可以看出,AUC可以分为A1、A2、A3、A4 4个区域:
计算总面积,得到:
可以看到两种插值方法的插值结果略有不同,结果分别为24.56%和26.84%。
总结
mAP是目标检测中常用的评估指标,它能够综合考虑模型在不同类别上的性能,因此能够更全面地评估目标检测模型的准确度和召回率。较高的mAP值表示模型在目标检测任务上的性能更好。
mAP的计算过程通常包括以下步骤:
- 预测边界框生成:模型通过对输入图像进行推理,生成一系列预测的边界框,每个边界框包括边界框的位置和预测的目标类别。
- 真实边界框标注:对于每个图像,标注人员手动标记真实的边界框和对应的目标类别。
- IoU计算:对于每个预测的边界框,计算其与所有真实边界框的重叠度量,常用的度量是交并比(Intersection over Union,IoU)。
- 置信度排序:将预测的边界框按照其置信度(confidence)进行排序,置信度表示模型对该边界框预测为正确目标的程度。
- 精度-召回率曲线绘制:从置信度最高的边界框开始,计算每个置信度水平下的精度和召回率,并绘制精度-召回率曲线。
- 平均精度计算:通过对精度-召回率曲线进行积分,计算平均精度(AP)。对于每个类别,AP表示在该类别下,从最高置信度到最低置信度的所有置信度水平上的平均精度。
- mAP计算:将所有类别的AP进行平均,得到mAP。
在计算mAP时,有两种常见的插值方法:
- 11点插值mAP:选择11个特定的召回率值点进行插值,使曲线更平滑,然后计算AP和mAP。
- 所有点插值mAP:对精确率-召回率曲线上的所有点进行插值,使曲线更平滑,然后计算AP和mAP。
这些方法能够更全面、准确地评估目标检测模型在不同类别上的性能,帮助研究人员和从业者更好地理解和比较模型的表现。插值方法能够提供更平滑、更具细节的曲线,提供更准确的性能评估。
作者:Rafael Padilla