Spaces:
Sleeping
Sleeping
# -------------------------------------------------------- | |
# 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 | |