目标检测中的mAP

Posted 大彤小忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测中的mAP相关的知识,希望对你有一定的参考价值。

  要计算mAP必须先绘出各类别PR曲线,计算出AP。而如何采样PR曲线,VOC采用过两种不同方法。
  在VOC2010以前,只需要选取当Recall >= 0, 0.1, 0.2, …, 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值。
  在VOC2010及以后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值。

  • AP&mAP
    mAP:mean Average Precision,即各类别AP的平均值
    AP:PR曲线下面积
  • PR曲线
    PR曲线:Precision-Recall曲线
    Precision(查准率):TP / (TP + FP)
    Recall(查全率):TP / (TP + FN)

  • TP、FP、FN、TN
    TP(True Positive):IoU > IoU t h r e s h o l d _{threshold} threshold(IoU t h r e s h o l d _{threshold} threshold一般取 0.5)的检测框数量(同一Ground Truth只计算一次)
    FP(False Positive):IoU <= IoU t h r e s h o l d _{threshold} threshold的检测框,或者是检测到同一个GT的多余检测框的数量
    FN(False Negative):没有检测到的GT的数量
    TN(True Negative):在mAP评价指标中不会使用到
  • 交并比(IoU)
    IoU(Intersection Over Union):指真实框和预测框之间交集和并集的比。假设这里有真实框 B g t B_{gt} Bgt和预测框 B p B_p Bp,那么 IoU计算公式如下:
            IoU可以判断预测的检测框是否符合条件,IoU用图片展示如下:
  • 评价指标mAP
      下面用一个例子说明AP和mAP的计算。先规定两个公式,一个是Precision,一个是Recall,这两个公式同上面的一样,我们把它们扩展开来,用另外一种形式进行展示,如下所示。
    其中all detctions代表所有预测框的数量, all ground truths代表所有GT的数量。
      AP是计算某一类P-R曲线下的面积,mAP则是计算所有类别P-R 曲线下面积的平均值。
      假设我们有7张图片(Images1-Image7),这些图片有15个目标(绿色的框,GT的数量,上文提及的all ground truths)以及24个预测边框(红色的框,A-Y编号表示,并且有一个置信度值),如下图所示。
      根据上图以及说明,我们可以列出以下表格,其中Images代表图片的编号,Detections代表预测边框的编号,Confidences代表预测边框的置信度,TP or FP代表预测的边框是标记为TP还是FP(认为预测边框与GT的IOU值大于等于0.3就标记为TP;若一个GT有多个预测边框,则认为IOU最大且大于等于0.3的预测框标记为TP,其他的标记为FP,即一个GT只能有一个预测框标记为TP),这里的0.3是随机取的一个值。
      通过上表,我们可以绘制出P-R曲线(因为AP就是P-R曲线下面的面积)。但是在此之前我们需要计算出P-R曲线上各个点的坐标,根据置信度从大到小排序所有的预测框,然后就可以计算Precision和Recall的值,见下表。(需要记住一个叫累加的概念,就是下图的ACC TP和ACC FP)
      标号1:Precision=TP/(TP+FP)=1/(1+0)=1,Recall=TP/(TP+FN)=TP/(all ground truths)=1/15=0.0666
      标号2:Precision=TP/(TP+FP)=1/(1+1)=0.5,Recall=TP/(TP+FN)=TP/(all ground truths)=1/15=0.0666
      标号3:Precision=TP/(TP+FP)=2/(2+1)=0.6666,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
      标号4:Precision=TP/(TP+FP)=2/(2+2)=0.5,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
      标号5:Precision=TP/(TP+FP)=2/(2+3)=0.4,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
      标号6:Precision=TP/(TP+FP)=2/(2+4)=0.3333,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
      标号7:Precision=TP/(TP+FP)=2/(2+5)=0.2857,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
      标号8:Precision=TP/(TP+FP)=2/(2+6)=0.25,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
      标号9:Precision=TP/(TP+FP)=2/(2+7)=0.2222,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
      标号10:Precision=TP/(TP+FP)=3/(3+7)=0.3,Recall=TP/(TP+FN)=TP/(all ground truths)=3/15=0.2
      标号11:Precision=TP/(TP+FP)=3/(3+8)=0.2727,Recall=TP/(TP+FN)=TP/(all ground truths)=3/15=0.2
      标号12:Precision=TP/(TP+FP)=4/(4+8)=0.3333,Recall=TP/(TP+FN)=TP/(all ground truths)=4/15=0.2666
      标号13:Precision=TP/(TP+FP)=5/(5+8)=0.3846,Recall=TP/(TP+FN)=TP/(all ground truths)=5/15=0.3333
      标号14:Precision=TP/(TP+FP)=6/(6+8)=0.4285,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号15:Precision=TP/(TP+FP)=6/(6+9)=0.45,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号16:Precision=TP/(TP+FP)=6/(6+10)=0.375,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号17:Precision=TP/(TP+FP)=6/(6+11)=0.3529,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号18:Precision=TP/(TP+FP)=6/(6+12)=0.3333,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号19:Precision=TP/(TP+FP)=6/(6+13)=0.3157,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号20:Precision=TP/(TP+FP)=6/(6+14)=0.3,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号21:Precision=TP/(TP+FP)=6/(6+15)=0.2857,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号22:Precision=TP/(TP+FP)=6/(6+16)=0.2727,Recall=TP/(TP+FN)=TP/(all ground truths)=6/15=0.4
      标号23:Precision=TP/(TP+FP)=7/(7+16)=0.3043,Recall=TP/(TP+FN)=TP/(all ground truths)=7/15=0.4666
      标号24:Precision=TP/(TP+FP)=7/(7+17)=0.2916,Recall=TP/(TP+FN)=TP/(all ground truths)=7/15=0.4666
      然后就可以绘制出P-R曲线,如下图所示。
      得到P-R曲线就可以计算AP(P-R 曲线下的面积)。要计算P-R下方的面积,如下图所示。

  由上图可知, A P = A 1 + A 2 + A 3 + A 4 AP = A1 + A2 + A3 + A4 AP=A1+A2+A3+A4,具体计算如下:
   A 1 = ( 0.0666 − 0 ) × 1 = 0.0666 A1 = (0.0666-0) \\times 1 = 0.0666 A1=(0.06660)×1=0.0666
   A 2 = ( 0.1333 − 0.0666 ) × 0.0666 = 0.04446222 A2 = (0.1333-0.0666) \\times 0.0666 = 0.04446222 A2=(0.13330.0666)×0.0666=0.04446222
   A 3 = ( 0.4 − 0.1333 ) × 0.4285 = 0.11428095 A3 = (0.4−0.1333) \\times 0.4285 = 0.11428095 A3=(0.40.1333)×0.4285=0.11428095
   A 4 = ( 0.4666 − 0.40 ) × 0.3043 = 0.02026638 A4 = (0.4666−0.40) \\times 0.3043 = 0.02026638 A4=(0.46660.40)×0.3043=0.02026638
   A P = A 1 + A 2 + A 3 + A 4 = 0.0666 + 0.04446222 + 0.11428095 + 0.02026638 = 0.2456095 = 24.56 % AP = A1 + A2 + A3 + A4 = 0.0666+0.04446222+0.11428095+0.02026638=0.2456095=24.56\\% AP=A1+A2+A3+A4=0.0666+0.04446222+0.11428095+0.02026638=0.2456095=24.56%
  mAP就是对每一个类别都计算出AP然后再计算AP平均值就好了。

  参考文章:https://www.zhihu.com/question/53405779/answer/993913699
       https://blog.csdn.net/chris_xy/article/details/103036756

以上是关于目标检测中的mAP的主要内容,如果未能解决你的问题,请参考以下文章

目标检测评价指标总结

解析PR曲线与目标检测中的mAP指标

解析PR曲线与目标检测中的mAP指标

n map探测目标操作系统需要添加啥参数

目标检测中的mAP

目标检测中的评价指标mAP以及coco评价标准