mAP等指标的理解

在目标识别领域对于算法的好坏有很多评价标准,下面总结一些比较常用的评价标准。

1 mAP

  • mean Average Precision

  • 对于一个检测任务,可以检测很多种类别,对于每种类别,都有一个AP,那么对于这么多的类别的平均就是mAP,显然,如果任务中只有一种目标,那么这种类别的AP就是mAP

    平均是用直接平均,因为我们希望的算法是希望能够对每种类别都有一个好的识别率,所以用直接平均,而不是根据样本分布来加权平均,因为加权平均意味着只要占比大的类别识别准指标就高,这个不符合初衷,当然针对具体任务,可以具体地设计,比如我就想占比更大的类别识别更准,那我就可以把它的权重弄大一点

  • 那么什么是AP? 常见的解释就是PR曲线的面积(P:查准率Precision,R:查全率 Recall)

    下面通过一个具体例子来说明这个问题,这部分来自于(目标检测中的mAP是什么含义? - 知乎 (zhihu.com)

    查看第二个回答并结合第一个回答后面的例子即可

    叙述一下就是:

    • 如图下面是检测任务的测试集的标注以及预测出来的框

      image-20211118115336699

      绿色是GT,也就是希望检测出来的目标(注意这些目标都是同一个类别的,我们求AP是对单个类别求AP),红色是预测出来的目标和置信度。

      在测评时人为设定一个IOU阈值,比如0.3(更常见的是0.5,即mAP.5 mAP50等说法,甚至于COCO的mAP[0.5,0.95],即阈值为.5 0.55 0.6… 0.95 然后再平均,这里的0.3是原文答主取的),当预测框和真实框的IOU大于这个阈值的时候,我们认为这个预测是一个TP的预测(即预测出来的正样本 确实是个正样本),小于时就认为是一个FP的预测(即预测出来的框和真实框相差过大,不认为这是一个正确的预测),当有多个预测框对同一个真实框预测时,选取IOU大于阈值且IOU最大的作为预测正确的那个TP样本,其他的可以认为是FP样本(所以是非极大值抑制后的结果来检测对吧,不然这个FP就太多了)对于没有检测出来的真实样本就是FN(将正确的框识别成了负样本)

      上图中总共有15个目标框,24个预测框,根据置信度排序

      image-20211118122533372

      image-20211118122742766

    • 按照顺序计算PR

      • Ronud1 : P = 1, R = 1/15
      • Round2 : P = 0.5,R = 1/15
    • 将上面计算出来的排个序就是PR曲线图了

      image-20211118122828857

    • 至于这种离散的图的AP怎么计算,根据另一位答主的说法

      • VOC2010之前,选取Recall >= 0, 0.1, 0.2 , …, 1这11个Recall处的Precision的最大值来算就好了

        AP =( p0 + p0.1 + … p1) / 11

      • VOC2010及之后 对于Recall >= 特定的几个值r0, r1,r2,r3 …. 选取Precision的最大值p0,p1,p2,p3…,AP = (r1-r0)*p0 + (r2-r1)*p1 + (r3-r2)*p2 + … +(1-r n)*p n 即可

  • Note

    • 这里的IOU阈值是检测人限制的
    • 很多算法没法达到比较高的Recall,因为想要查全,可能需要将算法里的置信度的阈值调到比较低,此时准确率肯定就低了呀,对于达不到的Recall,准确率写为0就可以了
    • 上面的折线图应该不能算是PR曲线,PR曲线上的点应该是对于同一个Recall,Precision最大的那个点取出来,比如上面的图 PR曲线上的点应该是R J B P E X G这几个点吧(也就是外面包围的那个曲线)
  • © 2019-2022 Wendell
  • Powered by Hexo Theme Ayer

请我喝杯咖啡吧~

支付宝
微信