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_dict 和 c 这俩 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版权协议,转载请附上原文出处链接和本声明。