先说结论:如果已经排除了数据集格式的问题,那么就清除YOLO的缓存再试一试。
第一次将COCO数据集转为YOLO格式,拿到YOLOv7上跑,报错:
IndexError: index 81 is out of bounds for axis 0 with size 81
直觉上看,是类别编号没有弄对,COCO一共80个类,有的类的ID却超过了80,因为COCO类别ID是不连续的,转换数据集格式的时候没有注意这一点。
修改转换数据集格式的代码,将所有类的ID控制在0-79,再跑,还是这个错误,很神奇。
最后定位到是YOLOv7坑爹的缓存问题。删除数据集目录下labels.cache文件即可解决,否则无论你怎么修改数据集,YOLOv7永远读取的是先前缓存的数据。