本文将介绍目标检测任务(Object Detection)中的一般评价指标(Metric) - mAP(mean average Precison)以及IOU(Intersection over Union)。

Precision Recall Curve

在多分类任务中,模型在对某个样本预测后会得到一个概率,即属于$c_i$类的概率为$p_i$,通常会用PR曲线(Precision Recall Curve)判定模型的性能。

假设现在需要画出针对类别$c_i$的PR曲线,具体做法是:

  1. 设置多个阈值(threshold),如果类别$c_i$对应的概率为$p_i$,如果大于阈值,认为是True Positive,反之属于False Positive;
  2. step1中设置出的多个阈值将产生多组(True Positive, False Positive)。针对每一组计算precisionrecall两个指标;
  3. 使用step2中得到的多组(precision, recall),以recall为横轴,precision为纵轴,画出一条曲线。

目标检测本质上包含多分类任务,并且之后mAP的计算与上述得到PR曲线的过程类似。

IOU

mAP的计算需要IOU的参与,因此这一部分介绍IOU的计算方式。目标检测模型在预测阶段会为图片或视频中检测出的物体(object)标记Bounding Box,同时还有概率值(confidence)。

IOU的计算需要Bounding Box与Ground Truth label参与,前者是模型预测的值,后者被认为是图片中属于物体的真实范围。如下图所示,蓝色代表Bounding Box,绿色代表Ground Truth Box。

Region Proposals示意

Region Proposals Example, from https://www.learnopencv.com/selective-search-for-object-detection-cpp-python/

IOU用于描述两个BBox间的交集程度,如下图所示,一个BBox和Ground Truth Box存在相交(绿色部分)。
两个BBox示意

两个BBox示意

此处IOU的计算方式如下:
$$
IOU = \frac{Area(绿色,overlap)}{Area(蓝+绿+红,union)}
$$
由于BBox会给定4个值确定位置,所以计算面积还是很容易的。

mAP

本部分以单张图片中单个类别所有预测出的BBox与Ground Truth Box为例,介绍mAP的计算流程。

  1. 选取一个阈值比如0.5,使用它对识别出来的BBox进行判断。如果该BBox的IOU > threshold,那么认为这个BBox是TP,否则,认为它是FP

  2. 按照confidence降序排序,得到一个表格;

  3. 自顶向下,通过累加计算precisionrecall,并获得多组数据;

  4. 使用step3获得的数据画出PR-curve,注意最开始应该是从(0, 1)开始的,它与坐标轴围成的面积,即是需要计算的AP。

个人疑惑

分类任务中的PR曲线是由多组阈值计算出多组precision和recall值画出的,但是mAP中的PR-curve是通过一个阈值计算出多组precision和recall值画出的。不知道是我哪里理解错了,还是在mAP中就是如此规定。

Reference