非COCO数据集,使用pycocotools评价yolo模型的几点说明

一.格式转换

        -yolo输出的预测数据是txt格式,而pycocotools使用json格式对ground truth和predict进行评估

*首先说明,数据集的图片名称应是数字,不含字母的,如果不是需要自己写个脚本给图片批量改名称

1.yolo预测的数据可以通过开启val.py/test.py中的save_json来开启,同时把is_coco硬编码为False;

把self.class_map硬编码为self.class_map=list(range(1000)[1:]),使得预测的json中标签id从1开始;

2.数据集的标签如果没有json格式的需要转换成json格式(代码自行搜索)

        注意事项:

        ①标签转json时需要注意类别id的初始值,设为从1开始,比如有4类,类别id就是[1,2,3,4];

        ②注意图片id的初始值,与数据集中的名称对应,数据集中从0.jpg开始初始值就设为0,从1.jpg开始就设为1,如果初始值设置的不对会出现评价后的值大部分都为0,或者报错提示“标签不匹配”。

二、问题说明

①上面多次提到类别id从1开始,要注意标签转json和预测的json文件的类别id都是从1开始,否则会出现评价后的值大部分都为0;

②如果标签转json和预测的json文件的类别id都是从0开始,则最后一类目标不能完成评估,最后一类的所有AP和AR值都为-1;

③要注意使用pycocotools评价时,标签转json时,这个标签要和验证集/训练集(数量)对应,不能是预测c生成的json是验证集或测试集,而标签转json是整个数据集所有的标签,这会出现评价后的AP值低。

④最后pycocotools的评价值和yolo自带的评价指标不一致,这是正常的。

你可能感兴趣的:(YOLO,人工智能,机器学习,目标检测)