1.mAP
2.IoU
IoU也就是交并比,也称为 Jaccard 指数,用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框,用于指定目标图像的位置以及预测的边界框来自模型的位置。
下图是真值边界框与预测边界框的直观示例,其目标是计算这两个边界框之间的交并比。
图1 检测停车标志,预测的边界框以红色表示,而真实边界框以绿色表示
交并比的计算非常简单,只需将边界框之间的重叠区域除以并集面积即可。
IoU 分数是标准化的(因为分母是并集区域面积),范围从 0.0 到 1.0。此处,0.0 表示预测边界框和真值边界框之间没有重叠,而 1.0 是最优值,这意味着预测的边界框与真值边界框完全重叠。
IoU> 0.5 通常被认为是“良好”的预测。反之, IoU < 0.5 视为预测不合格,予以舍弃。
通常我们并不关心边界框的 (x, y) 坐标与Ground Truth边界框的 (x, y) 坐标的精确匹配,但我们希望确保预测的边界框尽可能接近 — 也就是交集可以考虑这一点。
上图中,与真实边界框严重重叠的预测边界框比重叠较少的边界框具有更高的IoU。这使得交并比IoU成为评估自定义目标检测器的绝佳指标。尽管如此,IoU的简单计算还是会存在各种各样的局限,具体需进一步参阅IoU的各种扩展,本文不涉及这方面的讨论。
3.精确率、召回率和置信度
3.1 TP/FP/TN/FN
首先定义四个新术语:
- 真正例 (TP):模型将正输入样本(即 )正确预测为正的次数。
- 误报 (FP): 模型错误地将负样本(即 )预测为正样本的次数。
- 真反例(TN):模型将负样本(即 )正确预测为负样本的次数。
- 假反例 (FN):模型错误地将正例输入(即 )预测为反例的次数。
要了解 mAP,我们先来看看精确率与召回率。召回率是真正率,即在所有实际正例中,预测出的有多少正确正例。精确率是预测正率,即在所有预测正例结果中,预测出的有多少是正确正例。
为了找出最佳的精确率和召回率,进一步可以使用 F1 分数通过取它们的谐波平均值将精确率和召回率合并到一个指标中。较高的 F1 分数意味着精确率和召回率较高,而较低的 F1 分数表示精确率和召回率(或较低的精确率和召回率)之间的高度不平衡。
3.2 检测环境下的TP/FP/TN/FN
为了进一步了解目标检测上下文中的精确率和召回率,以及 IoU 和置信度分数如何发挥作用。下面分开讨论四种情况
首先,置信度分数反映了框包含对象的可能性(对象性分数)和边界框的准确性。但是,如果该单元格中不存在对象,则置信度分数应为零。
1)检测到真正例TP
仅当模型进行的检测满足以下两个条件时,才被视为真正例:
- 预测边界框的置信度分数应大于置信度阈值(超参数),这表示我们已找到要查找的目标
- 预测边界框和真实边界框之间的 IoU 应大于 IoU 阈值。
而上述两个条件意味着,不仅物体被检测到,而且在正确的位置被检测到。下图显示了 IoU 和置信度为 的真正例检测。
2)检测被视为误报
- 如果模型检测到具有高置信度分数的目标,但该目标不存在(无真实值),则 IoU 将等于零。
- 另一种情况可能是 IoU 小于 IoU 阈值。
- 如果预测的边界框与真实边界框完全一致,但预测框的类标签不正确。
3)真反例TN
这通常不是必需的,主要是因为它不是精确率和召回率计算的一部分。
检测中的真反性可能是置信度分数小于置信度阈值,并且 IoU(预测框和真实框)小于 IoU 阈值。在物体检测中,可能会有很多真反例,因为背景覆盖的图像区域(真反例)比物体本身多。
4)假反例FN
如果存在一个目标,但模型无法检测到它,则为假反性。
3.3 数据集中mAP计算
对于mAP的计算,主要针对两种数据集展开具体讨论。
Pascal VOC
Pascal(VOC2012) 是一项计算机视觉挑战赛,即在现实场景中识别来自各种视觉目标类的对象。这是一项监督学习比赛,其中提供了标记的Ground Truth图像。该数据集有 20 个目标类,如人、鸟、猫、狗、自行车、汽车、椅子、沙发、电视、瓶子等。
PASCAL VOC 的历史可以追溯到 2005 年,当时数据集仅包含四类:自行车、汽车、摩托车和人。它共有 1578 张图像,包含 2209 个带标注的目标。
下图显示了 20 个类中每个类的示例图像,正如我们所看到的,第一行倒数第二张图像中有几把(三)把椅子。
PASCAL VOC 数据集中描述所有 20 个类别的示例图像
VOC2012 数据集由 11,530 张图像和 27,450 个感兴趣区域 (ROI)标注目标组成,并带有 train/val 拆分。27,450 ROI 是指整个数据集中的边界框,因为每个图像可以有多个目标区域或 ROI。因此,与图像相比,ROI数量是图像数量的2 倍以上。
为了计算 mAP,首先需要计算每个类的 AP。下面给出两个例子详细说明之。
a) 考虑以下图像,其中包含特定类的ground truths(绿色)和 bbox 预测(红色)。
bbox的详细信息如下:
在此示例中,如果 IoU > 0.5 视为TP,否则 FP。现在,根据置信度分数对图像检测结果排序。注意,如果单个object有多个检测,则具有最高 IoU 的检测被视为 TP,其余为 FP,如下图所示。
在 VOC 指标中,召回率Recall定义为在所有真实正例中预测出的正确正例(ranked above a given rank)的比例。精确率Precision是在所有预测正例(ranked above a given rank)中来自真正例的比例。
P = Cumulative TP / ( Cumulative TP + Cumulative FP )
R = Cumulative TP / Total Ground Truths
因此,在 Acc (accumulated) TP 列的定义为,从上到下遇到的 TP 总数,并对 Acc FP 执行类似定义,也就是累计的FP的总数。现在,对于P4计算精确率与召回率:
2)再考虑下面一个例子
下图中有5种不同类别的物(含人),通过预测给出结果。
Ground truths
YOLOv5 Nano 预测结果
YOLOv5 Nano 对上图的预测结果有如下五类。
对于不同的置信度设置,得到的TP与FP结果不一致。具体来说,置信度越高,预测的可信度越高,那么相应的不太确定的结果视为反例。如下展示了置信度对预测结果的影响:
按照上述Cumulative TP、FP对Precision与Recall的定义,得到不同置信度下计算结果:
然后绘制这些精确率和召回率值,以获得 PR(精确召回率)曲线。PR 曲线下的面积称为平均精度(AP)。PR 曲线遵循一种锯齿形模式,因为召回率绝对增加,而精确率总体上随着零星上升而降低。
AP 总结了精确召回率曲线的形状,在 VOC 2007 中,它被定义为一组 11 个等距召回水平 [0,0.1,...,1](0 到 1,步长为 0.1)的精确值的平均值,而不是 AUC(需要积分方法得到)。
每个召回率水平 r 对应的的精确率 是通过取相应召回率取值右侧,也就是超过 r 的召回率中最大的精确率取值,表达形式如下:
即在 11 个等距召回点 [0:0.1:1] 处取右边的最大精确率值,并取它们的平均值得到 AP。
APdog = 1/11 * ( Sum of 11 interpolated Precision values )
= 1/11 * (1 + 4*0.71 + 6*0)
= 0.349
= 34.9%
类似地,计算得到 Average Precision(AP) 对 person, teddy, sheep, truck的不同结果汇总。
mAP = 1/n * sum(AP), 其中 n 是总类别数.
上述共有5类,得到 mAP 为
mAP = 1/5 * (0.349 + 0.545 + 0 + 1 + 0.5)
= 0.4788
= 47.88 %
然而,从 VOC 2010 开始,AP 的计算发生了变化。
通过单调递减的P-R曲线来计算平均精确率,也就是对应上述的任意召回率r右侧,,设置最大的精确率值为p,然后通过数值积分取值p位置与对应PR曲线下的面积。
即上述给定橙色的 PR 曲线,计算所有召回点右侧的最大精度,从而获得绿色的新曲线。现在,在绿色曲线下使用积分进行 AUC,这就得到AP。与 VOC 2007 的唯一区别是,我们不只考虑了 11 点,还考虑了所有点。
现在,我们有每个类(对象类别)的 AP,平均精度 (mAP) 是所有目标类别的平均 AP。
对于VOC中的分割挑战,以分割精度(使用IoU计算的每像素精度)作为评价标准,其定义如下:
COCO
Microsoft Common Objects in Context (MS COCO) 是 2014 年推出的大规模目标检测、分割和字幕数据集,借助使用用户界面的广泛众包数据。该数据集包含 80 个目标类别的图像,在 328k 图像中具有 250 万个标记实例。
下图显示了 COCO 数据集中标有实例分割的示例图像。
COCO 还具有出色的用户界面,可以探索数据集中的图像。例如,用户可以从 80 个类中选择缩略图;它会将它们作为标签放在搜索栏中,当搜索时,它将显示数据集中带有这些标签(类)的所有图像,如下图所示。
此外,当显示生成的图像时,所有类(超过搜索的类)都显示为缩略图。也就是可以通过进一步单击这些缩略图来可视化与这些类相关的分割掩码来使用它。
通常,与 VOC 一样,IoU > 0.5 的预测被视为真正例预测。这意味着 IoU 0.6 和 0.9 的两个预测将具有相等的权重。因此,某个阈值会在评估指标中引入偏差。解决此问题的一种方法是使用一系列 IoU 阈值,并计算每个 IoU 的 mAP,并取它们的平均值来获得最终的 mAP。
请注意,COCO 使用 [0:.01:1] ,R=101 召回阈值进行评估。
在 COCO 评估中,IoU 阈值范围为 0.5 至 0.95,步长为 0.05 表示为 AP@[.5:.05:.95]。
IoU=0.5 和 IoU=0.75 等固定 IoU 的 AP 分别写为 AP50 和 AP75。
除非另有说明,否则 AP 和 AR 在多个交并比 (IoU) 值上取平均值。具体来说,我们使用 10 个 IoU 阈值 .50:.05:.95。这与传统不同,在传统中,AP 以 .50 的单个 IoU 计算(对应于我们的指标一个).对 IoUs 取平均会对具有更优的检测器有更好的倾向性。
AP 是所有类别的平均值。传统上,这被称为“平均精度”(mAP)。我们没有区分 AP 和 mAP(以及 AR 和 mAR),并假设从上下文中可以清楚地看出区别。
额外补充:通常,平均值以不同的顺序进行(最终结果是相同的),在 COCO 中,mAP 也称为 AP,即
- 步骤1:对于每个类,计算不同 IoU 阈值下的 AP,并取其平均值以获得该类的 AP。
- 步骤2:通过对不同类的 AP 求平均值来计算最终 AP。
AP 实际上是一个平均、平均、平均的精度,也就是三次平均,
第1次平均在计算,
第2次平均在计算,
第3次平均在计算,
4.结论
- PascalVOC2007 在 PR 曲线上使用 11 个召回点。
- PascalVOC2010–2012 在 PR 曲线上使用(所有点)曲线下面积 (AUC)。
- MS COCO 在 PR 曲线上使用 101 个召回点以及不同的 IoU 阈值。
5.参考资料
- COCO evaluation metrics
- VOC2007 metrics
- VOC2012 metrics
- Object detection metrics
- mAP (mean Average Precision) for Object Detection
- Evaluation metrics for object detection and segmentation: mAP (kharshit.github.io) *
- Mean Average Precision (mAP) in Object Detection *
- Mean Average Precision (mAP) Using the COCO Evaluator - PyImageSearch *
- Mean Average Precision (mAP) Using the COCO Evaluator - PyImageSearch *