Real-ESRGAN
151 строка · 5.9 Кб
1import pytest2import yaml3
4from realesrgan.data.realesrgan_dataset import RealESRGANDataset5from realesrgan.data.realesrgan_paired_dataset import RealESRGANPairedDataset6
7
8def test_realesrgan_dataset():9
10with open('tests/data/test_realesrgan_dataset.yml', mode='r') as f:11opt = yaml.load(f, Loader=yaml.FullLoader)12
13dataset = RealESRGANDataset(opt)14assert dataset.io_backend_opt['type'] == 'disk' # io backend15assert len(dataset) == 2 # whether to read correct meta info16assert dataset.kernel_list == [17'iso', 'aniso', 'generalized_iso', 'generalized_aniso', 'plateau_iso', 'plateau_aniso'18] # correct initialization the degradation configurations19assert dataset.betag_range2 == [0.5, 4]20
21# test __getitem__22result = dataset.__getitem__(0)23# check returned keys24expected_keys = ['gt', 'kernel1', 'kernel2', 'sinc_kernel', 'gt_path']25assert set(expected_keys).issubset(set(result.keys()))26# check shape and contents27assert result['gt'].shape == (3, 400, 400)28assert result['kernel1'].shape == (21, 21)29assert result['kernel2'].shape == (21, 21)30assert result['sinc_kernel'].shape == (21, 21)31assert result['gt_path'] == 'tests/data/gt/baboon.png'32
33# ------------------ test lmdb backend -------------------- #34opt['dataroot_gt'] = 'tests/data/gt.lmdb'35opt['io_backend']['type'] = 'lmdb'36
37dataset = RealESRGANDataset(opt)38assert dataset.io_backend_opt['type'] == 'lmdb' # io backend39assert len(dataset.paths) == 2 # whether to read correct meta info40assert dataset.kernel_list == [41'iso', 'aniso', 'generalized_iso', 'generalized_aniso', 'plateau_iso', 'plateau_aniso'42] # correct initialization the degradation configurations43assert dataset.betag_range2 == [0.5, 4]44
45# test __getitem__46result = dataset.__getitem__(1)47# check returned keys48expected_keys = ['gt', 'kernel1', 'kernel2', 'sinc_kernel', 'gt_path']49assert set(expected_keys).issubset(set(result.keys()))50# check shape and contents51assert result['gt'].shape == (3, 400, 400)52assert result['kernel1'].shape == (21, 21)53assert result['kernel2'].shape == (21, 21)54assert result['sinc_kernel'].shape == (21, 21)55assert result['gt_path'] == 'comic'56
57# ------------------ test with sinc_prob = 0 -------------------- #58opt['dataroot_gt'] = 'tests/data/gt.lmdb'59opt['io_backend']['type'] = 'lmdb'60opt['sinc_prob'] = 061opt['sinc_prob2'] = 062opt['final_sinc_prob'] = 063dataset = RealESRGANDataset(opt)64result = dataset.__getitem__(0)65# check returned keys66expected_keys = ['gt', 'kernel1', 'kernel2', 'sinc_kernel', 'gt_path']67assert set(expected_keys).issubset(set(result.keys()))68# check shape and contents69assert result['gt'].shape == (3, 400, 400)70assert result['kernel1'].shape == (21, 21)71assert result['kernel2'].shape == (21, 21)72assert result['sinc_kernel'].shape == (21, 21)73assert result['gt_path'] == 'baboon'74
75# ------------------ lmdb backend should have paths ends with lmdb -------------------- #76with pytest.raises(ValueError):77opt['dataroot_gt'] = 'tests/data/gt'78opt['io_backend']['type'] = 'lmdb'79dataset = RealESRGANDataset(opt)80
81
82def test_realesrgan_paired_dataset():83
84with open('tests/data/test_realesrgan_paired_dataset.yml', mode='r') as f:85opt = yaml.load(f, Loader=yaml.FullLoader)86
87dataset = RealESRGANPairedDataset(opt)88assert dataset.io_backend_opt['type'] == 'disk' # io backend89assert len(dataset) == 2 # whether to read correct meta info90
91# test __getitem__92result = dataset.__getitem__(0)93# check returned keys94expected_keys = ['gt', 'lq', 'gt_path', 'lq_path']95assert set(expected_keys).issubset(set(result.keys()))96# check shape and contents97assert result['gt'].shape == (3, 128, 128)98assert result['lq'].shape == (3, 32, 32)99assert result['gt_path'] == 'tests/data/gt/baboon.png'100assert result['lq_path'] == 'tests/data/lq/baboon.png'101
102# ------------------ test lmdb backend -------------------- #103opt['dataroot_gt'] = 'tests/data/gt.lmdb'104opt['dataroot_lq'] = 'tests/data/lq.lmdb'105opt['io_backend']['type'] = 'lmdb'106
107dataset = RealESRGANPairedDataset(opt)108assert dataset.io_backend_opt['type'] == 'lmdb' # io backend109assert len(dataset) == 2 # whether to read correct meta info110
111# test __getitem__112result = dataset.__getitem__(1)113# check returned keys114expected_keys = ['gt', 'lq', 'gt_path', 'lq_path']115assert set(expected_keys).issubset(set(result.keys()))116# check shape and contents117assert result['gt'].shape == (3, 128, 128)118assert result['lq'].shape == (3, 32, 32)119assert result['gt_path'] == 'comic'120assert result['lq_path'] == 'comic'121
122# ------------------ test paired_paths_from_folder -------------------- #123opt['dataroot_gt'] = 'tests/data/gt'124opt['dataroot_lq'] = 'tests/data/lq'125opt['io_backend'] = dict(type='disk')126opt['meta_info'] = None127
128dataset = RealESRGANPairedDataset(opt)129assert dataset.io_backend_opt['type'] == 'disk' # io backend130assert len(dataset) == 2 # whether to read correct meta info131
132# test __getitem__133result = dataset.__getitem__(0)134# check returned keys135expected_keys = ['gt', 'lq', 'gt_path', 'lq_path']136assert set(expected_keys).issubset(set(result.keys()))137# check shape and contents138assert result['gt'].shape == (3, 128, 128)139assert result['lq'].shape == (3, 32, 32)140
141# ------------------ test normalization -------------------- #142dataset.mean = [0.5, 0.5, 0.5]143dataset.std = [0.5, 0.5, 0.5]144# test __getitem__145result = dataset.__getitem__(0)146# check returned keys147expected_keys = ['gt', 'lq', 'gt_path', 'lq_path']148assert set(expected_keys).issubset(set(result.keys()))149# check shape and contents150assert result['gt'].shape == (3, 128, 128)151assert result['lq'].shape == (3, 32, 32)152