作为一个没有什么天赋的半小白,从网上搜索想要的知识还是很辛苦的。首先感谢好多大神的分享,但是其中也不乏各种不负责任的“神”,会错误的引导读者,可能是笔误,也可能是脑袋“短路”,使得刚入门的新手(比如我),因为一个简单的问题+错误的回答而浪费很长时间,所以以后遇到问题,或者学会了新知识还是自己记录一下吧。

关于mAP(mean average precision),首先翻译成中文,即平均精度均值,从字面意思理解就是要算好多个平均精度,然后再取它们的均值。所以问题就在于AP,即平均精度怎么求。

首先上一张图关于mAP(mean average precision)平均精度均值总结

接下来根据这张图描述AP怎么算(先不用管物理意义),有两种算法:
一. 11-point interpolated average precision(不用管它的名字,直接看算法)
这里取11个数,第一个数为横轴recall大于0时,precision最大的值,记它为P(max0),第二个数为横轴recall大于0.1时,precision最大的值,记它为P(max1),依次类推,最后一个数就是recall大于1.0时,precision最大的值,记为P(max1.0);然后把这11个数加起来,再除以11,就得到了AP值,是不是很简单?

二.另一种方法
不取11个数了,取M个数,每个数由之前的0,0.1,0.2,…1,变为1/M,2/M,3/M…,1,把M个precision最大的值加起来,然后除以M。(M是什么后面说)

这样就算了一个AP,然后根据不同的图,算出不同的AP,最后求个均值,就变成了mAP。

下面说一下上面那个图是如何得来的,以及M是什么。

我们首先观察到横轴叫做precision,纵轴叫做recall。这个图的学名就叫做PR曲线。
我们假设有一个算法,它的作用是识别图片是否为男女:
输入:图片像素值
输出:是男人的概率

编号 真实值 预测概率
1 0.97
2 0.43
3 0.68
4 0.76
5 0.39

我们还要设定一个阈值,这个阈值的作用就是:对于我们的算法,如果预测概率大于它,就预测它是个男人,如果概率小于它,就预测她是个女人。
首先假设阈值为0.5,则上表又就变为。

编号 真实值 预测概率 预测结果
1 0.97
2 0.43
3 0.68
4 0.76
5 0.39

我们可以看到,4和5预测错误。
然后根据这个结果,我们可以算出来一组PR值,其中:
precision = 预测是男人对的结果个数/(预测是男人对的结果个数+预测是男人错的结果个数) 即 :2/(2+1) = 2/3
recall = 预测是男人对的结果个数/(预测是男人对的结果个数+没预测出来的男人个数) 即:2/(2+1) = 2/3
这样,得到了PR曲线的一个点。

接下来,注意啦!
改变阈值,然后预测结果就会发生变化,同时precision和recall也会发生变化,会得到PR曲线不同的点。将阈值分别设置为0~1中不同的值,得到PR曲线上不同的点,最终,就可以绘出PR曲线整个图。
然后,根据PR图,就可以算出这些样本的AP值,这里补充一下,如果采用第二种算法,M为样本中正样本的个数(这里为男人的个数)。
最后,根据不同的样本集,算出不同的AP值,再取平均,就得到了mAP的值了!

相关文章:

  • 2021-04-30
  • 2021-04-29
  • 2022-02-12
  • 2022-12-23
  • 2022-12-23
  • 2021-09-24
  • 2021-11-17
  • 2021-05-17
猜你喜欢
  • 2021-07-30
  • 2021-07-16
  • 2022-12-23
  • 2021-10-16
  • 2022-12-23
  • 2021-05-09
  • 2021-04-08
相关资源
相似解决方案