当前位置:网站首页>‘Results do not correspond to current coco set‘

‘Results do not correspond to current coco set‘

2022-07-24 05:20:00 河海CV小菜鸡

在训练YOLOV6的时候碰上了

'Results do not correspond to current coco set'

这个问题。

assert set(annsImgIds) == (set(annsImgIds) & set(self.getImgIds())) 根据这个断言检查了下。

调用coco API检查了下,打印出来len((person_imgs_id)的值为297.

from pycocotools.coco import COCO
val_info = r'VOC/annotations/instances_val.json'

coco = COCO(val_info)  # 导入验证集
person_imgs_id = coco.getImgIds()
print(len(person_imgs_id))

而在检查set(annsImgIds)时,在evaler.py文件的eval_model这个方法中

annsImgIds = [ann['image_id'] for ann in pred_results]
print(len(set(annsImgIds)))

打印出来的长度为497(也就是我验证集的数量)

然后检查了下instances_val.json文件,发现

 image_id是6,而我的数据图片id为6.8CAXX.jpg,那么就找到了问题的所在。

在dataset.py中的generate_coco_format_labels方法中

img_id = osp.basename(img_path).split('.')[0]

这样就导致以一个点分割了这个图片id,6.8CAXX.jpg被分割乘了6、8CAXX、jpg 三个字符串,所以导致了json文件中出现了image_id为6的情况。

解决办法:

在dataset.py中的generate_coco_format_labels方法中

img_id = osp.basename(img_path).split('j')[0].strip('.')

将img_id改成上述代码,以j分割,再去掉剩下来的点,代码就能成功跑通了

原网站

版权声明
本文为[河海CV小菜鸡]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_59135992/article/details/125802608