Download experiments/fourier-splatting/scripts/export_lod_ply.py from Modularcomputing/Polymorphic: direct link, hf CLI and curl.
- Browser
- Download file 1.58 kB
-
https://huggingface.co/Modularcomputing/Polymorphic/resolve/main/experiments/fourier-splatting/scripts/export_lod_ply.py
- Command line
-
hf download hf://Modularcomputing/Polymorphic/experiments/fourier-splatting/scripts/export_lod_ply.py
-
curl -L -o export_lod_ply.py https://huggingface.co/Modularcomputing/Polymorphic/resolve/main/experiments/fourier-splatting/scripts/export_lod_ply.py
1.58 kB
| import argparse, json | |
| from pathlib import Path | |
| import torch | |
| from arguments import ModelParams, PipelineParams, OptimizationParams | |
| from scene import Scene, FourierModel | |
| parser = argparse.ArgumentParser() | |
| lp = ModelParams(parser); op = OptimizationParams(parser); pp = PipelineParams(parser) | |
| parser.add_argument('--load_iteration', type=int, default=6000) | |
| args = parser.parse_args() | |
| dataset = lp.extract(args) | |
| gaussians = FourierModel(dataset.sh_degree, fourier_K=dataset.fourier_K, | |
| use_beta_color=dataset.beta_color, sb_lobes=dataset.sb_lobes) | |
| scene = Scene(dataset, gaussians, load_iteration=args.load_iteration, shuffle=False) | |
| out = Path(dataset.model_path) / 'lod_models' | |
| out.mkdir(parents=True, exist_ok=True) | |
| full_r = gaussians._radii_logits.detach().clone() | |
| full_p = gaussians._phases_raw.detach().clone() | |
| full_k = gaussians.fourier_K | |
| rows = [] | |
| for k in range(1, full_k+1): | |
| gaussians._radii_logits = torch.nn.Parameter(full_r[:, :k].clone().requires_grad_(False)) | |
| gaussians._phases_raw = torch.nn.Parameter(full_p[:, :k].clone().requires_grad_(False)) | |
| gaussians.fourier_K = k | |
| gaussians.active_K = k | |
| path = out / f'fourier_k{k}.ply' | |
| gaussians.save_ply(str(path)) | |
| rows.append({'K':k,'path':str(path),'bytes':path.stat().st_size,'primitives':int(gaussians.get_xyz.shape[0])}) | |
| gaussians._radii_logits = torch.nn.Parameter(full_r) | |
| gaussians._phases_raw = torch.nn.Parameter(full_p) | |
| gaussians.fourier_K = full_k | |
| gaussians.active_K = full_k | |
| (out/'sizes.json').write_text(json.dumps(rows,indent=2)) | |
| print(json.dumps(rows,indent=2)) | |