Spaces:
Runtime error
Runtime error
| # -------------------------------------------------------- | |
| # SiamMask | |
| # Licensed under The MIT License | |
| # Written by Qiang Wang (wangqiang2015 at ia.ac.cn) | |
| # -------------------------------------------------------- | |
| import json | |
| from os.path import exists | |
| def proccess_loss(cfg): | |
| if 'reg' not in cfg: | |
| cfg['reg'] = {'loss': 'L1Loss'} | |
| else: | |
| if 'loss' not in cfg['reg']: | |
| cfg['reg']['loss'] = 'L1Loss' | |
| if 'cls' not in cfg: | |
| cfg['cls'] = {'split': True} | |
| cfg['weight'] = cfg.get('weight', [1, 1, 36]) # cls, reg, mask | |
| def add_default(conf, default): | |
| default.update(conf) | |
| return default | |
| def load_config(args): | |
| assert exists(args.config), '"{}" not exists'.format(args.config) | |
| config = json.load(open(args.config)) | |
| # deal with network | |
| if 'network' not in config: | |
| print('Warning: network lost in config. This will be error in next version') | |
| config['network'] = {} | |
| if not args.arch: | |
| raise Exception('no arch provided') | |
| args.arch = config['network']['arch'] | |
| # deal with loss | |
| if 'loss' not in config: | |
| config['loss'] = {} | |
| proccess_loss(config['loss']) | |
| # deal with lr | |
| if 'lr' not in config: | |
| config['lr'] = {} | |
| default = { | |
| 'feature_lr_mult': 1.0, | |
| 'rpn_lr_mult': 1.0, | |
| 'mask_lr_mult': 1.0, | |
| 'type': 'log', | |
| 'start_lr': 0.03 | |
| } | |
| default.update(config['lr']) | |
| config['lr'] = default | |
| # clip | |
| if 'clip' in config or 'clip' in args.__dict__: | |
| if 'clip' not in config: | |
| config['clip'] = {} | |
| config['clip'] = add_default(config['clip'], | |
| {'feature': args.clip, 'rpn': args.clip, 'split': False}) | |
| if config['clip']['feature'] != config['clip']['rpn']: | |
| config['clip']['split'] = True | |
| if not config['clip']['split']: | |
| args.clip = config['clip']['feature'] | |
| return config | |