oguzakif's picture
init repo
d4b77ac
# --------------------------------------------------------
# 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