目标检测中的评估指标:PR曲线、AP、mAP

简介: 目标检测中的评估指标:PR曲线、AP、mAP

1.precision & recall


规定IOU > 0.5表示物体被检测出来

以下面一个猫狗的例子介绍precision与recall,任务找其中狗

image.png

我们将被正确识别的狗,称为True positives。我们将被正确识别的猫称为True negatives。为什么会有这个概念?什么是被正确识别的猫?我们知道我们这里的目标是找狗,那么那些我们没有标注的猫,是不是从反向说明我们的查找准确率(precision)呢?接着,我们定义被错误识别为狗的猫为False positives。被错误识别为猫的狗称为False negatives。


positive指的是识别出来是狗,如偶是True表示识别正确,他就是狗True positives;False表示识别错误,他是只猫False positives;

negative指的是识别出来是猫,如果是True表示识别正确,他就是只猫True negatives;False表示识别错误,他是只狗不是猫False negatives。


  • 查准率(precision)=True positives / (True positives + False positives)
  • 查全率(recall)= True positives / (True positives + False negatives)
  • 精确率(accuracy) = (True positives + True negatives)/ (ALL)


在这个例子中:precision = 3/4,recall = 3/4,accuracy = 4/7

而且一般来说,这两个指标是相互矛盾的,使用需要综合考虑这两者,所以就有了AP这个指标,AP为Precision-Recall曲线下的面积


2.P-R曲线


我们得到top-5的结果,前score最高的前5个样本,预测label为1,即:

image.png

此例中采用top-5评估,也可采用其他评估,如AP50,即当预测框与真实框的IoU值大于这个阈值时,该预测框才被认定为真阳性(True Positive, TP),反之就是假阳性(False Positive,FP)。


在这个例子中,true positives就是指第4和第2张图片,false positives就是指第13,19,6张图片。是相对于方框内的元素而言,在这个例子中,confidence score排在top-5之外的元素为false negatives和true negatives,即:

image.png

其中,false negatives是指第9,16,7,20张图片,true negatives是指第1,18,5,15,10,17,12,14,8,11,3张图片。


那么,这个例子中Precision=2/5=40%,意思是对于car这一类别,我们选定了5个样本,其中正确的有2个,即准确率为40%;Recall=2/6=30%,意思是在所有测试样本中,共有6个car,但是因为我们只召回了2个,所以召回率为30%。同理图中第一个样本点:P=1,R=1/6,第二个样本点,考虑前两个样本,P=1,R=2/6=1/3…以下我列出了一个Precision与Recall的表格:

image.png

这个例子的precision-recall曲线如下:

image.png

实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。


3.AP计算


接下来说说AP的计算,此处参考的是PASCAL VOC CHALLENGE的2010年之前计算方法。首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。

image.png

其计算的结果大概是如图蓝色阴影下的面积:

image.png

当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,我们可以计算出对应(r’ >= r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。计算方法如下:

image.png

细节计算如图:

image.png

其实也就是如图蓝色的阴影面积:

image.png

相应的Precision-Recall曲线(这条曲线是单调递减的)如下:

image.png

计算代码:

def voc_ap(rec, prec, use_07_metric=False):
  """ ap = voc_ap(rec, prec, [use_07_metric])
  Compute VOC AP given precision and recall.
  If use_07_metric is true, uses the
  VOC 07 11 point method (default:False).
  """
  if use_07_metric:
    # 11 point metric
    ap = 0.
    for t in np.arange(0., 1.1, 0.1):
      if np.sum(rec >= t) == 0:
        p = 0
      else:
        p = np.max(prec[rec >= t])
      ap = ap + p / 11.
  else:
    # correct AP calculation
    # first append sentinel values at the end
    mrec = np.concatenate(([0.], rec, [1.]))
    mpre = np.concatenate(([0.], prec, [0.]))
    print(mpre)
    # compute the precision envelope
    for i in range(mpre.size - 1, 0, -1):
      mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i])
    # to calculate area under PR curve, look for points
    # where X axis (recall) changes value
    i = np.where(mrec[1:] != mrec[:-1])[0]
    ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1])
    print(mpre)
  return ap


4.mAP计算


AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。


5.COCO Evaluation Result


另外一个比较常用的就是COCO的评估指标,具体内容见:官方网址

image.png

以下分别对其进行解析:

  1. Average Precision (AP):
APIoU=.50% AP at IoU=.50 (PASCAL VOC metric)   # 该指标就是pascol voc的评价指标
APIoU=.75% AP at IoU=.75 (strict metric)


这两行分别表示IoU取不同时候的mAP结果

AP% AP at IoU=.50:.05:.95 (primary challenge metric)   # 该指标是coco数据集的评价指标


这行表示当 IoU从0.5~0.95这段范围中,间隔为0.05,一共10个IoU值上mAP的均值,这个是coco数据集上最主要的评判指标


  1. AP Across Scales:

在这个指标中,可以看见有AP针对小面积的(APsmall) / 中等面积的(APmedium) / 大面积的(APlarge)三种指标。

  • 其中小目标的定义为:area < 322 的目标
  • 其中中目标的定义为: 322 < area < 962 的目标
  • 其中大目标的定义为:area > 962 的目标


  1. Average Recall (AR):
  • ARmax=100:指的是对图片最多提供100个预测边界框
  • ARmax=10:指的是对图片最多提供10个预测边界框
  • ARmax=1:指的是对图片最多提供1个预测边界框

其实取100和取10,没有太大的区别,所以其实图片中的数目并不会很多,基本在10以内,但是目标个数也一般会大于1.


  1. AR Across Scales:

这里的AR Across Scales与刚刚所说的Average Precision (AP)其实是类似的,这里不再重复。


参考资料:

https://blog.csdn.net/qq_17550379/article/details/79875784

https://blog.csdn.net/qq_41994006/article/details/81051150

https://cocodataset.org/#detection-eval

目录
相关文章
|
3天前
|
资源调度 数据可视化 数据处理
R语言改进的DCC-MGARCH:动态条件相关系数模型、BP检验分析股市数据
R语言改进的DCC-MGARCH:动态条件相关系数模型、BP检验分析股市数据
|
3天前
|
容器
R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量波动率预测
R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量波动率预测
|
3天前
|
数据可视化
使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
|
3天前
|
机器学习/深度学习 算法 计算机视觉
详解机器视觉性能指标相关概念——混淆矩阵、IoU、ROC曲线、mAP等
详解机器视觉性能指标相关概念——混淆矩阵、IoU、ROC曲线、mAP等
72 0
|
3天前
|
算法 数据可视化 PyTorch
YOLOv5性能评估指标->mAP、Precision、Recall、FPS、Confienc (讲解论文关注的主要指标)
YOLOv5性能评估指标->mAP、Precision、Recall、FPS、Confienc (讲解论文关注的主要指标)
158 0
|
3天前
|
自然语言处理
衡量大语言模型表现的 MT-bench 指标
衡量大语言模型表现的 MT-bench 指标
115 0
|
9月前
|
机器学习/深度学习 计算机视觉 数据可视化
YOLOv5改进系列(0)——重要性能指标、训练结果评价及分析、影响mAP指标的因素、优化mAP的方法
YOLOv5改进系列(0)——重要性能指标、训练结果评价及分析、影响mAP指标的因素、优化mAP的方法
4287 0
YOLOv5改进系列(0)——重要性能指标、训练结果评价及分析、影响mAP指标的因素、优化mAP的方法
|
9月前
|
机器学习/深度学习 数据可视化 数据挖掘
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(2)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
192 0
|
9月前
|
机器学习/深度学习 数据可视化 计算机视觉
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(1)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
|
11月前
|
数据挖掘 Serverless
Robust火山图:一种含离群值的代谢组数据差异分析方法
代谢组学中差异代谢物的识别仍然是一个巨大的挑战,并在代谢组学数据分析中发挥着突出的作用。由于分析、实验和生物的模糊性,代谢组学数据集经常包含异常值,但目前可用的差异代谢物识别技术对异常值很敏感。作者这里提出了一种基于权重的具有稳健性火山图方法,助于从含有离群值的代谢组数据中更加准确鉴定差异代谢物。
129 0