目标检测中最常用的测评指标就是mAP(mean Average Precision),但对其计算过程一直似懂非懂,没有完全弄清楚。在看过网上一些资料后,自以为弄清楚了,下面以倒叙的方式简单谈谈自己的理解,目的在于做个记录,如果有读者没看懂或者觉得博主理解有误,欢迎交流探讨。
- mAP是对各目标类计算得到的AP取平均值,要理解mAP,就要知道AP是怎么算的。
- 某类目标(假设为car)的AP可以理解为car类PR曲线(Precision-Recall)下的面积。
- 为了画出car的PR曲线,要对测试集上所有预测出的类别为car的bounding box按照置信度降序排列,然后标记每个bounding box是TP(True Positive)还是FP(False Positive),并分别对TP和FP的数目进行累计,计算相应的Precision和Recall。Precision是指在所有的预测中有多少是正确的, P=TP/(TP+FP)=TP/(all detections);Recall是指在所有正确的(目标检测中指GT)中有多少被预测出来了,R=TP/(TP+FN)=TP/(all GTs)。
- TP和FP的判断:VOC中对每个类别为car的bounding box,计算该bounding box与其所在的image中所有的GT的IoU(交并比),如果其中最大的IoU>=0.5,则记为TP;否则记为FP(包括IoU都为0的情况)。
- 要注意的一点是,按照上面的方法画出的PR曲线会存在抖动,如下图所示。
为了解决该问题,VOC采用了interpolated average precision方法,大致思路就是对上面的PR曲线进行平滑。VOC2007是按照下面的公式进行平滑的:
其中,
VOC2012则有所改变,不再是对召回率在[0,1]之间的均匀分布的11个点,而是对每个不同的recall值都计算一个 ρinterp(r) ρ i n t e r p ( r ) ,然后求平均,经过interpolate平滑后的PR曲线如下图所示。
关于VOC数据集的mAP计算过程的简单理解就是上面五点,有关mAP更详细的解释可以参考资料2,里面讲的很清楚。
参考资料:
1. 目标检测中的mAP是什么含义? - Wentao MA的回答 - 知乎
2. https://github.com/rafaelpadilla/Object-Detection-Metrics(强烈推荐)
3. VOCevaldet.m