MAP的计算方法(简单总结)

Posted ywheunji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MAP的计算方法(简单总结)相关的知识,希望对你有一定的参考价值。

MAP的计算方法

在计算MAP之前,要对TP/TN/FP/FN,precision/recall的计算有一定的了解。

一句话概括AP:recall在【0-1】范围内的平均precision

一句话概括MAP:所有类别的平均AP

得出PR曲线

一般来说,p-r曲线是p越大,r越小;p越小,r越大,跟具体的计算方式有关。

需要的内容:预测值,标签值

技术图片

 

过程:

1.首先将所有的预测框按照得分从高到低排序

2.分别与同一张图片、同一类别的所有GTs计算IOU

3.根据阈值,判断这个预测框属于TP或者FP

4.得出当前阶段的precision和recall.(意思就是在遍历过程中,每判断一个预测框,就计算一次p、r)计算方法与以往有所不同:

    precision = 当前遍历所检测的TP预测框个数   /    当前遍历检测到的TP和FP

    recall       = 当前遍历所检测的TP预测框个数  /     所有GT的个数

主要区别就在当前,目的是为了模仿取不同阈值每次遍历所有框计算pr曲线,用这种方法的时间复杂度是O(n).

所以一开始recall很低,precision很高,因为precision的分母基数小。

计算AP

现在不同的数据集计算AP方式略有不同,但总体都是一个微分计算PR曲线面积的思想。

voc2007的计算方式是先平滑曲线,对于每个点取其右边最大的precision值,连成直线。(也叫插值AP法)

技术图片

 

 

然后取11个点(在recall坐标轴每个0.1取一个点),直接平均11个点的precision的和。

voc2012的方法是直接计算平滑后的曲线与recall轴围成的面积。结果更加准确。

技术图片

 

COCO map

coco计算ap的时候采用的是101个插值点,考虑更为精细。

并且还计算了不同iou阈值的ap,下面结果的第一行就是iou阈值在(0.5-0.95)内每个0.05取一个值计算ap,然后取平均

还计算了不同的尺度对应的 ap,下图三行到六行是包括small 、medium 、large.

以下图为例是coco的结果指标:

技术图片

 

 参考:

pytorch物体检测实战---董洪义

https://zhuanlan.zhihu.com/p/60834912

 

以上是关于MAP的计算方法(简单总结)的主要内容,如果未能解决你的问题,请参考以下文章

算法:计算单词列表频率的更好方法

Spark中创建DataFrame方法总结

[Repost]目标检测中的AP,mAP

20165333四则运算阶段性总结

Python中pyspark_map数据计算方法

MapReduce方法的理解和遇到的问题总结