1. 现象
我自己实际有 1 个类别,但是套用coco数据集80个类别的pipeline。
测试的时候,有时候是yolo模型,有时候是faster-rcnn模型,都遇到过。训练的时候正常,在val上推断的时候就会报错:
data['category_id'] = self.cat_ids[label]
IndexError: list index out of range
2. 解决办法
找到相关配置文件,修改其中的 conf_thres 阈值,有时候默认的是0.005这个量级;适当调高一些就可以了;(有时候上调一次,不管用,还得再调高一些,反正我遇到两次,都是调高阈值解决的);
比如我是
vi configs/base/models/faster_rcnn_r50_fpn.py ,打开配置文件;
修改 test_cfg 里的
score_thr=0.3
3. 可能的原因
因为套用了80个类别的pipeline,理论上,模型预测类别为3的概率是有的(虽然可能很小),但是如果自己的类别数目只有2,同时默认阈值又很小,这时候就会报错了。所以提高阈值,就不会预测成类别3了。