AP (Average precision) 是主流的目标检测模型的评价指标。再介绍 AP 之前,我们先来回顾一下需要用到的几个概念 precision,recall 以及 IoU。
IoU(Intersection over union)
交并比 IoU 衡量的是两个区域的重叠程度,是两个区域重叠部分面积占二者总面积(重叠部分只计算一次)的比例。如下图,两个矩形框的 IoU 是交叉面积(中间图片红色部分)与合并面积(右图红色部分)面积之比。
Iou 的定义
在目标检测任务中,如果我们模型输出的矩形框与我们人工标注的矩形框的 IoU 值大于某个阈值时(通常为 0.5)即认为我们的模型输出了正确的
精准率与召回率(Precision & Recall)
Precision 和 Recall 最早是信息检索中的概念,用来评价一个信息检索系统的优劣。Precision 就是检索出来的条目中(比如:文档、网页等)有多大比例是我们需要的,Recall 就是所有我们需要的网页的条目有多大比例被检索出来了。用到目标检测领域,假设我们有一组图片,里面有若干待检测的目标,Precision 就代表我们模型检测出来的目标有多打比例是真正的目标物体,Recall 就代表所有真实的目标有多大比例被我们的模型检测出来了。
我们如何来计算 Precision 和 Recall 的值呢。
目标检测 TP,FP, TN, FN 含义
图释 TP, FP, TN,FN
首先我们根据上图的规则计算出 TP,FP,TN 的值,则 Precision,Recall 可表示为
PR 曲线
我们当然希望检测的结果 P 越高越好,R 也越高越好,但事实上这两者在某些情况下是矛盾的。比如极端情况下,我们只检测出了一个结果,且是准确的,那么 Precision 就是 100%,但是 Recall 就很低;而如果我们把所有结果都返回,那么必然 Recall 必然很大,但是 Precision 很低。
因此在不同的场合中需要自己判断希望 P 比较高还是 R 比较高。如果是做实验研究,可以绘制 Precision-Recall 曲线来帮助分析。
这里我们举一个简单的例子,假设我们的数据集中共有五个待检测的物体,我们的模型给出了 10 个候选框,我们按照模型给出的置信度由高到低对候选框进行排序。
表格第二列表示该候选框是否预测正确(即是否存在某个待检测的物体与该候选框的 iou 值大于 0.5)第三列和第四列表示以该行所在候选框置信度为阈值时,Precision 和 Recall 的值。我们以表格的第三行为例进行计算:
由上表以 Recall 值为横轴,Precision 值为纵轴,我们就可以得到 PR 曲线。我们会发现,Precision 与 Recall 的值呈现负相关,在局部区域会上下波动。
PR 曲线
AP(Average Precision)
顾名思义 AP 就是平均精准度,简单来说就是对 PR 曲线上的 Precision 值求均值。对于 pr 曲线来说,我们使用积分来进行计算。
在实际应用中,我们并不直接对该 PR 曲线进行计算,而是对 PR 曲线进行平滑处理。即对 PR 曲线上的每个点,Precision 的值取该点右侧最大的 Precision 的值。
PR 曲线的平滑处理
用公式来描述就是
。用该公式进行平滑后再用上述公式计算 AP 的值。
Interplolated AP(Pascal Voc 2008 的 AP 计算方式)
Pascal VOC 2008 中设置 IoU 的阈值为 0.5,如果一个目标被重复检测,则置信度最高的为正样本,另一个为负样本。在平滑处理的 PR 曲线上,取横轴 0-1 的 10 等分点(包括断点共 11 个点)的 Precision 的值,计算其平均值为最终 AP 的值。
Pascal Voc 2008 AP 计算方式
在我们的例子里
Area under curve
上述方法有两个缺陷,第一个是使用 11 个采样点在精度方面会有损失。第二个是,在比较两个 AP 值较小的模型时,很难体现出两者的差别。所以这种方法在 2009 年的 Pascalvoc 之后便不再采用了。在 Pascal voc 2010 之后,便开始采用这种精度更高的方式。绘制出平滑后的 PR 曲线后,用积分的方式计算平滑曲线下方的面积作为最终的 AP 值。
Pascal voc 2010-2012 AP 计算方式
COCO mAP
最新的目标检测相关论文都使用 coco 数据集来展示自己模型的效果。对于 coco 数据集来说,使用的也是 Interplolated AP 的计算方式。与 Voc 2008 不同的是,为了提高精度,在 PR 曲线上采样了 100 个点进行计算。而且 Iou 的阈值从固定的 0.5 调整为在 0.5 - 0.95 的区间上每隔 0.5 计算一次 AP 的值,取所有结果的平均值作为最终的结果。
比如我们看一下 YOLOv3 的作者在论文中展示的在 coco 数据集上的实验结果
我们发现除了 AP,还有
,
等值,这些事代表什么意思呢?
:IoU 阈值为 0.5 时的 AP 测量值
:IoU 阈值为 0.75 时的测量值
: 像素面积小于
的目标框的 AP 测量值
: 像素面积在
之间目标框的测量值
: 像素面积大于
的目标框的 AP 测量值
注:通常来说 AP 是在单个类别下的,mAP 是 AP 值在所有类别下的均值。在这里,在 coco 的语境下 AP 便是 mAP,这里的 AP 已经计算了所有类别下的平均值,这里的 AP 便是 mAP。
参考文献
mAP (mean Average Precision) for Object Detectionmedium.comCoco APIgithub.com小纸屑:详解 object detection 中的 mAPzhuanlan.zhihu.com
YOLOv3pjreddie.com准确率(Precision)、召回率(Recall)以及综合评价指标(F1-Measure )www.cnblogs.com
https://zhuanlan.zhihu.com/p/88896868