diff --git a/nerfstudio/configs/method_configs.py b/nerfstudio/configs/method_configs.py index e75f3a853..dc9aba07f 100644 --- a/nerfstudio/configs/method_configs.py +++ b/nerfstudio/configs/method_configs.py @@ -352,15 +352,15 @@ method_configs["dreamfusion"] = TrainerConfig( ), model=DreamFusionModelConfig( eval_num_rays_per_chunk=1 << 15, - distortion_loss_mult=10.0, + distortion_loss_mult=0.02, + interlevel_loss_mult=1.0, orientation_loss_mult=0.1, max_res=256, sphere_collider=True, initialize_density=False, random_background=True, - interlevel_loss_mult=1.0, - proposal_warmup=500, - proposal_update_every=5, + proposal_warmup=1000, + proposal_update_every=2, proposal_weights_anneal_max_num_iters=100, start_lambertian_training=1000, start_normals_training=500, diff --git a/nerfstudio/model_components/ray_samplers.py b/nerfstudio/model_components/ray_samplers.py index 08ee1fd95..67201bb18 100644 --- a/nerfstudio/model_components/ray_samplers.py +++ b/nerfstudio/model_components/ray_samplers.py @@ -510,7 +510,7 @@ class VolumetricSampler(Sampler): class ProposalNetworkSampler(Sampler): """Sampler that uses a proposal network to generate samples. - + Args: num_proposal_samples_per_ray: Number of samples to generate per ray for each proposal step. num_nerf_samples_per_ray: Number of samples to generate per ray for the NERF model. @@ -518,6 +518,7 @@ class ProposalNetworkSampler(Sampler): single_jitter: Use a same random jitter for all samples along a ray. update_sched: A function that takes the iteration number of steps between updates. initial_sampler: Sampler to use for the first iteration. Uses UniformLinDispPiecewise if not set. + pdf_histogram_padding: Padding to add to the histogram of the pdf. """ def __init__( @@ -528,6 +529,7 @@ class ProposalNetworkSampler(Sampler): single_jitter: bool = False, update_sched: Callable = lambda x: 1, initial_sampler: Optional[Sampler] = None, + pdf_histogram_padding: float = 0.01, ) -> None: super().__init__() self.num_proposal_samples_per_ray = num_proposal_samples_per_ray @@ -542,7 +544,9 @@ class ProposalNetworkSampler(Sampler): self.initial_sampler = UniformLinDispPiecewiseSampler(single_jitter=single_jitter) else: self.initial_sampler = initial_sampler - self.pdf_sampler = PDFSampler(include_original=False, single_jitter=single_jitter) + self.pdf_sampler = PDFSampler( + include_original=False, single_jitter=single_jitter, histogram_padding=pdf_histogram_padding + ) self._anneal = 1.0 self._steps_since_update = 0 diff --git a/nerfstudio/models/dreamfusion.py b/nerfstudio/models/dreamfusion.py index f96d16eb7..6eba9dc96 100644 --- a/nerfstudio/models/dreamfusion.py +++ b/nerfstudio/models/dreamfusion.py @@ -234,6 +234,7 @@ class DreamFusionModel(Model): single_jitter=self.config.use_single_jitter, update_sched=update_schedule, initial_sampler=UniformSampler(single_jitter=self.config.use_single_jitter), + pdf_histogram_padding=0.001, ) # renderers