Spaces:
Sleeping
Sleeping
| import gsplat | |
| import torch | |
| from gsplat import spherical_harmonics | |
| if __name__ == '__main__': | |
| print(f"PyTorch version: {torch.__version__}") | |
| print(f"CUDA version: {torch.version.cuda}") | |
| print(f"cuDNN version: {torch.backends.cudnn.version()}") | |
| print(f"gsplat version: {gsplat.__version__}") | |
| b = 1 | |
| v = 2 | |
| g = 10 | |
| d = 1 | |
| sh_degree_to_use = 0 | |
| # Directions [b, v, g, 3] | |
| dirs = torch.tensor([[[[0.0, 0.0, 1.0]] * g] * v] * b) # [b, v, g, 3] | |
| dirs = dirs.to(dtype=torch.float32, device="cuda") | |
| # SHs [b, v, g, d, 3] | |
| shs = torch.ones(b, v, g, d, 3) * 0.1 # [b, v, g, d, 3] | |
| shs = shs.to(dtype=torch.float32, device="cuda") | |
| # Masks (optional) [b, v, g] | |
| masks = torch.rand(b, v, g) > 0.5 # Random boolean mask | |
| masks = masks.to(device="cuda") | |
| print("======================== With Mask ========================") | |
| for i in range(5): | |
| dirs_copy = dirs.clone() | |
| shs_copy = shs.clone() | |
| masks_copy = masks.clone() | |
| colors = spherical_harmonics( | |
| sh_degree_to_use, dirs_copy, shs_copy, masks=masks_copy | |
| ) # [..., C, N, 3] | |
| print( | |
| f"Iteration {i}: colors max {colors.max().item():.4f}, min {colors.min().item():.4f}, mean {colors.mean().item():.4f}") | |
| print("======================== Without Mask ========================") | |
| for i in range(5): | |
| dirs_copy = dirs.clone() | |
| shs_copy = shs.clone() | |
| colors = spherical_harmonics( | |
| sh_degree_to_use, dirs_copy, shs_copy | |
| ) # [..., C, N, 3] | |
| print( | |
| f"Iteration {i}: colors max {colors.max().item():.4f}, min {colors.min().item():.4f}, mean {colors.mean().item():.4f}") |