代码改变世界

目标检测的评价方法(PR,IOU,AP,MAP)

2019-01-22 19:59  PJL_Allen  阅读(2417)  评论(0编辑  收藏  举报

使用不同的性能指标对算法进行评价往往会有不同的结果,也就是说模型的好坏是相对的。方法的好坏不仅取决于算法和数据,还决定于任务的需求。因此,选取一个合理的模型评价指标是非常有必要的。这里主要探讨一下图像处理中对object检测的评价方法。其中包括Precision&Recall,IOU,AP,MAP。

Precision&Recall

准确率Precision:

预测结果中,有多少是真的正(找出来的对的比例)

召回率Recall:

所有正样本中,你究竟预测对了多少(找出来了几个) 

为了方便理解,我们用图来进行示意:

IoU (Intersection over union):

 

AP(Average Precision) :

AP字面上可以理解为数据集的平均精度。也可以看作在precision-recall曲线下区域的面积。

即橙色曲线下的面积。

实际上,为了更好的可视化,我们发现在召回值(0、0.1、0.2、……、0.9和1.0)的右侧有最高的精度值(绿色曲线)。

 

AP(平均精度)是这11个recall-level的最高精度的平均值。这接近于求出绿色曲线下的总面积,然后除以11。

 

举个例子:

则AP=(5✖1+4✖0.57+1✖0.5)/11。

实例级下的AP计算:

在一个图像数据集中,我们首先要计算出每个instance的precision(i),其中i为每幅图像的instance个数,则每幅图像的精度值为(1/i)✖Σprecision(i)。假如验证集中有N个图像。那么我们可以得到N个精度值,计算这N个精度值的平均值,得到的就是该类的平均精度:

即每幅图像平局精度值的和除以数据集中图像的数量。

MAP=所有类别的平均精度求和除以所有类别,即数据集中所有类的平均精度的平均值。但是由于实例级没有类别,所以不需要求MAP。

对于APr的理解:

在MS coco数据集的论文中提到了APr的评价指标。对于COCO, AP是多个IoU的平均值(考虑正匹配的最小IoU)。AP@ [0.5:0.05:0.95]对应于IoU在0.5 - 0.95之间的平均AP,步长为0.05。AP是在N个类别中超过10个级的IOU的平均值(AP@@ [0.5:0.05:0.95]表示从0.5到0.95,步长为0.05)。

那么APr@0.5就表示在IOU的阈值=0.5时的AP,APr@0.7就表示在IOU的阈值=0.7时的AP。

 详细的说,求解APr@0.5时,首先计算IOU,把每个实例的IOU求出来,把IOU小于0.5的作为False,IOU大于0.5的作为True。把True的instances的精度求解出来然后除以总共的instance数量N(true+False),这样就能得到APr@0.5的值了。

这么在同一模型下APr@0.5的值大于APr@0.7也就能理解了。虽然APr@0.7在单个instance上的精度是大于APr@0.5的,但是由于APr@0.7的instances数量要比APr@0.5少,而分母所除的图片总数是一样的,因此APr@0.7的值总体来讲要比APr@0.5的值下降一些。