前言

一直不是很理解目标检测中的mAP是如何的,今天具体来写一下,加深一下理解。

mAP@0.5

mAP@0.5:mean Average Precision
通俗来说,就是给每一类分别计算AP,然后做mean平均。
那AP是什么呢,之前我一直以为是Average Precision,没错,就是平均精确度,可是这个怎么定义呢?

AP是Precision-Recall Curve(PRC)下面的面积!!!

在这里插入图片描述

PRC怎么看:先看平滑不平滑(蓝线明显好些),在看谁上谁下(同一测试集上),一般来说,上面的比下面的好(绿线比红线好)。

接下来来想一下Precision和Recall怎么定义。
之前都知道:

P r e c i s i o n = T P T P + F P Precision = {TP \over TP + FP } Precision=TP+FPTP

R e c a l l = T P T P + F N Recall = {TP \over TP + FN} Recall=TP+FNTP

其中:
True Positive区域:与Ground truth区域的IoU>=0.5的
False Positive区域:IoU < 0.5的
False Negative区域:遗漏的Ground truth区域
True Negative区域:没法算,为啥呢?因为没有标框的地方无法界定啊。

理一下思路

在目标检测中,Precision就是检测出来的框的数目(或者是面积吧),除以一共画出来的框。比如说有时候你预测出来10个框,只有5个是正确的,那Precision就是5/10 = 50%。这个只是简单的比喻,可能里面会有细节上的错误。
然后Recall就是预测出来的正确的框,除以正确的框再加上没有预测出来的ground truth的框。距离来说就是,假设你有10个类别,你预测了6个框,6个框全中了,但是还有4个没框的,这时候Recall就是6/10=60%。

另外一个点就是,为什么Precision和Recall值是矛盾的呢? 我理一下思路,来个极端的例子,假如有10个物体需要被检测出来,我只预测出一个框,并且是正确的,那我的Precision就是100%,但是recall值却很低为1/10 = 10%。

参考

  1. https://blog.csdn.net/otengyue/article/details/89426004
  2. https://www.zhihu.com/question/19645541
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐