VOC2007数据集使用mAP值作为检测算法检测结果的性能评估得分。mAP意思是mean Average Precision,Precision是指精度,Average Precision是指11个等分候选点上的精度,mean Average Precision是指所有类别的AP的平均。
嗯,听起来挺绕的。详细说来:
计算AP后会绘制PR曲线:纵坐标是P表示Precision精度,横坐标表示Recall表示召回率。
TP=True Positive, FP=False Positive, TN=True Negative, FN=False Negative
Precision=TP/(TP+FP), Recall=TP/(TP+FN)
而我们实际的检测结果往往是这样的:
im_id, x1, y1, x2, y2, score
这个score是单个检测结果的“信心”,或者叫“可信度”,用来给检测结果之间排序。查看VOCdevkit的代码不难发现,评估过程中会根据score做bbdt的降序排序,然后逐一处理。
其实一般的检测结果bbdt都是经过nms的。那么所有bbdt一起排序其实没什么必要。
对于所有bbdt,考虑im_id相同的,也就是同一张测试图像上的检测结果,将它们按照score降序排序,然后逐一去匹配ground truth,如果IoU大于0.5则认为匹配成功,则这个ground truth的bbox要做一个标记,后续不能再匹配它。这种可能是存在的:因为可能这个bbgt很大,而有两个bbdt几乎没有交叉地、分别匹配上了这个bbgt的两个部分。