补充 其他资料

一文搞懂map值



英文全称:mean Average Precision

AP(平均精度)是衡量目标检测算法好坏的常用指标,在Faster R-CNN,SSD等算法中作为评估指标。
AP等于recall值取0-1时,precision值的平均值。你现在没听懂没关系,它实际上非常简单,我们用一个例子来说明。但在此之前,我们将首先快速回顾准确度(Precision),召回率(recall)和IoU这三个概念。


文章目录

  • 补充 其他资料
  • 一文搞懂map值
  • Precision & recall
  • IOU(Intersection over union)
  • AP
  • Interpolated AP(插值AP)
  • AP (Area under curve AUC)
  • COCO MAP


Precision & recall

Precision:衡量你的模型预测准确度。即预测的数目中正确的百分比,比如你预测100个图片是苹果,其中80个真的是苹果,那么你的Precision为0.8

recall:召回表明你找到所有的苹果的数目。例如,总共有100张苹果图片,你成功找到其中50张,那么你的recall为0.5

他们的定义如下:

深度学习中map表示什么_目标检测

假如我们以预测癌症为例子,情况如下:

深度学习中map表示什么_目标检测_02

IOU(Intersection over union)

IoU表示2个形状之间的重叠情况。我们用它来衡量我们预测的边界与标签的(真实物体边界)重的程度。在一些数据集中,我们认为预测值与标签IOU大于0.5为预测正确,小于0.5为预测错误,这表明我们的模型通常需要一个预定义的IOU值。

深度学习中map表示什么_map_03

AP

让我们创建一个简单的例子用于演示AP是怎么计算出来的。在此示例中,整个数据集仅包含5个苹果。我们收集所有图像中针对苹果的所有预测,并根据预测的置信水平按降序排列。第二列表示预测是否正确。在此示例中,如果IoU≥0.5,则预测是正确的。

深度学习中map表示什么_map_04

按照这个逻辑,我们的前三行被认为预测值是苹果。
那么

Precision = 2/3 = 0.67。
recall = 2/5 = 0.4

随着我们降低预测排名,recall值会增加。然而,Precision具有锯齿形图案 - 它随着误报而下降并且再次以真正的正面上升。

深度学习中map表示什么_coco map_05

让我们根据recall值绘制Precision值,以查看这种锯齿形图案。

深度学习中map表示什么_map_06

平均精度(AP)的一般定义是以上锯齿形所包含的面积:

深度学习中map表示什么_coco map_07

Precision和recall总是在0和1之间。因此,AP也在0和1之间。在为对象检测计算AP之前,我们通常首先平滑锯齿形图案,如绿色线条所示。

深度学习中map表示什么_目标检测_08

在图形上,在每个召回级别,我们将每个Precision值替换为该recall值右侧的最大Precision值。

深度学习中map表示什么_目标检测_09

因此橙色线转换为绿线,曲线将单调减少而不是锯齿形图案。对于排名的微小变化,计算出的AP值将不那么可疑。在数学上,我们用召回的精度值ȓ替换任何召回的最大精度≥ȓ。

深度学习中map表示什么_voc map_10

Interpolated AP(插值AP)

PASCAL VOC是一种流行的物体检测数据集。对于PASCAL VOC挑战,如果IoU≥0.5,则预测为正。此外,如果检测到同一对象的多个检测,则将第一个检测为正数,而将其余检测为负数

在Pascal VOC2008中,计算11点插值AP的平均值

深度学习中map表示什么_coco map_11

首先,我们将recall值从0分为1.0分为11分 - 0,0.1,0.2,…,0.9和1.0。接下来,我们计算这11个recall值的最大Precision值的平均值。

深度学习中map表示什么_map_12

在我们的例子中,AP =(5×1.0 + 4×0.57 + 2×0.5)/ 11

以下是更精确的数学定义。

深度学习中map表示什么_目标检测_13

当AP ᵣ变成非常小,我们可以假设其余的条款是零。也就是说,在召回达到100%之前,我们不一定要做出预测。如果可能的最大精度水平下降到可以忽略的水平,我们可以停止。对于PASCAL VOC中的20个不同类别,我们为每个类别计算AP,并为这20个AP结果提供平均值。

根据原始研究人员的说法,在计算AP时使用11个插值点的意图是:

以这种方式插入精度/召回曲线的意图是减少精确/召回曲线中“摆动”的影响,这是由于示例排名的微小变化引起的。

然而,这种插值方法是一个近似值,它有两个问题。它不太精确。其次,它失去了测量低AP方法差异的能力。因此,PASCAL VOC在2008年之后采用了不同的AP计算。

AP (Area under curve AUC)

对于后来的Pascal VOC竞赛,只要最大Precision值下降,VOC2010-2012就会以所有独特的召回值(r 1,r 2,…)对曲线进行采样。通过这种改变,我们在去除之字形后测量精确回忆曲线下的确切面积。

深度学习中map表示什么_目标检测_14

不需要近似或插值。我们不是采样11个点,而是每当它下降时采样p(rᵢ)并将AP计算为矩形块的总和。

深度学习中map表示什么_深度学习中map表示什么_15

该定义称为曲线下面积(AUC)。如下所示,由于插值点不能覆盖精度下降的位置,因此两种方法都会发散。

深度学习中map表示什么_map_16

COCO MAP

最新的研究成果倾向于只在COCO数据集上面进行检测。在COCO mAP中,在计算中使用101点内插AP定义,在COCO mAP中,在计算中使用101点内插AP定义。对于COCO,AP是多个IoU的平均值(考虑正匹配的最小IoU)。AP @ [。5:.95]对应于IoU的平均AP,从0.5到0.95,步长为0.05。对于COCO竞赛,AP是80个类别的平均超过10个IoU级别(AP @ [。50:.05:.95]:从0.5到0.95开始,步长为0.05)。以下是为COCO数据集收集的一些其他指标。

深度学习中map表示什么_深度学习中map表示什么_17

And, this is the AP result for the YOLOv3 detector.

深度学习中map表示什么_目标检测_18

在上图中,AP @ .75表示IoU = 0.75的AP。

mAP(平均精度)是AP的平均值。在某些情况下,我们计算每个类的AP并对其进行平均。但在某些情况下,它们意味着同样的事情。例如,在COCO上下文中,AP和mAP之间没有区别。以下是COCO的直接引用:

AP是所有类别的平均值。传统上,这称为“平均精度”(mAP)。我们不区分AP和mAP(以及AR和mAR),并假设从上下文中可以看出区别。

在ImageNet中,使用AUC方法。因此,即使它们在测量AP中遵循相同的原理,精确的计算也可能根据数据集而变化。幸运的是,开发工具包可用于计算此指标。