运行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]表示第一类对应的字典,存储了真实框个数、检测框个数、召回率、精度

在mmdetection中,测试时通过调用mmdet/datasets/voc.py的evaluate()和mmdet/core/evalution/mean_ap.py的eval_map()计算AP值。虽然eval_map()能提供Recall和Precision,但默认未输出。可通过处理eval_map()的返回结果,如result[0],来获取各类别的Precision和Recall。详细方法和原理可参考相关博客进行学习。
最低0.47元/天 解锁文章
4864





