👋 Thank you for releasing the code! Your code structure is really clear and easy to follow.
After trying your code, I have three questions.
1. When clustering too many points, have you encountered OOM problem?
Initially, I captured 20 poses to do Gaussian splatting. I can click and crop the items. But I found in your paper, you captured 35 views, so I also tried 35 views, and then I got this OOM error. Have you encountered this before? How did you solve it?
Viewer running locally at: http://localhost:7007 (listening on 0.0.0.0)
╭──────────────────────────── 🎉 Training Finished 🎉 ────────────────────────────╮
│ ╷ │
│ Config File │ outputs/box/pogs/2025-07-17_132438/config.yml │
│ Checkpoint Directory │ outputs/box/pogs/2025-07-17_132438/nerfstudio_models │
│ ╵ │
╰─────────────────────────────────────────────────────────────────────────────────╯
Use ctrl+c to quit
(viser) Connection opened (0, 1 total), 279 persistent messages
Too many points (1057739) to cluster... aborting.
Consider using interactive select to reduce points before clustering.
Are you sure you want to cluster? Press y to continue, else return.
y
Clustering 1057739 gaussians... terminate called after throwing an instance of 'rmm::out_of_memory'
what(): std::bad_alloc: out_of_memory: CUDA error (failed to allocate 1295094784 bytes) at: /pyenv/versions/3.12.9/lib/python3.12/site-packages/librmm/include/rmm/mr/device/cuda_memory_resource.hpp:62: cudaErrorMemoryAllocation out of memory
Aborted (core dumped)
BTW, I also use RTX 4090 for training, with 24GB RAM, but replace the Zed camera with the RealSense D435.
2. How do you export each 3D object in Gsplat separately? Since I can only find pointcloud (.ply) file after clicking and cropping the items.
Running Gsplat with UR5 runs smoothly with your code
After clustering (sometimes I can finish clustering without OOM problem), I only find these files:
(POGS) jiachengxu@kthipu:~/workspace/master_thesis/POGS$ cd outputs/box/
(POGS) jiachengxu@kthipu:~/workspace/master_thesis/POGS/outputs/box$ ls
clip_openclip_ViT-B-16_laion2b_s34b_b88k clip_openclip_ViT-B-16_laion2b_s34b_b88k.info clusters.npy detic.info detic.npy dino.info dino.npy pca.npy pogs prime_full_gaussians.ply prime_seg_gaussians.ply
Then, when I tried to use ns-export command, it gives me error like this:
ns-export gaussian-splat --load-config outputs/box/pogs/2025-07-17_145928/config.yml --output-dir exports/splat/
Loading latest checkpoint from load_dir
Traceback (most recent call last):
File "/home/jiachengxu/workspace/master_thesis/POGS/.pixi/envs/default/bin/ns-export", line 8, in <module>
sys.exit(entrypoint())
File "/home/jiachengxu/workspace/master_thesis/POGS/.pixi/envs/default/lib/python3.10/site-packages/nerfstudio/scripts/exporter.py", line 667, in entrypoint
tyro.cli(Commands).main()
File "/home/jiachengxu/workspace/master_thesis/POGS/.pixi/envs/default/lib/python3.10/site-packages/nerfstudio/scripts/exporter.py", line 561, in main
_, pipeline, _, _ = eval_setup(self.load_config, test_mode="inference")
File "/home/jiachengxu/workspace/master_thesis/POGS/.pixi/envs/default/lib/python3.10/site-packages/nerfstudio/utils/eval_utils.py", line 111, in eval_setup
checkpoint_path, step = eval_load_checkpoint(config, pipeline)
File "/home/jiachengxu/workspace/master_thesis/POGS/.pixi/envs/default/lib/python3.10/site-packages/nerfstudio/utils/eval_utils.py", line 62, in eval_load_checkpoint
loaded_state = torch.load(load_path, map_location="cpu")
File "/home/jiachengxu/workspace/master_thesis/POGS/.pixi/envs/default/lib/python3.10/site-packages/torch/serialization.py", line 1470, in load
raise pickle.UnpicklingError(_get_wo_message(str(e))) from None
_pickle.UnpicklingError: Weights only load failed. This file can still be loaded, to do so you have two options, do those steps only if you trust the source of the checkpoint.
(1) In PyTorch 2.6, we changed the default value of the `weights_only` argument in `torch.load` from `False` to `True`. Re-running `torch.load` with `weights_only` set to `False` will likely succeed, but it can result in arbitrary code execution. Do it only if you got the file from a trusted source.
(2) Alternatively, to load with `weights_only=True` please check the recommended steps in the following error message.
WeightsUnpickler error: Unsupported global: GLOBAL numpy.core.multiarray.scalar was not an allowed global by default. Please use `torch.serialization.add_safe_globals([scalar])` or the `torch.serialization.safe_globals([scalar])` context manager to allowlist this global if you trust this class/function.
Check the documentation of torch.load to learn more about types accepted by default with weights_only https://pytorch.org/docs/stable/generated/torch.load.html.
3. When I click and crop big items (blue box), it works good. But when I tried to crop small item (box cutter), it found no gaussian points after filtering. Have you encountered this?
However, the segementaion looks good, I can see blue box and box cutter there.
Overall Questions:
- When clustering too many points, have you encountered OOM problem?
- How do you export each 3D object in Gsplat separately? Since I can only find pointcloud (.ply) file after clicking and cropping the items.
- When I click and crop big items (blue box), it works good. But when I tried to crop small item (box cutter), it found no gaussian points after filtering, how can I also crop small items?
- Additional question. do you use tensorboard to track training procedure? or other tool?
感谢!!!
👋 Thank you for releasing the code! Your code structure is really clear and easy to follow.
After trying your code, I have three questions.
1. When clustering too many points, have you encountered OOM problem?
Initially, I captured 20 poses to do Gaussian splatting. I can click and crop the items. But I found in your paper, you captured 35 views, so I also tried 35 views, and then I got this OOM error. Have you encountered this before? How did you solve it?
BTW, I also use RTX 4090 for training, with 24GB RAM, but replace the Zed camera with the RealSense D435.
2. How do you export each 3D object in Gsplat separately? Since I can only find pointcloud (.ply) file after clicking and cropping the items.
Running Gsplat with UR5 runs smoothly with your code
After clustering (sometimes I can finish clustering without OOM problem), I only find these files:
Then, when I tried to use ns-export command, it gives me error like this:
3. When I click and crop big items (blue box), it works good. But when I tried to crop small item (box cutter), it found no gaussian points after filtering. Have you encountered this?
However, the segementaion looks good, I can see blue box and box cutter there.
Overall Questions:
感谢!!!