Metrics-for-object-detection

Metrics for object detection

这是Github上的md文件的翻译,原文链接:https://github.com/rafaelpadilla/Object-Detection-Metrics#create-the-ground-truth-files

Motivation动机

该项目的动机是当前关于对象检测问题,缺乏相同的评估度量。
虽然在线竞赛使用他们自己的指标来评估对象检测的任务,但只有一些提供了参考代码片段来计算检测到的对象的准确性。如果想要使用与竞赛提供的数据集不同的数据集来评估其工作的研究人员仍然需要实施他们自己的指标版本。有时,错误或不同的实现可能会产生不同且有偏见的结果。为了在不同方法之间进行可信赖的基准测试,有必要拥有一个灵活的实现,无论使用何种数据集,每个人都可以使用。

在下面的主题中,您可以找到不同比赛和作品中使用的最常用指标的概述,以及展示如何使用我们的代码的示例。

Different competitions, different metrics不同的比赛,不同的标准

  • PASCAL VOC Challenge提供了一个Matlab脚本,用于评估检测到的对象的质量。参赛者可以使用提供的Matlab脚本在提交结果之前测量其检测的准确性。当前PASCAL VOC物体检测挑战所使用的当前指标是Precision x Recall曲线和Average Precision。 PASCAL VOC Matlab评估代码从XML文件中读取地面实况边界框,如果要将其应用于其他数据集或特定情况,则需要更改代码。尽管Faster-RCNN等项目实施了PASCAL VOC评估指标,但还需要将检测到的边界框转换为其特定格式。 Tensorflow框架还具有PASCAL VOC指标实施。

  • COCO检测挑战使用不同的度量来评估不同算法的对象检测的准确性。您可以在官网找到文档,解释用于表征COCO上对象检测器性能的12个指标。本次比赛提供Python和Matlab代码,因此用户可以在提交结果之前验证他们的分数,还必须将结果转换为竞赛所要求的格式。

  • Google Open Images数据集V4竞赛还使用500个类的平均精度(mAP)来评估对象检测任务。

  • ImageNet对象本地化挑战为每个图像定义一个错误,考虑真实值(ground truth)与检测到的框之间的类别和重叠区域(IOU)。总误差计算为所有测试数据集图像中所有最小误差的平均值。以下是有关其评估方法的更多详细信息。

Important definitions重要的定义

Intersection Over Union(IOU)

Intersection Over Union(IOU)是基于Jaccard Index的度量,它评估两个边界框之间的重叠。它需要一个真实值(ground truth)边界框(BgtB_{gt})和一个预测的边界框(BpB_{p})。通过应用IOU,我们可以判断检测是否有效(真阳性true positive)或不是(假阳性false positive)。

IOU由预测的边界框和真实值边界框之间的重叠区域除以它们之间的联合区域:

Metrics-for-object-detection

下图说明了地面实况边界框(绿色)和检测到的边界框(红色)之间的IOU。

Metrics-for-object-detection

True Positive, False Positive, False Negative and True Negative

下面是一些用于这个标准的基本概念:

  • True Positive(TP): 正确的检测。 检测的IOU \geq阈值
  • False Positive(FP): 错误的检测。检测的IOU \leq 阈值
  • False Negative(FN): 该检测当没检测出来的。
  • True Negative(TN): 目标检测中不使用。这将代表纠正错误检测。
    在对象检测任务中,有许多可能的边界框在图像中不应被检测到。
    因此,TN将是所有可能未被检测到的边界框(图像中有如此多的可能框)。
    这就是指标不使用它的原因。

阈值:取决于定制的标准,通常设为50%, 75% 或 95%。

Precision精确率

精度是模型仅识别相关对象的能力。它是正确预测的百分比,由下式给出:

Metrics-for-object-detection

Recall召回率

召回率是模型找到所有相关案例的能力(所有真实边界框)。它是在所有相关基础事实中检测到的真阳性百分比,并由下式给出:

Metrics-for-object-detection

度量标准

下面介绍在目标检测中比较流行的度量标准。

Precision x Recall 曲线

Prescision x Recall曲线是评估对象检测器性能的好方法,因为通过绘制每个对象类的曲线可以改变置信度。如果一个特定类别的物体探测器的精度随着召回的增加而保持高水平,则被认为是好的,这意味着如果改变置信度阈值,精度和召回率仍然很高。识别良好物体探测器的另一种方法是寻找一种只能识别相关物体的探测器(0误报=高精度),找到所有真实对象(0假阴性=高召回)。

较差的物体探测器需要增加检测到的物体的数量(增加误报=较低的精度)以便检索所有地面实况对象(高召回率)。这就是为什么Precision x Recall曲线通常以高精度值开始,随着召回率的增加而减少。您可以在下一主题(平均精度)中看到Prevision x Recall曲线的示例。
这种曲线由PASCAL VOC 2012挑战使用,可在我们的实施中使用。

Average Precision

比较物体检测器性能的另一种方法是计算Precision x Recall曲线的曲线下面积(AUC: the area under the curve )。由于AP曲线通常是上下曲线,因此在同一图中比较不同的曲线(不同的探测器)通常不是一件容易的事 - 因为曲线往往会频繁地相互交叉。这就是为什么平均精度(AP),一个数值度量,也可以帮助我们比较不同的探测器。实际上,AP是在0和1之间的所有召回值的平均精度。

从2010年开始,通过PASCAL VOC挑战计算AP的方法发生了变化。目前,由PASCAL VOC挑战执行的插值使用所有数据点,而不是如他们的论文中所述仅插入11个等间隔点。由于我们想要重现它们的默认实现,我们的默认代码(如进一步所见)遵循它们最近的应用程序(插入所有数据点)。但是,我们也提供11点插值方法。

11-point interpolation

11点插值试图通过平均一组11个等间距召回级别[0,0.1,0.2,…,1]的精度来总结Precision x Recall曲线的形状:

Metrics-for-object-detection

这里:

Metrics-for-object-detection

p(rˇ)p(\check{r})​是在召回率为rˇ\check{r}​时测试的精确率。

不是使用在每个点观察到的精度,而是通过仅在11个级别内插精度来获得AP,取召回值大于rr时最大的精确率。

Interpolating all points

您可以通过以下方式插入所有点,而不是仅在11个等间距点进行插值:

Metrics-for-object-detection

当:

Metrics-for-object-detection

p(rˇ)p(\check{r})是在召回率为rˇ\check{r}时测试的精确率。

在这种情况下,不是使用仅在几个点处观察到的精度,而是通过在每个级别内插精度来获得AP,rr获取其召回值大于或等于r+1r+1的最大精度。
这样我们就可以计算出曲线下的估计面积。

为了使事情更清楚,我们提供了一个比较两种插值的例子。

例子

一个例子有助于我们更好地理解插值平均精度的概念。考虑下面的检测:

Metrics-for-object-detection

有7个图像,其中15个地面实况对象由绿色边界框表示,24个检测到的对象由红色边界框表示。每个检测到的对象都具有置信水平,并由字母(A,B,…,Y)标识。

下表显示了具有相应置信度的边界框。最后一列将检测标识为TP或FP。在此示例中,如果IOU为30%,则考虑TP,否则为FP。通过查看上面的图像,我们可以粗略地判断检测是TP还是FP。

Metrics-for-object-detection

在一些图像中,存在多于一个与地面实况重叠的检测(图像2,3,4,5,6和7)。对于这些情况,采用具有最高IOU的检测,丢弃其他检测。此规则由PASCAL VOC 2012度量标准应用:“例如,单个对象的5个检测(TP)被计为1个正确检测和4个错误检测”。

通过计算累积的TP或FP检测的精度和召回值来绘制精确x回忆曲线。为此,首先我们需要通过置信度对检测进行排序,然后我们计算每个累积检测的精度和召回率,如下表所示:

Metrics-for-object-detection

绘制精度和召回值,我们有以下Precision x Recall曲线:

Metrics-for-object-detection

如前所述,有两种不同的方法可以测量插入的平均精度:11点插值和插值所有点。
下面我们在它们之间进行比较:

计算11点插入法

11点插值平均精度的想法是在一组11个召回级别(0,0.1,…,1)处平均精度。插值精度值是通过采用其召回值大于其当前调用值的最大精度获得的,如下所示:

Metrics-for-object-detection

通过应用11点插值法,我们有:

Metrics-for-object-detection

Metrics-for-object-detection

Metrics-for-object-detection

#####计算在所有点中执行的插值

通过内插所有点,平均精度(AP)可以解释为精确x调用曲线的近似AUC。目的是减少曲线中摆动的影响。通过应用之前给出的方程,我们可以获得这里将要展示的区域。我们还可以通过查看从最高(0.4666)到0(从右到左看图)的回忆来直观地获得插值精度点,并且当我们减少召回时,我们收集最高的精度值如下图所示:

Metrics-for-object-detection

看一下上图,我们可以将AUC划分为4个区域(A1,A2,A3和A4):

Metrics-for-object-detection

计算总面积,我们有AP:

Metrics-for-object-detection

有:

Metrics-for-object-detection

Metrics-for-object-detection

Metrics-for-object-detection

Metrics-for-object-detection

Metrics-for-object-detection

Metrics-for-object-detection

Metrics-for-object-detection

两种不同插值方法之间的结果略有不同:分别通过每点插值和11点插值分别为24.56%和26.84%。

参考

  1. https://blog.****.net/u014061630/article/details/82316849