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.