|
45 | 45 | PhototourismDataParserConfig,
|
46 | 46 | )
|
47 | 47 | from nerfstudio.data.dataparsers.sdfstudio_dataparser import SDFStudioDataParserConfig
|
48 |
| -from nerfstudio.engine.optimizers import AdamOptimizerConfig, RAdamOptimizerConfig |
| 48 | +from nerfstudio.engine.optimizers import AdamOptimizerConfig, RAdamOptimizerConfig, AdamWOptimizerConfig |
49 | 49 | from nerfstudio.engine.schedulers import (
|
50 | 50 | ExponentialSchedulerConfig,
|
51 | 51 | MultiStepSchedulerConfig,
|
52 | 52 | NeuSSchedulerConfig,
|
| 53 | + MultiStepWarmupSchedulerConfig, |
53 | 54 | )
|
54 | 55 | from nerfstudio.field_components.temporal_distortions import TemporalDistortionKind
|
55 | 56 | from nerfstudio.fields.sdf_field import SDFFieldConfig
|
|
58 | 59 | from nerfstudio.models.instant_ngp import InstantNGPModelConfig
|
59 | 60 | from nerfstudio.models.mipnerf import MipNerfModel
|
60 | 61 | from nerfstudio.models.nerfacto import NerfactoModelConfig
|
| 62 | +from nerfstudio.models.neuralangelo import NeuralangeloModelConfig |
| 63 | +from nerfstudio.models.bakedangelo import BakedAngeloModelConfig |
61 | 64 | from nerfstudio.models.neuralreconW import NeuralReconWModelConfig
|
62 | 65 | from nerfstudio.models.neus import NeuSModelConfig
|
63 | 66 | from nerfstudio.models.neus_acc import NeuSAccModelConfig
|
|
99 | 102 | "neus-facto-bigmlp": "NeuS-facto with big MLP, it is used in training heritage data with 8 gpus",
|
100 | 103 | "bakedsdf": "Implementation of BackedSDF with multi-res hash grids",
|
101 | 104 | "bakedsdf-mlp": "Implementation of BackedSDF with large MLPs",
|
| 105 | + "neuralangelo": "Implementation of Neuralangelo", |
| 106 | + "bakedangelo": "Implementation of Neuralangelo with BakedSDF", |
| 107 | + "neus-facto-angelo": "Implementation of Neuralangelo with neus-facto", |
102 | 108 | }
|
103 | 109 |
|
| 110 | + |
| 111 | +method_configs["bakedangelo"] = Config( |
| 112 | + method_name="bakedangelo", |
| 113 | + trainer=TrainerConfig( |
| 114 | + steps_per_eval_image=5000, |
| 115 | + steps_per_eval_batch=5000, |
| 116 | + steps_per_save=20000, |
| 117 | + steps_per_eval_all_images=1000000, # set to a very large model so we don't eval with all images |
| 118 | + max_num_iterations=1000_001, |
| 119 | + mixed_precision=False, |
| 120 | + ), |
| 121 | + pipeline=VanillaPipelineConfig( |
| 122 | + datamanager=VanillaDataManagerConfig( |
| 123 | + dataparser=SDFStudioDataParserConfig(), |
| 124 | + train_num_rays_per_batch=8192, |
| 125 | + eval_num_rays_per_batch=1024, |
| 126 | + camera_optimizer=CameraOptimizerConfig( |
| 127 | + mode="off", optimizer=AdamOptimizerConfig(lr=6e-4, eps=1e-8, weight_decay=1e-2) |
| 128 | + ), |
| 129 | + ), |
| 130 | + model=BakedAngeloModelConfig( |
| 131 | + near_plane=0.01, |
| 132 | + far_plane=1000.0, |
| 133 | + overwrite_near_far_plane=True, |
| 134 | + sdf_field=SDFFieldConfig( |
| 135 | + use_grid_feature=True, |
| 136 | + num_layers=1, |
| 137 | + num_layers_color=4, |
| 138 | + hidden_dim=256, |
| 139 | + hidden_dim_color=256, |
| 140 | + geometric_init=True, |
| 141 | + bias=1.5, |
| 142 | + beta_init=0.1, |
| 143 | + inside_outside=True, |
| 144 | + use_appearance_embedding=True, |
| 145 | + use_numerical_gradients=True, |
| 146 | + base_res=64, |
| 147 | + max_res=4096, |
| 148 | + log2_hashmap_size=22, |
| 149 | + hash_features_per_level=8, |
| 150 | + hash_smoothstep=False, |
| 151 | + use_position_encoding=False, |
| 152 | + ), |
| 153 | + eikonal_loss_mult=0.01, |
| 154 | + background_model="grid", |
| 155 | + proposal_weights_anneal_max_num_iters=10000, |
| 156 | + use_anneal_beta=True, |
| 157 | + eval_num_rays_per_chunk=1024, |
| 158 | + use_spatial_varying_eikonal_loss=False, |
| 159 | + steps_per_level=10_000, |
| 160 | + curvature_loss_warmup_steps=20_000, |
| 161 | + beta_anneal_end=0.0002, |
| 162 | + beta_anneal_max_num_iters=1000_000, |
| 163 | + ), |
| 164 | + ), |
| 165 | + optimizers={ |
| 166 | + "proposal_networks": { |
| 167 | + "optimizer": AdamOptimizerConfig(lr=1e-2, eps=1e-15), |
| 168 | + "scheduler": MultiStepSchedulerConfig(max_steps=1000_000), |
| 169 | + }, |
| 170 | + "fields": { |
| 171 | + "optimizer": AdamWOptimizerConfig(lr=1e-3, eps=1e-15, weight_decay=1e-2), |
| 172 | + "scheduler": MultiStepWarmupSchedulerConfig(warm_up_end=5000, milestones=[600_000, 800_000], gamma=0.1), |
| 173 | + }, |
| 174 | + "field_background": { |
| 175 | + "optimizer": AdamWOptimizerConfig(lr=1e-3, eps=1e-15), |
| 176 | + "scheduler": MultiStepWarmupSchedulerConfig(warm_up_end=5000, milestones=[300_000, 400_000], gamma=0.1), |
| 177 | + }, |
| 178 | + }, |
| 179 | + viewer=ViewerConfig(num_rays_per_chunk=1 << 15), |
| 180 | + vis="viewer", |
| 181 | +) |
| 182 | + |
| 183 | + |
| 184 | +method_configs["neuralangelo"] = Config( |
| 185 | + method_name="neuralangelo", |
| 186 | + trainer=TrainerConfig( |
| 187 | + steps_per_eval_image=5000, |
| 188 | + steps_per_eval_batch=5000, |
| 189 | + steps_per_save=20000, |
| 190 | + steps_per_eval_all_images=1000000, # set to a very large model so we don't eval with all images |
| 191 | + max_num_iterations=500_001, |
| 192 | + mixed_precision=False, |
| 193 | + ), |
| 194 | + pipeline=VanillaPipelineConfig( |
| 195 | + datamanager=VanillaDataManagerConfig( |
| 196 | + dataparser=SDFStudioDataParserConfig(), |
| 197 | + train_num_rays_per_batch=512, |
| 198 | + eval_num_rays_per_batch=512, |
| 199 | + camera_optimizer=CameraOptimizerConfig( |
| 200 | + mode="off", optimizer=AdamOptimizerConfig(lr=6e-4, eps=1e-8, weight_decay=1e-2) |
| 201 | + ), |
| 202 | + ), |
| 203 | + model=NeuralangeloModelConfig( |
| 204 | + sdf_field=SDFFieldConfig( |
| 205 | + use_grid_feature=True, |
| 206 | + num_layers=1, |
| 207 | + num_layers_color=4, |
| 208 | + hidden_dim=256, |
| 209 | + hidden_dim_color=256, |
| 210 | + geometric_init=True, |
| 211 | + bias=0.5, |
| 212 | + beta_init=0.3, |
| 213 | + inside_outside=False, |
| 214 | + use_appearance_embedding=False, |
| 215 | + position_encoding_max_degree=6, |
| 216 | + use_numerical_gradients=True, |
| 217 | + base_res=64, |
| 218 | + max_res=4096, |
| 219 | + log2_hashmap_size=22, |
| 220 | + hash_features_per_level=8, |
| 221 | + hash_smoothstep=False, |
| 222 | + use_position_encoding=False, |
| 223 | + ), |
| 224 | + background_model="mlp", |
| 225 | + enable_progressive_hash_encoding=True, |
| 226 | + enable_curvature_loss_schedule=True, |
| 227 | + enable_numerical_gradients_schedule=True, |
| 228 | + ), |
| 229 | + ), |
| 230 | + optimizers={ |
| 231 | + "fields": { |
| 232 | + "optimizer": AdamWOptimizerConfig(lr=1e-3, weight_decay=0.01, eps=1e-15), |
| 233 | + # "scheduler": NeuSSchedulerConfig(warm_up_end=5000, learning_rate_alpha=0.05, max_steps=500000), |
| 234 | + "scheduler": MultiStepWarmupSchedulerConfig(warm_up_end=5000, milestones=[300_000, 400_000], gamma=0.1), |
| 235 | + }, |
| 236 | + "field_background": { |
| 237 | + "optimizer": AdamWOptimizerConfig(lr=1e-3, eps=1e-15), |
| 238 | + "scheduler": MultiStepWarmupSchedulerConfig(warm_up_end=5000, milestones=[300_000, 400_000], gamma=0.1), |
| 239 | + }, |
| 240 | + }, |
| 241 | + viewer=ViewerConfig(num_rays_per_chunk=1 << 15), |
| 242 | + vis="viewer", |
| 243 | +) |
| 244 | + |
| 245 | + |
104 | 246 | method_configs["bakedsdf"] = Config(
|
105 | 247 | method_name="bakedsdf",
|
106 | 248 | trainer=TrainerConfig(
|
|
228 | 370 | )
|
229 | 371 |
|
230 | 372 |
|
| 373 | +method_configs["neus-facto-angelo"] = Config( |
| 374 | + method_name="neus-facto-angelo", |
| 375 | + trainer=TrainerConfig( |
| 376 | + steps_per_eval_image=5000, |
| 377 | + steps_per_eval_batch=5000, |
| 378 | + steps_per_save=20000, |
| 379 | + steps_per_eval_all_images=1000000, # set to a very large model so we don't eval with all images |
| 380 | + max_num_iterations=1000_001, |
| 381 | + mixed_precision=False, |
| 382 | + ), |
| 383 | + pipeline=VanillaPipelineConfig( |
| 384 | + datamanager=VanillaDataManagerConfig( |
| 385 | + dataparser=SDFStudioDataParserConfig(), |
| 386 | + train_num_rays_per_batch=2048, |
| 387 | + eval_num_rays_per_batch=1024, |
| 388 | + camera_optimizer=CameraOptimizerConfig( |
| 389 | + mode="off", optimizer=AdamOptimizerConfig(lr=6e-4, eps=1e-8, weight_decay=1e-2) |
| 390 | + ), |
| 391 | + ), |
| 392 | + model=NeuSFactoModelConfig( |
| 393 | + near_plane=0.01, |
| 394 | + far_plane=1000.0, |
| 395 | + overwrite_near_far_plane=True, |
| 396 | + sdf_field=SDFFieldConfig( |
| 397 | + use_grid_feature=True, |
| 398 | + num_layers=1, |
| 399 | + num_layers_color=4, |
| 400 | + hidden_dim=256, |
| 401 | + hidden_dim_color=256, |
| 402 | + geometric_init=True, |
| 403 | + bias=0.5, |
| 404 | + beta_init=0.3, |
| 405 | + inside_outside=False, |
| 406 | + use_appearance_embedding=True, |
| 407 | + use_numerical_gradients=True, |
| 408 | + base_res=64, |
| 409 | + max_res=4096, |
| 410 | + log2_hashmap_size=22, |
| 411 | + hash_features_per_level=8, |
| 412 | + hash_smoothstep=False, |
| 413 | + use_position_encoding=False, |
| 414 | + ), |
| 415 | + background_model="grid", |
| 416 | + eval_num_rays_per_chunk=1024, |
| 417 | + level_init=8, |
| 418 | + eikonal_loss_mult=0.01, |
| 419 | + use_anneal_beta=True, |
| 420 | + enable_progressive_hash_encoding=True, |
| 421 | + enable_numerical_gradients_schedule=True, |
| 422 | + enable_curvature_loss_schedule=True, |
| 423 | + curvature_loss_multi=5e-4, |
| 424 | + ), |
| 425 | + ), |
| 426 | + optimizers={ |
| 427 | + "proposal_networks": { |
| 428 | + "optimizer": AdamOptimizerConfig(lr=1e-2, eps=1e-15), |
| 429 | + "scheduler": MultiStepSchedulerConfig(max_steps=1000_000), |
| 430 | + }, |
| 431 | + "fields": { |
| 432 | + "optimizer": AdamOptimizerConfig(lr=1e-3, eps=1e-15), |
| 433 | + "scheduler": MultiStepWarmupSchedulerConfig(warm_up_end=5000, milestones=[600_000, 800_000], gamma=0.1), |
| 434 | + }, |
| 435 | + "field_background": { |
| 436 | + "optimizer": AdamWOptimizerConfig(lr=1e-3, eps=1e-15), |
| 437 | + "scheduler": MultiStepWarmupSchedulerConfig(warm_up_end=5000, milestones=[300_000, 400_000], gamma=0.1), |
| 438 | + }, |
| 439 | + }, |
| 440 | + viewer=ViewerConfig(num_rays_per_chunk=1 << 15), |
| 441 | + vis="viewer", |
| 442 | +) |
| 443 | + |
231 | 444 | method_configs["neus-facto"] = Config(
|
232 | 445 | method_name="neus-facto",
|
233 | 446 | trainer=TrainerConfig(
|
|
0 commit comments