#!/usr/bin/env python """eval_final.py (imported, NOT modified) with every appearance comparison done at 512x512. The only change: eval_final.appearance_metrics(pred_rgba, ref_rgba) -- called once per IV / NV view with the masked crops -- now receives both images composited over white (exactly as appearance_metrics does internally) and resized to 512x512 (cv2 INTER_AREA when downsampling, INTER_LINEAR when upsampling), passed on as opaque RGBA. Rendering, masks, coverage, view selection and geometry are unchanged. Usage: python eval512.py fb150 python eval512.py rest658 """ import os, sys, runpy HERE = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, HERE); sys.path.insert(0, os.path.join(HERE, "appeval")) import numpy as np, cv2 import eval_final as EF from appearance import composite_white S = int(os.environ.get("EVAL_IMG_SIZE", "512")) _orig = EF.appearance_metrics def _to_s(x): rgb = composite_white(np.asarray(x, np.float32)) h, w = rgb.shape[:2] interp = cv2.INTER_AREA if (h >= S and w >= S) else cv2.INTER_LINEAR rgb = cv2.resize(rgb, (S, S), interpolation=interp).astype(np.float32) return np.concatenate([np.clip(rgb, 0, 1), np.ones((S, S, 1), np.float32)], -1) def appearance_metrics_512(pred_rgba, ref_rgba): return _orig(_to_s(pred_rgba), _to_s(ref_rgba)) EF.appearance_metrics = appearance_metrics_512 mode = sys.argv.pop(1) if mode == "fb150": sys.argv[0] = os.path.join(HERE, "eval_final.py"); EF.main() elif mode == "rest658": sys.argv[0] = os.path.join(HERE, "eval_rest658_wrapper.py") runpy.run_path(os.path.join(HERE, "eval_rest658_wrapper.py"), run_name="__main__") # imports the patched EF else: sys.exit("mode must be fb150 or rest658")