""" splatfactox Config """ from __future__ import annotations from nerfstudio.configs.base_config import ViewerConfig from nerfstudio.data.dataparsers.nerfstudio_dataparser import NerfstudioDataParserConfig from nerfstudio.engine.optimizers import AdamOptimizerConfig, RAdamOptimizerConfig from nerfstudio.engine.schedulers import ( ExponentialDecaySchedulerConfig, ) from nerfstudio.engine.trainer import TrainerConfig from nerfstudio.plugins.types import MethodSpecification from nerfstudio.pipelines.base_pipeline import VanillaPipelineConfig from nerfstudio.data.datamanagers.full_images_datamanager import FullImageDatamanagerConfig from splatfactox import SplatfactoxModelConfig splatfactox_method = MethodSpecification( description = "An Extended Version of NeRF Studio's Splatfacto.", config = TrainerConfig( method_name="splatfactox", steps_per_eval_image=100, steps_per_eval_batch=0, steps_per_save=2000, steps_per_eval_all_images=1000, max_num_iterations=30000, mixed_precision=False, gradient_accumulation_steps={"camera_opt": 100}, pipeline=VanillaPipelineConfig( datamanager=FullImageDatamanagerConfig( dataparser=NerfstudioDataParserConfig(load_3D_points=True, train_split_fraction=1.0), ), model=SplatfactoxModelConfig(), ), optimizers={ "xyz": { "optimizer": AdamOptimizerConfig(lr=1.6e-4, eps=1e-15), "scheduler": ExponentialDecaySchedulerConfig( lr_final=1.6e-6, max_steps=30000, ), }, "features_dc": { "optimizer": AdamOptimizerConfig(lr=0.0025, eps=1e-15), "scheduler": None, }, "features_rest": { "optimizer": AdamOptimizerConfig(lr=0.0025 / 20, eps=1e-15), "scheduler": None, }, "opacity": { "optimizer": AdamOptimizerConfig(lr=0.05, eps=1e-15), "scheduler": None, }, "scaling": { "optimizer": AdamOptimizerConfig(lr=0.005, eps=1e-15), "scheduler": None, }, "rotation": {"optimizer": AdamOptimizerConfig(lr=0.001, eps=1e-15), "scheduler": None}, "camera_opt": { "optimizer": AdamOptimizerConfig(lr=1e-3, eps=1e-15), "scheduler": ExponentialDecaySchedulerConfig(lr_final=5e-5, max_steps=30000), }, }, viewer=ViewerConfig(num_rays_per_chunk=1 << 15), vis="viewer", ) )