| import os
|
| import torch
|
| from lib import utility
|
|
|
|
|
| def test(args):
|
|
|
| config = utility.get_config(args)
|
| config.device_id = args.device_ids[0]
|
|
|
|
|
| utility.set_environment(config)
|
| config.init_instance()
|
| if config.logger is not None:
|
| config.logger.info("Loaded configure file %s: %s" % (args.config_name, config.id))
|
| config.logger.info("\n" + "\n".join(["%s: %s" % item for item in config.__dict__.items()]))
|
|
|
|
|
| net = utility.get_net(config)
|
| model_path = os.path.join(config.model_dir,
|
| "train.pkl") if args.pretrained_weight is None else args.pretrained_weight
|
| if args.device_ids == [-1]:
|
| checkpoint = torch.load(model_path, map_location="cpu")
|
| else:
|
| checkpoint = torch.load(model_path)
|
|
|
| net.load_state_dict(checkpoint["net"])
|
|
|
| if config.logger is not None:
|
| config.logger.info("Loaded network")
|
|
|
|
|
|
|
| test_loader = utility.get_dataloader(config, "test")
|
|
|
| if config.logger is not None:
|
| config.logger.info("Loaded data from {:}".format(config.test_tsv_file))
|
|
|
|
|
| result, metrics = utility.forward(config, test_loader, net)
|
| if config.logger is not None:
|
| config.logger.info("Finished inference")
|
|
|
|
|
| for k, metric in enumerate(metrics):
|
| if config.logger is not None and len(metric) != 0:
|
| config.logger.info(
|
| "Tested {} dataset, the Size is {}, Metric: [NME {:.6f}, FR {:.6f}, AUC {:.6f}]".format(
|
| config.type, len(test_loader.dataset), metric[0], metric[1], metric[2]))
|
|
|