智能交通开发者专栏

COCO物体检测评测方法简介

2023-02-10  本文已影响0人  ce0b74704937

本文从ap计算到map计算,最后到coco[0.5:0.95:0.05] map的计算,一步一步拆解物体检测指标map的计算方式。

一、ap计算方法

一个数据集有多个类别,对于该数据库有5个gt,算法检测出来10个bbox,对于人这个类别来说检测有下面结果,IoU>0.5时为GT与bbox之间是匹配关系。

GT-boxes BB confidence IoU>0.5 TP FP precision recall
GT1 BB1 0.9 1 1 0 1.00 0.14
GT2 BB2 0.9 1 1 0 1.00 0.29
GT1 BB3 0.8 1 0 1 0.67 0.29
BB4 0.7 0 0 1 0.50 0.29
BB5 0.7 0 0 1 0.40 0.29
GT3 BB6 0.7 1 1 0 0.50 0.43
BB7 0.7 0 0 1 0.43 0.43
BB8 0.7 0 0 1 0.38 0.43
GT4 BB9 0.7 1 1 0 0.44 0.57
GT5 BB10 0.7 1 1 0 0.50 0.71

根据上述结果可以计算出如下结果,要注意的是BB1\BB3都与GT1匹配,所以BB3计算的时候是false positive。

那么就可以得到两个数组(为了符合0-1,在原始的数组两边加入了两个值):

Precision = [0] + [1, 1, 0.67, 0.50, 0.40, 0.50, 0.43, 0.38, 0.44, 0.50] + [0]

Recall = [0] + [0.14, 0.29, 0.29, 0.29, 0.29, 0.43, 0.43, 0.43, 0.57, 0.71] + [1]

对Precision进行平滑后得到:

Precision = [1., 1., 1., 0.67, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.]

通过平滑后的数据可以画出下面曲线图:

1.png

对于上述PR值,如果我们采用:

  1. VOC2010之前的方法,我们选取Recall >= 0, 0.1, ..., 1的11处Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0。此时人类别的 AP = 5.5 / 11 = 0.5
  2. VOC2010及以后的方法,对于Recall >= 0, 0.14, 0.29, 0.43, 0.57, 0.71, 1,我们选取此时Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0。此时人类别的AP = (0.14-0)*1 + (0.29-0.14)*1 + (0.43-0.29)*0.5 + (0.57-0.43)*0.5 + (0.71-0.57)*0.5 + (1-0.71)*0 = 0.5

由于上面例子图不是很一般,下面根据知乎的图来描述关于积分的计算:

在得到P和R后,可以画出PR曲线如下所示:

2.png

对PR曲线进行平滑处理,即对PR曲线上的每点Precision值都取右侧最大值,平滑操作如下:

3.png

得到平滑后的曲线后,VOC2010年之前的方法是采样11个点,来计算AP


4.png

VOC2010之后改用求Area under curve方式,即曲线的积分来得到AP

5.png

二、map的计算

得到一类的ap后,多个类别求平均即为map

三、coco[0.5:0.95:0.05] map的计算

每个IoU在多类别上都可以得到map,多个IoU的平均就是coco[0.5:0.95:0.05] map的指标。个人认为应该称为mmap会形象一点。

参考文献:

  1. https://www.zhihu.com/question/53405779/answer/419532990 (上述例子来源,但是有所修改,因为他的例子有点问题)
  2. https://zhuanlan.zhihu.com/p/88896868 (上述的图片来源)
上一篇下一篇

猜你喜欢

热点阅读