目标检测模型的评价指标详解:mAP、召回率、准确率

1. 目标检测模型的评价指标详解:mAP、召回率、准确率

对于计算机视觉中的目标检测领域而言,主要的评估指标就是 mAP 与召回率、准确率。
本文对 IoU、准确率、召回率、AP 以及 mAP 的概念和计算逻辑进行了详细的整理。

1.1. IoU

IoU:Intersection Over Union

对于目标检测算法的执行而言,每一张训练图片中的每个待检测物体,都会标注一个该物体位置对应的 bounding box,这个标注的 bounding box 就是真实物体区域对应的检测区域。
而目标检测算法对图片中物体所进行的检测和推理,会输出一个检测出来的 Bounding box。
IoU 指标就是通过两个 Bounding Box 重合的程度,来评估目标检测算法对于该物体的检测精度
标注 Bounding Box 与检测 Bounding Box 的重合度越高,表示检测的精度越好。

图片

用下图可以非常直观的解释 IoU 如何计算。
具体的解释就是:系统检测到的物体区域与真实物体区域的交集(如下图中 Area of Overlap 部分,也就是 Intersection 部分),除以两个区域之间的并集(如下图中 Area of Union 部分,也就是 Union 部分)。

图片

因此,对于一个检测图片中的某个待检物体而言,其 IoU 指标的计算,就是用检测框与标记框的交集面积,除以两个框的并集面积。
这个值的计算结果当然是在 0-1 之间,0 表示检测结果与真实的标记框完全无关,检测完全错误,而 1 则表示检测框和标记框完全重合,对于算法的评估而言,这个值当然是越高越好。
一般使用 IoU=0.5 来作为判断识别率的基准,大于这个阈值表示是有效的检测,否则是无效的检测。

在理解以上 IoU 概念的基础上,对一张图片中的多个物体进行目标检测,就可能存在多种检测结果:

图片

  • TP(True Positive):算法准确的检测到了图片中的物体,并且两个检测框的 IoU 重合度大于 0.5,因此是一个正确的预测。
  • FP(False Positive):算法检测出来的检测框,与该图片所有物体的标记框的重合度都小于 0.5,最典型的就是把背景识别成了物体,因此是一种误检的情况。
  • TN(True Negative):本身是背景,算法也没有输出对应的检测框,因此是正常现象,在目标检测的指标计算中不需要考虑。
  • FN(False Negative):本来需要算法检测出来的物体,算法没有检测出来,所以相当于是漏检的情况。

以上检测结果的分类整理成表格就是:

图片

1.2. 召回率与准确率

准确率:Precision
召回率:Recall

有了以上对于 IoU 以及目标检测算法的各种不同检测结果的类型的理解,关于目标检测算法执行准确率和召回率的概念及其计算就比较简单了。

所谓的准确率,表示的就是:目标检测算法所输出的检测结果中,其类别判断和位置检测(IoU>0.5)均正确的检测所占的比例
准确率的计算公式如下图所示:

图片

而所谓的召回率,则表示的是:目标检测算法对图片中的物体进行的检测,把多少个物体正确地检测(类别判断正确,且 IoU>0.5)出来了
召回率的计算公式如下图所示:

图片

以上图中的茶杯的检测为例,准确率表示的就是,算法输出的茶杯检测结果,真的是茶杯的情况所占的比例。
而召回率则表示的是,图片中所有的茶杯,被算法准确检测出来所占的比例。

1.3. AP 与 mAP

AP:Average Precision,表示某个类别的检测精度。

mAP:mean Average Precision,表示所有类别的平均检测精度。

下面以一个例子来更详细地解释说明 AP 的计算过程。

以某个数据集进行小狗目标的检测为例。
数据集中真实标注的小狗目标有 8 个,分别对应于 GT1-GT8(这里的 GT 表示 Ground Truth 的意思,也就是通过手动标注出来的真实的小狗目标所在的位置)。
而通过算法检测到的小狗目标及其位置有 10 个,使用 BB1-BB10 来表示(BB 表示检测算法检测到的每个小狗目标的 Bounding Box)。

使用算法对数据集中小狗目标的检测结果,部分检测位置的 Bounding Box 只检测到小狗的头或者脚,也就是说 IoU 很低(例如 BB3、BB4、BB5、BB7、BB8 这几个检测输出的 IoU 均比较低),而且三个真实的小狗目标 GT6、GT7 和 GT8 没有能够检测到(FN=(GT6, GT7, GT8)),也就是说这三个真实目标漏检了。
基于以上信息整理目标检测算法的执行结果如下图所示:
需要注意的是,目标检测算法输出的每个检测结果,不仅包含这个检测结果对应的检测类别、Bounding Box 的坐标信息,还有一个检测的置信度(Confidence),也就是这个检测目标正确的概率。

图片

从上图可以看到,对于一个真实的待检小狗目标,检测算法可能输出多个独立的检测结果与之对应,例如 BB1 和 BB3 对应的都是 GT1。
而一般情况下,只有在 IoU>0.5 的情况下,我们才会认为算法输出的检测结果是正确的 TP,因此对以上算法检测所输出的 10 个检测结果 BB1-BB10 进行 IoU 判断如下:

图片

然后按照流程,基于检测结果的置信度(即上图中属于狗的概率)对其进行排序:

图片

然后按照以上排序,在不同的 rank 上计算各自的准确率 Precision 和召回率 Recall。

  • 对于 Rank1 而言,其准确率=(>=rank1 的 TP 数量)/(>=rank1 的 TP+FP 的总数量)=1/1=1,其召回率=(>=rank1 的 TP 数量)/(TP 的总数量)=1/8=0.125。
  • 对于 Rank2 而言,其准确率=(>=rank2 的 TP 数量)/(>=rank2 的 TP+FP 的总数量)=2/2=1,其召回率=(>=rank2 的 TP 数量)/(TP 的总数量)=2/8=0.25。
  • 对于 Rank3 而言,其准确率=(>=rank3 的 TP 数量)/(>=rank3 的 TP+FP 的总数量)=3/3=1,其召回率=(>=rank3 的 TP 数量)/(TP 的总数量)=3/8=0.375。
  • 对于 Rank4 而言,其准确率=(>=rank4 的 TP 数量)/(>=rank4 的 TP+FP 的总数量)=3/4=0.75,其召回率=(>=rank4 的 TP 数量)/(TP 的总数量)=3/8=0.375。
  • 以此类推,得到 rank5 的准确率=4/5=0.8,其召回率=4/8=0.5。
  • rank6 的准确率=5/6=0.833,其召回率=5/8=0.625。
  • rank7 的准确率=5/7=0.714,其召回率=5/8=0.625。
  • rank8 的准确率=5/8=0.625,其召回率=5/8=0.625。
  • rank9 的准确率=5/9=0.556,其召回率=5/8=0.625。
  • rank10 的准确率=5/10=0.5,其召回率=5/8=0.625。

因此,以上根据目标检测算法输出的 10 个检测结果,得到 10 组准确率和召回率的数据如下:

图片

根据 10 组(Precision,Recall)就可以画出目标检测算法输出以上结果对应的 P-R 图:

图片

所谓的 AP 指标计算上的定义,就是上面 P-R 中标记的蓝色 P-R 曲线下的面积或者积分
因为 Precision 和 Recall 指标都是在 0-1 之间,所以以上计算出来的 AP 指标当然是在 0-1 之间。

图片

P-R 曲线面积或者积分的计算比较复杂,所以可以采用上图提供的两个离散序列公式来计算 AP 指标。

第一个公式中,P(k) 是第 k 个 rank 的准确度,而 r(k) − r(k−1) 是指第 k 个 rank 的召回率与第 k−1 个 rank 的召回率的差值,因此按照该公式计算 AP 指标就是:

AP = Σ P(k) × [r(k) − r(k−1)]
   = 1×0.125 + 1×0.125 + 1×0.125 + 0.8×0.125 + 0.833×0.125
   ≈ 0.579

第二个公式中,P(k) 是第 k 个 rank 的准确度,而 rel(k) 的定义则是:在第 k 个 rank 为有效检测 TP 时为 1,否则为 0。
number of relevant documents 表示总的 TP 个数,这里是 8 个(GT1-GT8)。
因此基于该公式计算 AP 指标就是:

AP = (1/8) × Σ P(k) × rel(k)
   = (1 + 1 + 1 + 0.8 + 0.833) / 8
   ≈ 0.579

所以可以看到,以上的两个公式虽然算式不同,但是最终的结果殊途同归,最后计算出来的 AP 值都是 0.579。

以上 AP 的计算说完了,那么 mAP 的计算就比较简单了。
上面所进行 AP 的计算,只是针对小狗这个类别计算出来的 AP,一般情况下目标检测算法可以输出多个不同类别的检测结果,例如在 COCO 数据集中就包含了 80 个类别的标注信息。
那么一个目标检测算法的 mAP 指标,就是先独立的计算它所支持的每个类别的检测 AP 指标,然后再把所有的 AP 值加起来求平均值就是整个算法对所有类别检测性能的 mAP 指标。

图片

1.4. 参考资料

  • 《深度学习之 Pytorch 物体检测实战》1.2
  • Yy’s Program: 影像辨識常見的 IOU、AP、mAP 是什麼意思?
  • Learning Model : 什麼是 AP/mAP/IoU?[轉錄] | by Ryan Lu | AI 反斗城 | Medium