MMdetection 问题报错 mmdet/evaluation/metrics/coco_metric.py data[‘category_id’] = self.cat_ids[label] IndexError: list index out of range

方案一:有人说 在自己定义的 conifg文件中增加 

metainfo = {
    'classes': ('class1','class2', 'class2',),
    'palette': [
        (220, 20, 60), (221, 11, 22),(221, 11, 42),
    ]
}

 

方案二:修改mmdet/evaluation/metrics 文件的内容,mmdet 是 python/site-package下的 mmdet

1 修改 mmdet/evaluation/functional/class_names.py

def coco_classes() -> list:
    """Class names of COCO."""
    return [

        'clas1','class2','class3',

    ]

  

2 修改 mmdet/datasets/coco.py

METAINFO = {
        'classes':('class1','class2','class3',), 
        # palette is a list of color tuples, which is used for visualization.
        'palette':  [ (220, 20, 60), (221, 11, 22),(221, 11, 42),]    
    }

  

方案三:我试了一下,还是没有用,感觉这是MMdetection的一个BUG,然后分别打印出来 报错中的 label self.cat_ids,

1 在完成方案一和方案二之后 如果label超出了你设置的类数量范围,可以检查config文件中关于model原始的config(一般在_base_文件夹下的model子文件夹下)的 num_classes=3;

2 如果是没有问题的;那肯定就是 self.cat_ids的维度小于你设置的类的数量,那可以选择简单粗暴一些,直接在mmdet/evaluation/metrics/coco_metric.py 中的 def compute_metrics(self, results: list) -> Dict[str, float]:部分,直接修改 self.cat_ids = [0, 1] ;问题肯定就被就解决了

 

方案四: 【最终】

按照方案一或者方案二修改后(观察方案一会覆盖方案二的部分);重点是model 配置文件中,num_classes 的值,需要设置,或者在最终的配置文件中覆盖;

posted @ 2024-11-09 11:45  未名w  阅读(7)  评论(0编辑  收藏  举报