MMDetection KeyERROR

MMDetection KeyERROR

接触mmdetection没多久,看Swin论文的时候,突然想跑一跑Sparse-RCNN,但是官方并没有给出以Swin作为backbone的Sparse-RCNN的config文件(也可能是我菜没找到),所以就自己改config文件跑。
第一次改config文件,没啥经验,就结合着现有的Sparse-RCNN和基于Swin的Mask-RCNN的config,改完之后报了这么个错:

Traceback (most recent call last):
  File "tools/train.py", line 189, in <module>
    main()
  File "tools/train.py", line 90, in main
    cfg = Config.fromfile(args.config)
  File "/home/linch/anaconda3/envs/mmdet/lib/python3.8/site-packages/mmcv/utils/config.py", line 329, in fromfile
    cfg_dict, cfg_text = Config._file2dict(filename,
  File "/home/linch/anaconda3/envs/mmdet/lib/python3.8/site-packages/mmcv/utils/config.py", line 255, in _file2dict
    raise KeyError('Duplicate key is not allowed among bases')
KeyError: 'Duplicate key is not allowed among bases'

看了好久,报错的点是这么个代码:

for c in cfg_dict_list:
    if len(base_cfg_dict.keys() & c.keys()) > 0:
        raise KeyError('Duplicate key is not allowed among bases')

意思大概是 base_cfg_dictc 这俩 dict 里面有重复的键值。

然后就以为是我哪个字典写错了,就开始一个个把自己写的字典注释掉,最后一直到全部注释完了,发现还是报这个错,现在config里只剩下这么点东西:

_base_ = [
    './sparse_rcnn_r50_fpn_1x_coco.py',
    '../_base_/datasets/coco_detection.py',
    '../_base_/schedules/schedule_1x.py',
    '../_base_/default_runtime.py'
]

好了真相大白,因为./sparse_rcnn_r50_fpn_1x_coco.py这个文件里面有这么个代码:

_base_ = [
    '../_base_/datasets/coco_detection.py',
    '../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]

所以是两个文件里面的_base_里有重复,删了就完了。

好吧还是我太菜了!


版权声明:本文为Linch_123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。