本文介绍coco style的map计算方式
相关概念
- map mean average precision,表示各类别ap的平均值
- ap average precision,表示P-R曲线下的面积
- p precision,查准率,
- r recall,召回率,
- TP true positive,在detection中,表示成功检测到某个ground truth bounding box的预测框的数量
- FP false positive,表示没能匹配到某个ground truth bounding box的预测框的数量
- FN false negative,表示没能检测出来的ground truth bounding box 注意FN和FP是不一样的
- 判定阈值 表示判断预测框成功检测出某个gt bbox的iou阈值,即大于该阈值时,才认为成功匹配到了,在coco style的map计算中,存在多个判定阈值
为了弄清楚cocoapi是如何计算map的,我们需要搞清楚下面几个问题
如何计算TP和FP
计算TP和FP其实就是为所有的预测框分配gt bbox。
cocoapi的分配算法如下所示:
输入: 图片 ,类别 ,判定阈值
过程:
- 找到上所有属于类的预测框集合
- 找到上所有属于类的gt bbox集合
- 将按照分类置信度降序排列
-
-
- 对于任意,如果都有且,则与匹配。
-
这样就为图片上属于类的预测框分配了gt bbox。一部分预测框分配到了gt bbox,一部分预测框没有分配到gt bbox,还有一部分gt bbox没有被任何预测框匹配。
接着,我们可以找到所有整个验证集上(例如coco val2017)上,属于类的预测框,然后将这些预测框按照分类置信度排列起来,假设gt bbox的数量为9,假设我们的检测结果如下:
| 预测框 | 分类置信度 | 是否匹配到gt bbox |
|---|---|---|
| 0.95 | true | |
| 0.9 | true | |
| 0.85 | true | |
| 0.8 | false | |
| 0.75 | true | |
| 0.7 | true | |
| 0.65 | false | |
| 0.6 | true | |
| 0.55 | false | |
| 0.5 | true |
按照上面提到的算法判断一个预测框是否匹配到gt bbox,可以得出上面的表格,不难计算此时,,由于总共有9个gt bbox,所以还有2个gt bbox没有被检测出来(即没有任何一个预测框和gt bbox匹配),所以,所以,
如何画出p-r曲线
ap是p-r曲线下的面积。
我们现在已经得到了验证集(如coco val2017)的类别的检测结果,并且做出了上面的表格,接下来就需要画出p-r曲线。此时要计算各个r下的p值,注意TP和FP是累积的。可以对上表进一步计算:
| 预测框 | 分类置信度 | 是否匹配到gt bbox | TP | FP | ||
|---|---|---|---|---|---|---|
| 0.95 | true | 1 | 0 | 1.0 | 0.11 | |
| 0.9 | true | 2 | 0 | 1.0 | 0.22 | |
| 0.85 | true | 3 | 0 | 1.0 | 0.33 | |
| 0.8 | false | 3 | 1 | 0.75 | 0.33 | |
| 0.75 | true | 4 | 1 | 0.8 | 0.44 | |
| 0.7 | true | 5 | 1 | 0.83 | 0.56 | |
| 0.65 | false | 5 | 2 | 0.71 | 0.56 | |
| 0.6 | true | 6 | 2 | 0.75 | 0.67 | |
| 0.55 | false | 6 | 3 | 0.67 | 0.67 | |
| 0.5 | true | 7 | 3 | 0.7 | 0.78 |
最终接近于1而接近于0。我们可以用上表的中的为横坐标,为纵坐标画出一条曲线,即p-r曲线,这条曲线通常情况是单调递减的曲线,起点为,终点为,想了解更多请参见西瓜书。
图片来源见水印
如何计算ap
目前我们得到了验证集上类的p-r曲线,类的ap值即为p-r曲线下的面积,由于这条曲线的具体表达式很难找出,所以我们找一个估计值来尽可能接近真实的ap值。
在cocoapi的估计方式对这条曲线进行均匀的采样,即分别取时对应的值,然后计算这101个值得平均值,就得到了该验证集上类的ap。
如何计算map
只需要计算全部类别的的均值。
note
在coco style的map的计算过程中,还有另外两个约束条件maxdet,预测框的scale范围,这些都是用来约束预测框的。
比如maxdet=100,就在上面算法中,寻找时,只将图片的类预测框分类置信度最高的100个框加入。
当scale范围为时,就在上面算法中,寻找时,只将图片的类所有scale落在范围内的预测框加入。
后面的计算方式均不变。
转载请注明出处