YOLOv3计算自己数据集训练模型的mAP
关于使用YOLOv3计算mAP的帖子已经很多了。这里不再过多啰嗦,可以参考https://blog.csdn.net/amusi1994/article/details/81564504的介绍。
但是如果自己训练了模型,直接照搬常常会遇到各种问题,这里就几个比较迷惑的点进行记录:
使用valid计算结果数据
类型配置
计算mAP的第一步就是使用detector.c中的validate_detector,利用验证集图片计算一堆的结果,然后存在result文件夹中的txt文件中。
如果你使用的不是coco或者voc数据集,根据源码,将会使用你自定义的type:
char *type = option_find_str(options, "eval", "voc");
所以建议在data文件中增加一行配置:
eval = YOUR_TYPE
如果type为coco,将会保存成json文件;如果type为imagenet,将会将所有的结果保存到imagenet-detection.txt文件中。如果不配置,也不会产生什么影响,依然会就会默认使用comp4_det_test_[classname].txt。只是为了保证工程的完整性建议修改。
结果存储文件名
另外,建议将源码中的outfile初始值修改一下,将validate_detector函数中的
if(!outfile) outfile = "comp4_det_test_";
改为:
if(!outfile) outfile