AP (Average precision 平均精度)
是主流的目标检测模型的评价指标。再介绍AP之前,我们先来回顾一下需要用到的几个概念precision,recall以及IoU。
IoU(Intersection over union)交并比
交并比(IoU)衡量的是两个区域的重叠程度,是两个区域重叠部分面积占二者总面积(重叠部分只计算一次)的比例。如下图,两个矩形框的IoU是交叉面积(中间图片红色部分)与合并面积(右图红色部分)面积之比。
交并比(Iou)的定义:
在目标检测任务中,如果我们模型输出的矩形框与我们人工标注的矩形框的IoU值大于某个阈值时(通常为0.5)即认为我们的模型输出了正确的。
在目标检测的评价体系中,有一个参数叫做IoU(交并比),即模型产生的目标窗口与原来标记窗口的交叠率。可以简单理解为:检测结果(Detection Result)与Ground Truth的交集比上它们的并集,即为检测的准确率IoU:
用公式表示为:
理想情况下,IoU=1,即完全重合
精准率与召回率(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是在单个类别下的,mAP是AP值在所有类别下的均值。在这里,在coco的语境下AP便是mAP,这里的AP已经计算了所有类别下的平均值,这里的AP便是mAP。
参考文献
mAP (mean Average Precision) for Object Detectionmedium.com
小纸屑:详解object detection中的mAPzhuanlan.zhihu.com
准确率(Precision)、召回率(Recall)以及综合评价指标(F1-Measure )www.cnblogs.com