mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-15 04:13:57 +08:00
222 KiB
222 KiB
In [20]:
# COLLAPSED
import torch
from nerfactory.cameras.rays import RayBundle
from nerfactory.graphs.modules import ray_sampler
import plotly.graph_objects as go
from plotly.subplots import make_subplots
num_samples = 1000
near = 2
far = 5
train_stratified = False
samplers = [
ray_sampler.UniformSampler,
ray_sampler.LinearDisparitySampler,
ray_sampler.SqrtSampler,
ray_sampler.LogSampler,
]
fig = make_subplots(
rows=2,
cols=2,
subplot_titles=("Uniform", "Linear in Disparity", "Square Root", "Log Sampler"),
shared_xaxes=True,
shared_yaxes=True,
vertical_spacing=0.1,
)
for i, Sampler in enumerate(samplers):
sampler = Sampler(num_samples=num_samples, train_stratified=train_stratified)
ray_bundle = RayBundle(
origins=torch.ones([1, 3]),
directions=torch.ones([1, 3]),
pixel_area=torch.ones([1, 1]),
nears=torch.ones([1, 1]) * near,
fars=torch.ones([1, 1]) * far,
)
samples = sampler.generate_ray_samples(ray_bundle)
samples.frustums.starts.shape
trace = go.Histogram(x=samples.frustums.starts[0, :, 0], nbinsx=50)
fig.append_trace(trace, i // 2 + 1, i % 2 + 1)
fig.update_yaxes(title_text="# Samples", row=1, col=1)
fig.update_yaxes(title_text="# Samples", row=2, col=1)
fig.update_xaxes(title_text="Distance", row=2, col=1)
fig.update_xaxes(title_text="Distance", row=2, col=2)
# Overlay both histograms
fig.update_layout(height=700, hovermode=False, showlegend=False)
fig.update_yaxes(range=[0, 80])
fig.update_traces(opacity=0.7)
fig.show()