运行tool/test.py时,会调用mmdet/datasets/voc.py中的evaluate()函数计算AP值,而evaluate()又是调用mmdet/core/evalution/mean_ap.py中的eval_map()函数获取AP值。其实这个函数eval_map()也可以得到Recall和Precision,只是mmdetection的代码中没有这样处理。
先看一下eval_map()返回的内容:
mean_ap就是MAP值,另一个eval_results是一个存储字典的列表,存储的是每一类对应的真实框个数、检测框个数、召回率、精度和平均精度。
然后再看一下evaluate()是怎么接受eval_map()返回的内容:
它只对mean_ap做处理,并没有在这里得到Precision和Recall。所以可以参考下面的方式获取Precision和Recall。
result[0]表示第一类对应的字典,存储了真实框个数、检测框个数、召回率、精度