File size: 2,576 Bytes
f5ba1ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import logging
import torch
from os import path as osp
import sys
try:
    sys.path.remove('/xlearning/boyun/codes/MaIR')
except:
    print(" ")
sys.path.append('/xlearning/boyun/codes/MaIR/realDenoising')

from basicsr.data import create_dataloader, create_dataset
from basicsr.models import create_model
from basicsr.train import parse_options
from basicsr.utils import (get_env_info, get_root_logger, get_time_str,
                           make_exp_dirs)
from basicsr.utils.options import dict2str


def main():
    # parse options, set distributed setting, set ramdom seed
    opt = parse_options(is_train=False)

    torch.backends.cudnn.benchmark = True
    # torch.backends.cudnn.deterministic = True

    # mkdir and initialize loggers
    make_exp_dirs(opt)
    log_file = osp.join(opt['path']['log'],
                        f"test_{opt['name']}_{get_time_str()}.log")
    logger = get_root_logger(
        logger_name='basicsr', log_level=logging.INFO, log_file=log_file)
    logger.info(get_env_info())
    logger.info(dict2str(opt))

    # create test dataset and dataloader
    test_loaders = []
    for phase, dataset_opt in sorted(opt['datasets'].items()):
        test_set = create_dataset(dataset_opt)
        test_loader = create_dataloader(
            test_set,
            dataset_opt,
            num_gpu=opt['num_gpu'],
            dist=opt['dist'],
            sampler=None,
            seed=opt['manual_seed'])
        logger.info(
            f"Number of test images in {dataset_opt['name']}: {len(test_set)}")
        test_loaders.append(test_loader)

    # create model
    # model = create_model(opt)
    for i in range(opt['models']['models_num']):
        model_idx = opt['models']['models_start'] + opt['models']['models_step'] * i
        logger.info(f"Model of {model_idx} steps")
        # create model
        opt['path']['pretrain_network_g'] = opt['models']['model_root'] + str(model_idx) + '.pth'
        model = create_model(opt)

        for test_loader in test_loaders:
            test_set_name = test_loader.dataset.opt['name']
            logger.info(f'Testing {test_set_name}...')
            rgb2bgr = opt['val'].get('rgb2bgr', True)
            # wheather use uint8 image to compute metrics
            use_image = opt['val'].get('use_image', True)
            model.validation(
                test_loader,
                current_iter=opt['name'],
                tb_logger=None,
                save_img=opt['val']['save_img'],
                rgb2bgr=rgb2bgr, use_image=use_image)


if __name__ == '__main__':
    main()