Ray Sampler#

Collection of sampling strategies

class nerfstudio.model_components.ray_samplers.LinearDisparitySampler(num_samples: Optional[int] = None, train_stratified=True, single_jitter=False)#

Bases: SpacedSampler

Sample linearly in disparity along a ray

Parameters:
  • num_samples – Number of samples per ray

  • train_stratified – Use stratified sampling during training. Defults to True

  • single_jitter – Use a same random jitter for all samples along a ray. Defaults to False

class nerfstudio.model_components.ray_samplers.LogSampler(num_samples: Optional[int] = None, train_stratified=True, single_jitter=False)#

Bases: SpacedSampler

Log sampler along a ray

Parameters:
  • num_samples – Number of samples per ray

  • train_stratified – Use stratified sampling during training. Defults to True

class nerfstudio.model_components.ray_samplers.PDFSampler(num_samples: Optional[int] = None, train_stratified: bool = True, single_jitter: bool = False, include_original: bool = True, histogram_padding: float = 0.01)#

Bases: Sampler

Sample based on probability distribution

Parameters:
  • num_samples – Number of samples per ray

  • train_stratified – Randomize location within each bin during training.

  • single_jitter – Use a same random jitter for all samples along a ray. Defaults to False

  • include_original – Add original samples to ray.

  • histogram_padding – Amount to weights prior to computing PDF.

generate_ray_samples(ray_bundle: Optional[RayBundle] = None, ray_samples: Optional[RaySamples] = None, weights: Optional[Tensor] = None, num_samples: Optional[int] = None, eps: float = 1e-05) RaySamples#

Generates position samples given a distribution.

Parameters:
  • ray_bundle – Rays to generate samples for

  • ray_samples – Existing ray samples

  • weights – Weights for each bin

  • num_samples – Number of samples per ray

  • eps – Small value to prevent numerical issues.

Returns:

Positions and deltas for samples along a ray

class nerfstudio.model_components.ray_samplers.ProposalNetworkSampler(num_proposal_samples_per_ray: ~typing.Tuple[int] = (64, ), num_nerf_samples_per_ray: int = 32, num_proposal_network_iterations: int = 2, single_jitter: bool = False, update_sched: ~typing.Callable = <function ProposalNetworkSampler.<lambda>>)#

Bases: Sampler

Sampler that uses a proposal network to generate samples.

generate_ray_samples(ray_bundle: Optional[RayBundle] = None, density_fns: Optional[List[Callable]] = None) Tuple[RaySamples, List, List]#

Generate Ray Samples

set_anneal(anneal: float) None#

Set the anneal value for the proposal network.

step_cb(step)#

Callback to register a training step has passed. This is used to keep track of the sampling schedule

class nerfstudio.model_components.ray_samplers.Sampler(num_samples: Optional[int] = None)#

Bases: Module

Generate Samples

Parameters:

num_samples – number of samples to take

forward(*args, **kwargs) RaySamples#

Generate ray samples

abstract generate_ray_samples() RaySamples#

Generate Ray Samples

class nerfstudio.model_components.ray_samplers.SpacedSampler(spacing_fn: Callable, spacing_fn_inv: Callable, num_samples: Optional[int] = None, train_stratified=True, single_jitter=False)#

Bases: Sampler

Sample points according to a function.

Parameters:
  • num_samples – Number of samples per ray

  • spacing_fn – Function that dictates sample spacing (ie lambda x : x is uniform).

  • spacing_fn_inv – The inverse of spacing_fn.

  • train_stratified – Use stratified sampling during training. Defults to True

  • single_jitter – Use a same random jitter for all samples along a ray. Defaults to False

generate_ray_samples(ray_bundle: Optional[RayBundle] = None, num_samples: Optional[int] = None) RaySamples#

Generates position samples accoring to spacing function.

Parameters:
  • ray_bundle – Rays to generate samples for

  • num_samples – Number of samples per ray

Returns:

Positions and deltas for samples along a ray

class nerfstudio.model_components.ray_samplers.SqrtSampler(num_samples: Optional[int] = None, train_stratified=True, single_jitter=False)#

Bases: SpacedSampler

Square root sampler along a ray

Parameters:
  • num_samples – Number of samples per ray

  • train_stratified – Use stratified sampling during training. Defults to True

class nerfstudio.model_components.ray_samplers.UniformLinDispPiecewiseSampler(num_samples: Optional[int] = None, train_stratified=True, single_jitter=False)#

Bases: SpacedSampler

Piecewise sampler along a ray that allocates the first half of the samples uniformly and the second half using linearly in disparity spacing.

Parameters:
  • num_samples – Number of samples per ray

  • train_stratified – Use stratified sampling during training. Defults to True

  • single_jitter – Use a same random jitter for all samples along a ray. Defaults to False

class nerfstudio.model_components.ray_samplers.UniformSampler(num_samples: Optional[int] = None, train_stratified=True, single_jitter=False)#

Bases: SpacedSampler

Sample uniformly along a ray

Parameters:
  • num_samples – Number of samples per ray

  • train_stratified – Use stratified sampling during training. Defults to True

  • single_jitter – Use a same random jitter for all samples along a ray. Defaults to False

class nerfstudio.model_components.ray_samplers.VolumetricSampler(occupancy_grid: Optional[OccupancyGrid] = None, density_fn: Optional[Callable[[Tensor], Tensor]] = None, scene_aabb: Optional[Tensor] = None)#

Bases: Sampler

Sampler inspired by the one proposed in the Instant-NGP paper. Generates samples along a ray by sampling the occupancy field. Optionally removes occluded samples if the density_fn is provided.

Args: occupancy_grid: Occupancy grid to sample from. density_fn: Function that evaluates density at a given point. scene_aabb: Axis-aligned bounding box of the scene, should be set to None if the scene is unbounded.

forward(ray_bundle: RayBundle, render_step_size: float, near_plane: float = 0.0, far_plane: Optional[float] = None, cone_angle: float = 0.0) Tuple[RaySamples, Tensor, Tensor]#

Generate ray samples in a bounding box.

Parameters:
  • ray_bundle – Rays to generate samples for

  • render_step_size – Minimum step size to use for rendering

  • near_plane – Near plane for raymarching

  • far_plane – Far plane for raymarching

  • cone_angle – Cone angle for raymarching, set to 0 for uniform marching.

Returns:

a tuple of (ray_samples, packed_info, ray_indices) The ray_samples are packed, only storing the valid samples. The packed_info contains all the information to recover packed samples into unpacked mode for rendering. The ray_indices contains the indices of the rays that each sample belongs to.

generate_ray_samples() RaySamples#

Generate Ray Samples

get_sigma_fn(origins, directions) Optional[Callable]#

Returns a function that returns the density of a point.

Parameters:
  • origins – Origins of rays

  • directions – Directions of rays

Returns:

Function that returns the density of a point or None if a density function is not provided.