From 70ade42e46f3dcf0e89e4efc445650f6d6525673 Mon Sep 17 00:00:00 2001 From: Justin Kerr Date: Tue, 10 Oct 2023 17:11:36 -0700 Subject: [PATCH 1/4] fix jittering in markdown in viewer beta --- nerfstudio/viewer_beta/control_panel.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nerfstudio/viewer_beta/control_panel.py b/nerfstudio/viewer_beta/control_panel.py index 07f556dd46..d93d335468 100644 --- a/nerfstudio/viewer_beta/control_panel.py +++ b/nerfstudio/viewer_beta/control_panel.py @@ -270,10 +270,9 @@ def update_step(self, step): step: the train step to set the model to """ with self.viser_server.atomic(), self.stat_folder: - # TODO change to a .value call instead of remove() and add, this makes it jittery with self.viser_server.atomic(): self.markdown.remove() - self.markdown = self.viser_server.add_gui_markdown(f"Step: {step}") + self.markdown.content = f"Step: {step}" def update_output_options(self, new_options: List[str]): """ From 622342cdceaa2b01ffc7518c2bf8542c687f5a23 Mon Sep 17 00:00:00 2001 From: Justin Kerr Date: Tue, 10 Oct 2023 17:12:21 -0700 Subject: [PATCH 2/4] Revert "fix jittering in markdown in viewer beta" This reverts commit 70ade42e46f3dcf0e89e4efc445650f6d6525673. --- nerfstudio/viewer_beta/control_panel.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nerfstudio/viewer_beta/control_panel.py b/nerfstudio/viewer_beta/control_panel.py index d93d335468..07f556dd46 100644 --- a/nerfstudio/viewer_beta/control_panel.py +++ b/nerfstudio/viewer_beta/control_panel.py @@ -270,9 +270,10 @@ def update_step(self, step): step: the train step to set the model to """ with self.viser_server.atomic(), self.stat_folder: + # TODO change to a .value call instead of remove() and add, this makes it jittery with self.viser_server.atomic(): self.markdown.remove() - self.markdown.content = f"Step: {step}" + self.markdown = self.viser_server.add_gui_markdown(f"Step: {step}") def update_output_options(self, new_options: List[str]): """ From 8a08740aedeac29d2ca168b900f79c2235275864 Mon Sep 17 00:00:00 2001 From: Justin Kerr Date: Sun, 29 Oct 2023 16:31:59 -0700 Subject: [PATCH 3/4] print correctly formatted url in banner for viewer beta --- nerfstudio/viewer_beta/viewer.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/nerfstudio/viewer_beta/viewer.py b/nerfstudio/viewer_beta/viewer.py index ae8ce3ae77..2ba3693b83 100644 --- a/nerfstudio/viewer_beta/viewer.py +++ b/nerfstudio/viewer_beta/viewer.py @@ -95,8 +95,6 @@ def __init__( websocket_port = self.config.websocket_port self.log_filename.parent.mkdir(exist_ok=True) - self.viewer_url = viewer_utils.get_viewer_url(websocket_port) - # viewer specific variables self.output_type_changed = True self.output_split_type_changed = True @@ -106,6 +104,19 @@ def __init__( self.last_move_time = 0 self.viser_server = viser.ViserServer(host=config.websocket_host, port=websocket_port, share=share) + # Set the name of the URL either to the share link if available, or the localhost + if share: + assert self.viser_server._share_tunnel is not None + while self.viser_server._share_tunnel._shared_state["status"] == "connecting": + # wait for connection before grabbing URL + time.sleep(0.01) + url_maybe = self.viser_server._share_tunnel.get_url() + if url_maybe is not None: + self.viewer_url = url_maybe + else: + self.viewer_url = f"http://{config.websocket_host}:{websocket_port}" + else: + self.viewer_url = f"http://{config.websocket_host}:{websocket_port}" buttons = ( viser.theme.TitlebarButton( text="Getting Started", From a42d076fd18a62f825a8d47c6dffbe2ffc070e30 Mon Sep 17 00:00:00 2001 From: Justin Kerr Date: Thu, 18 Jan 2024 14:35:38 -0800 Subject: [PATCH 4/4] remove cam opt from gs --- nerfstudio/models/gaussian_splatting.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/nerfstudio/models/gaussian_splatting.py b/nerfstudio/models/gaussian_splatting.py index b8102e7368..154224c369 100644 --- a/nerfstudio/models/gaussian_splatting.py +++ b/nerfstudio/models/gaussian_splatting.py @@ -32,7 +32,6 @@ from pytorch_msssim import SSIM from torch.nn import Parameter -from nerfstudio.cameras.camera_optimizers import CameraOptimizer, CameraOptimizerConfig from nerfstudio.cameras.cameras import Cameras from nerfstudio.data.scene_box import OrientedBox from nerfstudio.engine.callbacks import TrainingCallback, TrainingCallbackAttributes, TrainingCallbackLocation @@ -142,8 +141,6 @@ class GaussianSplattingModelConfig(ModelConfig): """stop splitting at this step""" sh_degree: int = 3 """maximum degree of spherical harmonics to use""" - camera_optimizer: CameraOptimizerConfig = field(default_factory=CameraOptimizerConfig) - """camera optimizer config""" use_scale_regularization: bool = False """If enabled, a scale regularization introduced in PhysGauss (https://xpandora.github.io/PhysGaussian/) is used for reducing huge spikey gaussians.""" max_gauss_ratio: float = 10.0 @@ -211,10 +208,6 @@ def populate_modules(self): self.crop_box: Optional[OrientedBox] = None self.back_color = torch.zeros(3) - self.camera_optimizer: CameraOptimizer = self.config.camera_optimizer.setup( - num_cameras=self.num_train_data, device="cpu" - ) - @property def colors(self): if self.config.sh_degree > 0: @@ -569,8 +562,6 @@ def get_param_groups(self) -> Dict[str, List[Parameter]]: Mapping of different parameter groups """ gps = self.get_gaussian_param_groups() - # add camera optimizer param groups - self.camera_optimizer.get_param_groups(gps) return gps def _get_downscale_factor(self): @@ -593,9 +584,6 @@ def get_outputs(self, camera: Cameras) -> Dict[str, Union[torch.Tensor, List]]: print("Called get_outputs with not a camera") return {} assert camera.shape[0] == 1, "Only one camera at a time" - if self.training: - # currently relies on the branch vickie/camera-grads - self.camera_optimizer.apply_to_camera(camera) if self.training: background = torch.rand(3, device=self.device) else: @@ -754,7 +742,6 @@ def get_metrics_dict(self, outputs, batch) -> Dict[str, torch.Tensor]: predicted_rgb = outputs["rgb"] metrics_dict["psnr"] = self.psnr(predicted_rgb, gt_rgb) - self.camera_optimizer.get_metrics_dict(metrics_dict) metrics_dict["gaussian_count"] = self.num_points return metrics_dict