fix camera pose opt

This commit is contained in:
Ethan Weber committed 2022-12-16 22:04:35 +00:00
1 parent 1367779b30
commit 6d0d4cbc34
4 files changed
+13 -26

No files matched your search

-24
View File
@@ -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.
+5 -1
View File
@@ -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:
+1
View File
@@ -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
+7 -1
View File
@@ -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...