if args.savepath is not None: # update configs according to CLI args if args.work_dir is not None cfg.savepath = args.savepath elif cfg.get('work_dir', None) is None: # use config filename as default work_dir if cfg.work_dir is None cfg.savepath = osp.join('./results', osp.splitext(osp.basename(args.config))[0]) if args.gpu_ids is not None: cfg.gpu_ids = args.gpu_ids else: cfg.gpu_ids = range(1) if args.gpus is None else range(args.gpus) mata = dict() # make dirs mkdir_or_exist(osp.abspath(cfg.savepath)) timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime()) cfg.log_file = osp.join(cfg.savepath, f'{timestamp}.log') # create text log # build model model = build_network(cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg) load(cfg.load_from, model, None) # build dataset datasets = build_dataset(cfg.data.test) # put model on gpu if torch.cuda.is_available(): # model = DataParallel(model.cuda(), device_ids=cfg.gpu_ids) model = model.cuda()
if args.work_dir is not None: # update configs according to CLI args if args.work_dir is not None cfg.work_dir = args.work_dir elif cfg.get('work_dir', None) is None: # use config filename as default work_dir if cfg.work_dir is None cfg.work_dir = osp.join('./work_dirs', osp.splitext(osp.basename(args.config))[0]) if args.gpu_ids is not None: cfg.gpu_ids = args.gpu_ids else: cfg.gpu_ids = range(1) if args.gpus is None else range(args.gpus) mata = dict() # make dirs mkdir_or_exist(osp.abspath(cfg.work_dir)) timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime()) cfg.log_file = osp.join(cfg.work_dir, f'{timestamp}.log') # create text log logger = get_root_logger(log_file=cfg.log_file, log_level=cfg.log_level) dash_line = '-' * 60 + '\n' logger.info(dash_line) logger.info(f'Config:\n{cfg.pretty_text}') # build model model = build_network(cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg) logger.info('-' * 20 + 'finish build model' + '-' * 20) logger.info('Total Parameters: %d, Trainable Parameters: %s', model.net_parameters['Total'], str(model.net_parameters['Trainable']))