mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-12 19:04:03 +08:00
fix camera pose opt
This commit is contained in:
1 parent
1367779b30
commit
6d0d4cbc34
4 files changed
+13
-26
No files matched your search
@@ -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.
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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...
|
||||
Reference in new issue
Block a user