diff --git a/nerfstudio/engine/optimizers.py b/nerfstudio/engine/optimizers.py index 8f9ac51a0..512908d2b 100644 --- a/nerfstudio/engine/optimizers.py +++ b/nerfstudio/engine/optimizers.py @@ -63,30 +63,6 @@ class RAdamOptimizerConfig(OptimizerConfig): _target: Type = torch.optim.RAdam - -def setup_optimizers(config: base_config.Config, param_groups: Dict[str, List[Parameter]]) -> "Optimizers": - """Helper to set up the optimizers - - Args: - config: The trainer configuration object. - param_groups: A dictionary of parameter groups to optimize. - - Returns: - The optimizers object. - """ - optimizer_config = config.optimizers.copy() - - # Add the camera optimizer if enabled. - camera_optimizer_config = config.pipeline.datamanager.camera_optimizer - if camera_optimizer_config.mode != "off": - assert camera_optimizer_config.param_group not in optimizer_config - optimizer_config[camera_optimizer_config.param_group + "_train"] = { - "optimizer": config.pipeline.datamanager.camera_optimizer.optimizer, - "scheduler": config.pipeline.datamanager.camera_optimizer.scheduler, - } - return Optimizers(optimizer_config, param_groups) - - class Optimizers: """A set of optimizers. diff --git a/nerfstudio/engine/trainer.py b/nerfstudio/engine/trainer.py index 244b0f411..0221316fe 100644 --- a/nerfstudio/engine/trainer.py +++ b/nerfstudio/engine/trainer.py @@ -144,10 +144,14 @@ class Trainer: param_groups = self.pipeline.get_param_groups() if camera_optimizer_config.mode != "off": assert camera_optimizer_config.param_group not in optimizer_config - optimizer_config[camera_optimizer_config.param_group] = { + optimizer_config[camera_optimizer_config.param_group + "_train"] = { "optimizer": camera_optimizer_config.optimizer, "scheduler": camera_optimizer_config.scheduler, } + # optimizer_config[camera_optimizer_config.param_group + "_eval"] = { + # "optimizer": camera_optimizer_config.optimizer, + # "scheduler": camera_optimizer_config.scheduler, + # } return Optimizers(optimizer_config, param_groups) def train(self) -> None: diff --git a/nerfstudio/pipelines/base_pipeline.py b/nerfstudio/pipelines/base_pipeline.py index 5e02f57e2..81f2dc3bc 100644 --- a/nerfstudio/pipelines/base_pipeline.py +++ b/nerfstudio/pipelines/base_pipeline.py @@ -411,6 +411,7 @@ class VanillaPipeline(Pipeline): state.pop("datamanager.train_camera_optimizer.pose_adjustment", None) state.pop("datamanager.train_ray_generator.image_coords", None) state.pop("datamanager.train_ray_generator.pose_optimizer.pose_adjustment", None) + state.pop("datamanager.eval_camera_optimizer.pose_adjustment", None) state.pop("datamanager.eval_ray_generator.image_coords", None) state.pop("datamanager.eval_ray_generator.pose_optimizer.pose_adjustment", None) self.load_state_dict(state) # type: ignore diff --git a/scripts/datasets/process_mipnerf360.py b/scripts/datasets/process_mipnerf360.py index 5dea78706..e06210738 100644 --- a/scripts/datasets/process_mipnerf360.py +++ b/scripts/datasets/process_mipnerf360.py @@ -79,4 +79,10 @@ with Pool() as p: # the default method # DATASET="person" METHOD="nerfacto-default" && ns-train nerfacto --vis wandb --data "data/nerfstudio/${DATASET}" --wandb-name "${METHOD}-${DATASET}" --experiment-name "${METHOD}-${DATASET}" # without pose optimization -# DATASET="person" METHOD="nerfacto-no-pose" && ns-train nerfacto --vis wandb --data "data/nerfstudio/${DATASET}" --wandb-name "${METHOD}-${DATASET}" --experiment-name "${METHOD}-${DATASET}" --pipeline.datamanager.camera-optimizer.mode off +# DATASET="plane" METHOD="nerfacto-no-pose" && ns-train nerfacto --vis wandb --data "data/nerfstudio/${DATASET}" --wandb-name "${METHOD}-${DATASET}" --experiment-name "${METHOD}-${DATASET}" --pipeline.datamanager.camera-optimizer.mode off + +# debugging the evaluation method +# --trainer.steps-per-eval-all-images 5000 + +# --load-config outputs/nerfacto-no-pose-plane/nerfacto/2022-12-16_194940/config.yml +# start train but run eval on all images at the start...