(filter, feature_sets, dataset)
| 177 | |
| 178 | # Runs regression tests for the specified filter |
| 179 | def test_regression(filter, feature_sets, dataset): |
| 180 | dataset_dir = os.path.join(cfg.data_dir, dataset) |
| 181 | baseline_dir = os.path.join(cfg.baseline_dir, dataset) |
| 182 | |
| 183 | # Convert the input images to PFM |
| 184 | if cfg.command == 'baseline': |
| 185 | if os.path.exists(baseline_dir): |
| 186 | print('Error: baseline directory already exists') |
| 187 | exit(1) |
| 188 | os.makedirs(baseline_dir) |
| 189 | |
| 190 | input_filenames = sorted(glob(os.path.join(dataset_dir, '**', '*.exr'), recursive=True)) |
| 191 | for input_filename in input_filenames: |
| 192 | image_name, feature = os.path.relpath(input_filename, dataset_dir).rsplit('.', 2)[0:2] |
| 193 | print_test(f'{filter}.{image_name}.{feature}', 'Convert') |
| 194 | output_filename = os.path.join(baseline_dir, f'{image_name}.input.{feature}.pfm') |
| 195 | convert_cmd = os.path.join(root_dir, 'training', 'convert_image.py') |
| 196 | convert_cmd += f' "{input_filename}" "{output_filename}"' |
| 197 | run_test(convert_cmd) |
| 198 | |
| 199 | # Iterate over the feature sets |
| 200 | out_filename = None |
| 201 | |
| 202 | for features, full_test, model_sizes in feature_sets: |
| 203 | if cfg.minimal and (out_filename or filter != 'RT'): |
| 204 | full_test = False |
| 205 | |
| 206 | # Get the result name |
| 207 | result_base = filter.lower() |
| 208 | for f in features: |
| 209 | result_base += '_' + f |
| 210 | features_str = result_base.split('_', 1)[1] |
| 211 | |
| 212 | if cfg.command == 'baseline': |
| 213 | # Generate the baseline images |
| 214 | for model_size in model_sizes: |
| 215 | print_test(f'{filter}.{model_size}.{features_str}', 'Infer') |
| 216 | result = result_base + ('_' + model_size if model_size != 'base' else '') |
| 217 | infer_cmd = os.path.join(root_dir, 'training', 'infer.py') |
| 218 | infer_cmd += f' -D "{cfg.data_dir}" -R "{cfg.results_dir}" -O "{cfg.baseline_dir}" -i {dataset} -r {result} -F pfm' |
| 219 | run_test(infer_cmd) |
| 220 | |
| 221 | elif cfg.command == 'run': |
| 222 | main_feature = features[0] |
| 223 | main_feature_ext = get_feature_ext(main_feature) |
| 224 | |
| 225 | # Gather the list of input images |
| 226 | input_filenames = sorted(glob(os.path.join(baseline_dir, '**', f'*.input.{main_feature_ext}.pfm'), recursive=True)) |
| 227 | if not input_filenames: |
| 228 | print('Error: baseline input images missing (run with "baseline" first)') |
| 229 | exit(1) |
| 230 | image_names = [os.path.relpath(filename, baseline_dir).rsplit('.', 3)[0] for filename in input_filenames] |
| 231 | |
| 232 | # Iterate over quality |
| 233 | for quality in (['high', 'balanced', 'fast'] if (filter == 'RT' and not cfg.minimal) or cfg.full else ['high']): |
| 234 | model_size = {'high' : 'large', 'balanced' : 'base', 'fast' : 'small'}[quality] |
| 235 | result = result_base |
| 236 | if model_size != 'base' and model_size in model_sizes: |
no test coverage detected