gaussian-splatting
gaussian-splatting copied to clipboard
Issue of Loading Gaussians for Fine-Tuning.
Noticed that in scene/__init__.py, the class Scene receives a variable load_iteration, which seems to support fine-tuning. However, in the following lines:
if self.loaded_iter:
self.gaussians.load_ply(os.path.join(self.model_path,
"point_cloud",
"iteration_" + str(self.loaded_iter),
"point_cloud.ply"))
else:
self.gaussians.create_from_pcd(scene_info.point_cloud, self.cameras_extent)
the load_ply() function does not set the variable gaussians.max_radii2D from the loaded ply file, making further training impossible. The question is, how can I set this variable properly? Seems that it cannot be simply parsed from the trained ply files.
Is simply setting gaussians.max_radii2D as all-zero tensors like in create_from_pcd(), as
self.max_radii2D = torch.zeros((self.get_xyz.shape[0]), device="cuda")
feasible? I'm not sure.
From my knowledge, I can say that
self.max_radii2D
are used when projecting 3D gaussians to a 2D surface. Yes, max_radii2D is set to be all zero before passing through the projection, and once rasterization is done, it will again be set to be zero. It is highly likely this variable is set to be zero only for the optimization purpose. How ever you can change this behaviour by modifying the CUDA code.
From my knowledge, I can say that
self.max_radii2Dare used when projecting 3D gaussians to a 2D surface. Yes,
max_radii2Dis set to be all zero before passing through the projection, and once rasterization is done, it will again be set to be zero. It is highly likely this variable is set to be zero only for the optimization purpose. How ever you can change this behaviour by modifying the CUDA code.
Thank you. I've recognized that the correct way to do fine-tuning is to save checkpoints at certain iterations and retrain by loading saved checkpoints. This issue will be closed. Thanks a lot again.