diff --git a/nerfstudio/model_components/ray_samplers.py b/nerfstudio/model_components/ray_samplers.py index ef0079ffd..866218ba1 100644 --- a/nerfstudio/model_components/ray_samplers.py +++ b/nerfstudio/model_components/ray_samplers.py @@ -393,7 +393,6 @@ class VolumetricSampler(Sampler): self.occupancy_grid = occupancy_grid if self.scene_aabb is not None: self.scene_aabb = self.scene_aabb.to("cuda").flatten() - print(self.scene_aabb) def get_sigma_fn(self, origins, directions) -> Optional[Callable]: """Returns a function that returns the density of a point. diff --git a/nerfstudio/models/nerfacto.py b/nerfstudio/models/nerfacto.py index 4972dd5be..bf92968da 100644 --- a/nerfstudio/models/nerfacto.py +++ b/nerfstudio/models/nerfacto.py @@ -46,7 +46,10 @@ from nerfstudio.model_components.losses import ( orientation_loss, pred_normal_loss, ) -from nerfstudio.model_components.ray_samplers import ProposalNetworkSampler +from nerfstudio.model_components.ray_samplers import ( + ProposalNetworkSampler, + UniformSampler, +) from nerfstudio.model_components.renderers import ( AccumulationRenderer, DepthRenderer, @@ -95,6 +98,8 @@ class NerfactoModelConfig(ModelConfig): ] ) """Arguments for the proposal density fields.""" + proposal_initial_sampler: Literal["piecewise", "uniform"] = "piecewise" + """Initial sampler for the proposal network. Piecewise is preferred for unbounded scenes.""" interlevel_loss_mult: float = 1.0 """Proposal loss multiplier.""" distortion_loss_mult: float = 0.002 @@ -171,12 +176,19 @@ class NerfactoModel(Model): 1, self.config.proposal_update_every, ) + + # Change proposal network initial sampler if uniform + initial_sampler = None # None is for piecewise as default (see ProposalNetworkSampler) + if self.config.proposal_initial_sampler == "uniform": + initial_sampler = UniformSampler(single_jitter=self.config.use_single_jitter) + self.proposal_sampler = ProposalNetworkSampler( num_nerf_samples_per_ray=self.config.num_nerf_samples_per_ray, num_proposal_samples_per_ray=self.config.num_proposal_samples_per_ray, num_proposal_network_iterations=self.config.num_proposal_iterations, single_jitter=self.config.use_single_jitter, update_sched=update_schedule, + initial_sampler=initial_sampler, ) # Collider @@ -312,7 +324,6 @@ class NerfactoModel(Model): def get_image_metrics_and_images( self, outputs: Dict[str, torch.Tensor], batch: Dict[str, torch.Tensor] ) -> Tuple[Dict[str, float], Dict[str, torch.Tensor]]: - image = batch["image"].to(self.device) rgb = outputs["rgb"] acc = colormaps.apply_colormap(outputs["accumulation"]) diff --git a/scripts/benchmarking/launch_train_blender.sh b/scripts/benchmarking/launch_train_blender.sh index 298e21749..8f7148c03 100644 --- a/scripts/benchmarking/launch_train_blender.sh +++ b/scripts/benchmarking/launch_train_blender.sh @@ -28,7 +28,7 @@ fi method_opts=() if [ "$method_name" = "nerfacto" ]; then # https://github.com/nerfstudio-project/nerfstudio/issues/806#issuecomment-1284327844 - method_opts=(--pipeline.model.background-color white --pipeline.model.near-plane 2. --pipeline.model.far-plane 6. --pipeline.datamanager.camera-optimizer.mode off --pipeline.model.use-average-appearance-embedding False) + method_opts=(--pipeline.model.background-color white --pipeline.model.proposal-initial-sampler uniform --pipeline.model.near-plane 2. --pipeline.model.far-plane 6. --pipeline.datamanager.camera-optimizer.mode off --pipeline.model.use-average-appearance-embedding False) fi shift $((OPTIND-1))