if not torch.cuda.is_available(): logging.info('no gpu device available') sys.exit(1) cudnn.benchmark = True cudnn.enabled = True if config.train_params.use_seed: utils.set_seed(config.train_params.seed) logging.info("args = %s", args) logging.info('Training with config:') logging.info(pprint.pformat(config)) if os.path.isfile(os.path.join(args.load_path, 'net_config')): config.net_config, config.net_type = utils.load_net_config( os.path.join(args.load_path, 'net_config')) derivedNetwork = getattr(model_derived, '%s_Net' % config.net_type.upper()) model = derivedNetwork(config.net_config, config=config) model.eval() if hasattr(model, 'net_config'): logging.info("Network Structure: \n" + '|\n'.join(map(str, model.net_config))) if args.meas_lat: latency_cpu = utils.latency_measure(model, (3, 224, 224), 1, 2000, mode='cpu') logging.info('latency_cpu (batch 1): %.2fms' % latency_cpu) latency_gpu = utils.latency_measure(model, (3, 224, 224), 32,
def main(): args = parse_args() if args.out is not None and not args.out.endswith(('.pkl', '.pickle')): raise ValueError('The output file must be a pkl file.') cfg = mmcv.Config.fromfile(args.config) # set cudnn_benchmark if cfg.get('cudnn_benchmark', False): torch.backends.cudnn.benchmark = True cfg.model.pretrained = None cfg.data.test.test_mode = True if args.net_config is not None: cfg.model.backbone.net_config = utils.load_net_config(args.net_config) utils.set_data_path(args.data_path, cfg.data) dataset = obj_from_dict(cfg.data.test, datasets, dict(test_mode=True)) if args.gpus == 1: model = build_detector(cfg.model, train_cfg=None, test_cfg=cfg.test_cfg) load_checkpoint(model, args.checkpoint) model = MMDataParallel(model, device_ids=[0]) data_loader = build_dataloader( dataset, imgs_per_gpu=1, workers_per_gpu=cfg.data.workers_per_gpu, num_gpus=1, dist=False, shuffle=False) outputs = single_test(model, data_loader, args.show) else: model_args = cfg.model.copy() model_args.update(train_cfg=None, test_cfg=cfg.test_cfg) model_type = getattr(detectors, model_args.pop('type')) outputs = parallel_test(model_type, model_args, args.checkpoint, dataset, _data_func, range(args.gpus), workers_per_gpu=args.proc_per_gpu) if args.out: print('writing results to {}'.format(args.out)) mmcv.dump(outputs, args.out) eval_types = args.eval if eval_types: print('Starting evaluate {}'.format(' and '.join(eval_types))) if eval_types == ['proposal_fast']: result_file = args.out coco_eval(result_file, eval_types, dataset.coco) else: if not isinstance(outputs[0], dict): result_file = args.out + '.json' results2json(dataset, outputs, result_file) coco_eval(result_file, eval_types, dataset.coco) else: for name in outputs[0]: print('\nEvaluating {}'.format(name)) outputs_ = [out[name] for out in outputs] result_file = args.out + '.{}.json'.format(name) results2json(dataset, outputs_, result_file) coco_eval(result_file, eval_types, dataset.coco)