动手学习深度学习——目标检测指标mAP原理及举例


  文中如有错误,或您有不同的看法,请评论中指出讨论,谢谢。

概念:

  得到检测算法的预测结果后,需要对pred bbox与gt bbox一起评估检测算法的性能,涉及到的评估指标为mAP,那么当一个pred bbox与gt bbox的重合度较高(如IoU score > 0.5),且分类结果也正确时,就可以认为是该pred bbox预测正确,这里也同样涉及到IoU的概念;

1). mAP相关概念

  • mAP: mean Average Precision, 即各类别AP的平均值
  • AP: PR曲线下面积,后文会详细讲解
  • PR曲线: Precision-Recall曲线
  • Precision(查准率): TP / (TP + FP)
  • Recall(召回率): TP / (TP + FN)
  • TP: IoU>0.5的检测框数量(同一Ground Truth只计算一次)
  • FP: IoU<=0.5的检测框,或者是检测到同一个GT的多余检测框的数量
  • FN: 没有检测到的GT的数量

  不管是Pascal VOC,还是COCO,甚至是人脸检测的wider face数据集,都使用到了AP、mAP的评估方式,那么AP、mAP到底是什么?如何计算的?

2). 以图像检索mAP为例

图像检索的案例取自:https://zhuanlan.zhihu.com/p/48992451

  那么mAP到底是什么东西,如何计算?我们先以图像检索中的mAP为例说明,其实目标检测中mAP与之几乎一样:

在这里插入图片描述

  案例背景:目的是为了检验图片检索的算法。

  假设我们要从图库里查找和查询图片1类似的图片,而图库里实际存在图片1图片5五张图片是真正与查询图片1相似的。然后调用图片检索算法,设置算法找出的相似度排名前10的图片为最终结果,且计算出的相似度按顺序从大到小依次为返回图片1返回图片10。然后按图中顺序,每当召回率变化的时候计算一次recall和precision。最后把precision进行平均,即可得到检索算法对于查询图片1的 A P 1 AP_1 AP1

  换一张查询图片2,重复上述过程,可以计算得到查询图片2的 A P 2 AP_2 AP2

  那么此时图片检索算法的 m A P = ( A P 1 + A P 2 ) / 2 mAP=(AP_1+AP_2)/2 mAP=(AP1+AP2)/2

3). 目标检测中的mAP案例

  举例到此为止,那么mAP在目标检测中又是什么情况呢?其实和上述过程类似,上述过程的目的改成“为了检验目标检测算法”,而每次的查询图片1和2就相当于目标检测中的多个类别。图库中已知和查询图片相似的图片其实就是目标检测样本的ground truth。图片检索算法得到的10个检索结果就相当于目标检测中某个类别筛选出的bbox,相似度就相当于置信度(score)。既然对mAP在目标检测中的应用有了大致的概念,接下来直接举个例子加深印象。

在这里插入图片描述

  假设上图最左边是我们目标检测算法(通常是NMS之后)得到的20个bbox的最原始数据,每个bbox的置信度为score,对应IoU最大的ground truth bbox是gt_label,而预测的类别是pred。

  然后我们按pred预测的类别进行分组,并在每个组内按置信度score进行排序。从而得到上图最右侧的数据表。

  然后根据分组,对每个类别的组,按score从大到小的顺序依次对比gt_label和pred,从而得到TP(真阳)、FP(假阳)和FN(假阴)样本的数量,并依次计算一一对应的precision和recall数组。具体过程见下面三个表格:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  理论上,根据precision及其对应的recall数组,可以绘制出Precision-Recall曲线图(如下三个曲线图),然后根据曲线图计算每个类别的AP(即图中红虚线围成的面积,这个是VOC2010版本的计算方法)。注意,在recall=x时,precision的数值是 r e c a l l ∈ [ x , 1 ] recall \in [x, 1] recall[x,1]范围内的最大precision。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  由此,可以计算出 A P 0 = 0.32 , A P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值