目标检测中的mAP与IOU
本文将介绍目标检测任务(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曲线,具体做法是:
- 设置多个阈值(threshold),如果类别$c_i$对应的概率为$p_i$,如果大于阈值,认为是True Positive,反之属于False Positive;
- step1中设置出的多个阈值将产生多组(True Positive, False Positive)。针对每一组计算
precision
与recall
两个指标; - 使用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。
IOU用于描述两个BBox间的交集程度,如下图所示,一个BBox和Ground Truth Box存在相交(绿色部分)。
此处IOU的计算方式如下:
$$
IOU = \frac{Area(绿色,overlap)}{Area(蓝+绿+红,union)}
$$
由于BBox会给定4个值确定位置,所以计算面积还是很容易的。
mAP
本部分以单张图片中单个类别所有预测出的BBox与Ground Truth Box为例,介绍mAP的计算流程。
-
选取一个阈值比如0.5,使用它对识别出来的BBox进行判断。如果该BBox的
IOU > threshold
,那么认为这个BBox是TP
,否则,认为它是FP
; -
按照confidence降序排序,得到一个表格;
-
自顶向下,通过累加计算
precision
和recall
,并获得多组数据; -
使用step3获得的数据画出PR-curve,注意最开始应该是从(0, 1)开始的,它与坐标轴围成的面积,即是需要计算的AP。
个人疑惑
分类任务中的PR曲线是由多组阈值
计算出多组precision和recall值画出的,但是mAP中的PR-curve是通过一个阈值
计算出多组precision和recall值画出的。不知道是我哪里理解错了,还是在mAP中就是如此规定。
Reference
-
https://www.youtube.com/watch?v=FppOzcDvaDI&list=PLhhyoLH6Ijfw0TpCTVTNk42NN08H6UvNq&index=4 ,很有才的Youtuber,英语发音也很好,发布的视频都是从0到1去实现,非常适合希望深度了解的同学
-
https://github.com/rafaelpadilla/Object-Detection-Metrics ,文字版计算过程