Download deployment/verify_data.py from BonanDing/worldmem-baseline-evals: direct link, hf CLI and curl.
- Browser
- Download file 2.38 kB
-
https://huggingface.co/BonanDing/worldmem-baseline-evals/resolve/main/deployment/verify_data.py
- Command line
-
hf download hf://BonanDing/worldmem-baseline-evals/deployment/verify_data.py
-
curl -L -o verify_data.py https://huggingface.co/BonanDing/worldmem-baseline-evals/resolve/main/deployment/verify_data.py
2.38 kB
| """Check every requested case and fixed Minecraft reference cache before full evaluation.""" | |
| import argparse | |
| import json | |
| from pathlib import Path | |
| import sys | |
| import numpy as np | |
| import torch | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "shared")) | |
| from protocol import _scene_file, select_cases | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--minecraft-root", type=Path, required=True) | |
| parser.add_argument("--re10k-root", type=Path, required=True) | |
| parser.add_argument("--output", type=Path, required=True) | |
| args = parser.parse_args() | |
| manifests = Path(__file__).resolve().parent / "manifests" | |
| errors = [] | |
| mc = select_cases(manifests / "minecraft_test_300.csv") | |
| for row in mc: | |
| relative = Path(row["relative_path"]) | |
| video = args.minecraft_root / relative | |
| feature = args.minecraft_root / "vae_features" / relative.parent / f"{relative.stem}_vae_feature.npy" | |
| required = [video, video.with_suffix(".npz"), feature] | |
| missing = [str(path) for path in required if not path.is_file()] | |
| if missing: | |
| errors.extend(missing) | |
| continue | |
| with np.load(video.with_suffix(".npz")) as data: | |
| if min(len(data["actions"]), len(data["poses"])) < int(row["target_end"]): | |
| errors.append(f"Short annotation: {video}") | |
| z = np.load(feature, mmap_mode="r") | |
| if z.dtype != np.float16 or z.shape[1:] != (16, 18, 32) or len(z) < int(row["target_end"]): | |
| errors.append(f"Incompatible fixed reference cache: {feature}") | |
| re = select_cases(manifests / "re10k_real_trajectory_h100_f399_scopes_v1.csv", "final100") | |
| for row in re: | |
| try: | |
| _scene_file(args.re10k_root, "test_256", row["scene_id"], ".mp4") | |
| path = _scene_file(args.re10k_root, "test_poses", row["scene_id"], ".pt") | |
| pose = torch.load(path, map_location="cpu", weights_only=True) | |
| if pose.ndim != 2 or pose.shape[1] != 18 or len(pose) < int(row["history_start"]) + 200 or not torch.isfinite(pose).all(): | |
| errors.append(f"Invalid camera annotation: {path}") | |
| except ValueError as error: | |
| errors.append(str(error)) | |
| result = {"minecraft_cases": len(mc), "re10k_cases": len(re), "errors": errors} | |
| args.output.parent.mkdir(parents=True, exist_ok=True) | |
| args.output.write_text(json.dumps(result, indent=2) + "\n") | |
| print(json.dumps(result, indent=2)) | |
| sys.exit(1 if errors or len(mc) != 300 or len(re) != 100 else 0) | |