jbwang1997 / OBBDetection

OBBDetection is an oriented object detection library, which is based on MMdetection.
Apache License 2.0
519 stars 111 forks source link

invalid syntax #174

Open fhaji75 opened 1 year ago

fhaji75 commented 1 year ago

Hello, I want to train model with different hyperparameters so I changed the hyperparameter of cfg.data.train like img_scale in the loop but I get the below error:

raceback (most recent call last): File "/miniconda3/envs/myenv/lib/python3.7/site-packages/yapf/yapflib/yapf_api.py", line 183, in FormatCode tree = pytree_utils.ParseCodeToTree(unformatted_source) File "/miniconda3/envs/myenv/lib/python3.7/site-packages/yapf/yapflib/pytree_utils.py", line 131, in ParseCodeToTree raise e File "/miniconda3/envs/myenv/lib/python3.7/site-packages/yapf/yapflib/pytree_utils.py", line 129, in ParseCodeToTree ast.parse(code) File "/miniconda3/envs/myenv/lib/python3.7/ast.py", line 35, in parse return compile(source, filename, mode, PyCF_ONLY_AST) File "", line 152 config='dataset_type = 'DOTADataset' ^ SyntaxError: invalid syntax

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "tools/train.py", line 211, in main() File "tools/train.py", line 195, in main config=cfg.pretty_text, File "h/miniconda3/envs/myenv/lib/python3.7/site-packages/mmcv/utils/config.py", line 508, in prettytext text, = FormatCode(text, style_config=yapf_style, verify=True) File "/miniconda3/envs/myenv/lib/python3.7/site-packages/yapf/yapflib/yapf_api.py", line 186, in FormatCode raise errors.YapfError(errors.FormatErrorMsg(e)) yapf.yapflib.errors.YapfError: :152:43: invalid syntax

I changed train.py like this: backbone = {'pretrained':['torchvision://resnet101', 'torchvision://resnet50'], 'backbone':{'depth':[101,50]}} data_train = {'img_scale' : [(512, 512),(1024,1024), (640, 640)]}

for b in range(len(backbone['pretrained'])): cfg.model['pretrained'] = backbone['pretrained'][b] cfg.model['backbone']['depth'] = backbone['backbone']['depth'][b]

print("model***")

    # print(type(cfg.model))
    # print(cfg.model)
    # print("***************************************************************************************************")
    model = build_detector(cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)  
    for d in range(len(data_train['img_scale'])):
            cfg.data.train.pipeline[3].img_scale = data_train['img_scale'][d]
            cfg.data.train.pipeline[3].img_scale = data_train['img_scale'][d]
            print(cfg.data.train['pipeline'][3]['img_scale'], " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ " ,data_train['img_scale'][d])
            datasets = [build_dataset(cfg.data.train)]
            if len(cfg.workflow) == 2:
                val_dataset = copy.deepcopy(cfg.data.val)
                val_dataset.pipeline = cfg.data.train.pipeline
                datasets.append(build_dataset(val_dataset))
            if cfg.checkpoint_config is not None:
                # save mmdet version, config file content and class names in
                # checkpoints as meta data
                cfg.checkpoint_config.meta = dict(
                    mmdet_version=__version__,
                    config=cfg.pretty_text,
                    CLASSES=datasets[0].CLASSES)
            # add an attribute for visualization convenience
            model.CLASSES = datasets[0].CLASSES
            train_detector(
                model,
                datasets,
                cfg,
                distributed=distributed,
                validate=(not args.no_validate),
                timestamp=timestamp,
                meta=meta)