1、什么是mAP?
mAP(mean Average Precision)表示各类别的平均AP
2、什么是AP?
PR曲线下的面积
3、什么是PR曲线?
以Precision为y轴,以Recall为x轴所画的曲线
4、什么是Precision和Recall
![698781cc8453fb0642c4675713cfd7d0.png](https://i-blog.csdnimg.cn/blog_migrate/b77841e6dc2e708a5554eaa3271e488d.jpeg)
Precision: TP / (TP + FP),精确率,也叫查准率,在所有的预测正类中有多少真正类。
Recall: TP / (TP + FN),召回率,也叫查全率,在所有的真正类中有多少真正类被正确预测出来,与漏检率相对。
对于目标检测的任务场景,其中:
- TP: IoU>0.5的检测框数量(同一Ground Truth只计算一次)
- FP: IoU<=0.5的检测框,或者是检测到同一个GT的多余检测框的数量
- FN: 没有检测到的GT的数量
5、怎么画PR曲线?
(1)对检测框按得分从大到小排序
![a27db0eda0edba25f72b176723efab53.gif](https://i-blog.csdnimg.cn/blog_migrate/7b5b3b7de29e223e85fce7147e628b4e.gif)
(2)对不同的IoU阈值计算出Precision和Recall,以recall为横轴,precision为纵轴画出曲线。
![76ce2bfb6a9c76b85de6f2292e648ad9.gif](https://i-blog.csdnimg.cn/blog_migrate/6f70a64a9207d5fcb83f70b9bfb621dc.gif)
6、如何计算AP?
下图给出的是PASCAL VOC CHALLENGE自2010年的计算方法。该方法假设这N个样本中有M个正例,那么会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值 r,可以计算出对应(r’ > r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。注意到最终计算的面积是蓝色区域的部分:
![b2e3d01d2713cd7ab96f97625806fec5.png](https://i-blog.csdnimg.cn/blog_migrate/630e6fe8c815a6313cd8bc8930e004d0.jpeg)
下面是改自faster rcnn中计算AP的代码:
https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/datasets/voc_eval.py
![59d26dda8d60c4c3fca2fcffad8d7e7f.png](https://i-blog.csdnimg.cn/blog_migrate/90fbd4bb74a51a99a07fd1770a33c073.jpeg)
输出:
![78177f01f651b10e8d6a3ac28b6646f8.png](https://i-blog.csdnimg.cn/blog_migrate/c53df2a82ea7f12614b334adfcda4d83.jpeg)
7、如何计算mAP?
AP衡量一个类别的检测好坏,mAP则是衡量多个类别检测的好坏。把所有类的AP值取平均即可得mAP。比如有两类,类A的AP值是0.5,类B的AP值是0.2,那么mAP=(0.5 + 0.2)/ 2=0.35。