目标检测指标--mAP


我们都知道在目标检测任务中,常用的指标有mAP,那么我们在进行目标检测时为什么要使用mAP这个指标?什么是mAP呢?

必备小知识

  1. IoU
    IoU(Intersection-over-Union)表示目标真实框与预测框的交并比,如下图所示:PB表示预测框,GT表示真实框
    目标检测指标--mAP I o U = P B ∩ G T P B ∪ G T IoU = \frac{PB∩GT}{PB∪GT} IoU=PBGTPBGT

  2. TP FP FN
    以上三个词大家初看可能容易混淆,但是解释各个字母的意义后就会很容易的分清楚:

    • T和F分别表示True和False代表正确识别还是错误识别
    • P和N分别表示Positive和Negative代表正样本和负样本

    TP:IOU大于一定阈值的检测框,被认为是正确识别为正样本
    FP:IOU小于一定阈值的检测框,被认为是错误的识别为正样本
    FN:被错误的识别为负样本,也就是被漏检的数量,这里需要注意漏检指的是没有被识别为正样本的目标个数,如果一张图像上有3个目标,仅有一个目标被正确识别为正样本,那么FN=2
    以下图为例:
    假设阈值为0.5,图中蓝色框表示真实标签,绿色框和红色框为被 识别为猫的预测框,其中绿色框与蓝色框的IOU>0.5,则绿色框表 示被正确识别的正样本,红色框与蓝色框的IOU<0.5,则红色框表 示被错位识别的正样本,因此TP = 1,FP = 1, FN = 1。
    目标检测指标--mAP

  3. Precision(准确率)和Recall(召回率)

    Precision指模型所有的预测结果中,预测正确的比例是多少,公式如下,其中TP表示识别对的样本数,TP+FP表示所有的预测框
    P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} Precision=TP+FPTP
    Recall指所有的样本中,有多少被正确识别出来,公式如下,其中TP表示识别对的样本数,TP+FN表示所有的正样本
    R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP

    对于上图:
    Precision = 1 / (1+1) = 1/2
    Recall = 1 / (1+1) = 1/2

为什么要使用mAP

Precision和Recall两个指标相对比较片面,不足以说明模型好坏,以下图举例,图像中共有三只小猫,蓝色表示真实标签,绿色表示预测框,模型预测下面这张图像结果如下:
目标检测指标--mAP
按照置信度从高到底排序如下:

目标ID 置信度 样本(IoU=0.5)
3 0.99 正样本
1 0.86 正样本
2 0.85 正样本
2 0.80 负样本

倘若我们选取置信度为0.9,那么对应的Precision和recall为:
P r e c i s i o n = T P T P + F P = 1 1 + 0 = 1 Precision = \frac{TP}{TP + FP} = \frac{1}{1 + 0} = 1 Precision=TP+FPTP=1+01=1

R e c a l l = T P T P + F N = 1 1 + 2 = 1 3 Recall = \frac{TP}{TP + FN} = \frac{1}{1 + 2} = \frac{1}{3} Recall=TP+FNTP=1+21=31

倘若我们选取置信度为0.8,那么对应的Precision和recall为:
P r e c i s i o n = T P T P + F P = 3 3 + 1 = 3 4 Precision = \frac{TP}{TP + FP} = \frac{3}{3 + 1} = \frac{3}{4} Precision=TP+FPTP=3+13=43

R e c a l l = T P T P + F N = 3 3 + 0 = 1 Recall = \frac{TP}{TP + FN} = \frac{3}{3 + 0} = 1 Recall=TP+FNTP=3+03=1

以上可以看出不同的置信度对准确率和召回率的影响很大,我们不能单纯的仅依据其中一个指标来判断模型的好坏,因此mAP就出来啦。

如何计算mAP

好啦,下边开始进入正题,什么是mAP呢?在讲解mAP之前要先说一下AP,mAP是所有类别的AP均值,那么这个AP是什么呢?

AP(Average Precision) 指的是以Recall为横坐标,Precision为纵坐标的曲线下面积。由上文我们也知道在计算模型指标的时候,选取不同的置信度会得到不同的准确率和召回率,那么当我们选取多个置信度时,就会得到很多的准确率和召回率,我们以召回率为横坐标,以准确率为纵坐标画的曲线就是面积就是我们要求的AP啦。

代码

后续完善