Describe the bug
I encountered this problem when I followed the document on this website 'https://mmdetection.readthedocs.io/en/latest/user_guides/new_model.html' to train my own dataset. The difference from the document is that I trained the FCOS model, while the document used Mask R-CNN.
Reproduction
I followed the tutorial in the document and created a config file named 'fcos-r18_fpn_cattle_coco.py', which is located in the 'config/fcos' directory. The config file is as follows.
Press the Enter key, and the command line output is as follows:
Traceback (most recent call last):
File "tools/train.py", line 121, in
main()
File "tools/train.py", line 117, in main
runner.train()
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1728, in train
self._train_loop = self.build_train_loop(
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1520, in build_train_loop
loop = LOOPS.build(
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build
return self.build_func(cfg, args, kwargs, registry=self)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg
obj = obj_cls(args) # type: ignore
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/loops.py", line 46, in init
super().init(runner, dataloader)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/base_loop.py", line 26, in init
self.dataloader = runner.build_dataloader(
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1370, in build_dataloader
dataset = DATASETS.build(dataset_cfg)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build
return self.build_func(cfg, args, kwargs, registry=self)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg
obj = obj_cls(args) # type: ignore
TypeError: init() got an unexpected keyword argument 'data_root'
**Bug fix**
I finally discovered that the issue was due to the base configuration file I referenced, which included a file named 'lsj-100e_coco-detection.py' located in the 'config/common' directory. Within that file, the definition of train_dataloader contains a dictionary within the dataset dictionary with the key 'dataset'. I resolved the issue by modifying my configuration file to add a dictionary with the key 'dataset'. The modified configuration file is as follows.
base = './fcos_r50_fpn_gn-head-center-normbbox-centeronreg-giou_8xb8-amp-lsj-200e_coco.py' # noqa
Describe the bug I encountered this problem when I followed the document on this website 'https://mmdetection.readthedocs.io/en/latest/user_guides/new_model.html' to train my own dataset. The difference from the document is that I trained the FCOS model, while the document used Mask R-CNN.
Reproduction
model = dict( backbone=dict( depth=18, init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet18')), neck=dict(in_channels=[64, 128, 256, 512]), bbox_head=dict(num_classes=1), )
Modify dataset related settings
data_root = '/home/ly/code/objectDetection/mmdetection/data/cattleCOCO' metainfo = { 'classes': ('cattle', ),
'palette': [
} train_dataloader = dict( batch_size=1, dataset=dict( data_root=data_root, metainfo=metainfo, ann_file='annotations/instances_train.json', data_prefix=dict(img='train/')) ) val_dataloader = dict( dataset=dict( data_root=data_root, metainfo=metainfo, ann_file='annotations/instances_val.json', data_prefix=dict(img='val/')) )
test_dataloader = val_dataloader
test_dataloader = dict( dataset=dict( data_root=data_root, metainfo=metainfo, ann_file='annotations/instances_test.json', data_prefix=dict(img='test/')) )
Modify metric related settings
val_evaluator = dict(ann_file=data_root + 'annotations/instances_val.json') test_evaluator = dict(ann_file=data_root + 'annotations/instances_test.json')
python tools/train.py configs/fcos/fcos-r18_fpn_cattle_coco.pypython
Traceback (most recent call last): File "tools/train.py", line 121, in
main()
File "tools/train.py", line 117, in main
runner.train()
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1728, in train
self._train_loop = self.build_train_loop(
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1520, in build_train_loop
loop = LOOPS.build(
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build
return self.build_func(cfg, args, kwargs, registry=self)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg
obj = obj_cls(args) # type: ignore
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/loops.py", line 46, in init
super().init(runner, dataloader)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/base_loop.py", line 26, in init
self.dataloader = runner.build_dataloader(
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1370, in build_dataloader
dataset = DATASETS.build(dataset_cfg)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build
return self.build_func(cfg, args, kwargs, registry=self)
File "/home/ly/anaconda3/envs/mm/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg
obj = obj_cls(args) # type: ignore
TypeError: init() got an unexpected keyword argument 'data_root'
base = './fcos_r50_fpn_gn-head-center-normbbox-centeronreg-giou_8xb8-amp-lsj-200e_coco.py' # noqa
model = dict( backbone=dict( depth=18, init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet18')), neck=dict(in_channels=[64, 128, 256, 512]), bbox_head=dict(num_classes=1), )
Modify dataset related settings
data_root = '/home/ly/code/objectDetection/mmdetection/data/cattleCOCO' metainfo = { 'classes': ('cattle', ),
'palette': [
} train_dataloader = dict( batch_size=1, dataset=dict( dataset=dict( data_root=data_root, metainfo=metainfo, ann_file='annotations/instances_train.json', data_prefix=dict(img='train/'))) ) val_dataloader = dict( dataset=dict( dataset=dict( data_root=data_root, metainfo=metainfo, ann_file='annotations/instances_val.json', data_prefix=dict(img='val/'))) )
test_dataloader = val_dataloader
test_dataloader = dict( dataset=dict( dataset=dict( data_root=data_root, metainfo=metainfo, ann_file='annotations/instances_test.json', data_prefix=dict(img='test/'))) )
Modify metric related settings
val_evaluator = dict(ann_file=data_root + 'annotations/instances_val.json') test_evaluator = dict(ann_file=data_root + 'annotations/instances_test.json')