Skip to content

Commit

Permalink
upgrade nerfacc to 0.3.x with CUB accel (#1187)
Browse files Browse the repository at this point in the history
  • Loading branch information
liruilong940607 authored Dec 30, 2022
1 parent e01f5ca commit 028df82
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 8 deletions.
10 changes: 4 additions & 6 deletions nerfstudio/model_components/ray_samplers.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ def forward(
near_plane: float = 0.0,
far_plane: Optional[float] = None,
cone_angle: float = 0.0,
) -> Tuple[RaySamples, TensorType["total_samples", 3], TensorType["total_samples", 2]]:
) -> Tuple[RaySamples, TensorType["total_samples",]]:
"""Generate ray samples in a bounding box.
Args:
Expand All @@ -444,7 +444,6 @@ def forward(
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.
"""

Expand All @@ -455,7 +454,7 @@ def forward(
else:
camera_indices = None

packed_info, starts, ends = nerfacc.ray_marching(
ray_indices, starts, ends = nerfacc.ray_marching(
rays_o=rays_o,
rays_d=rays_d,
scene_aabb=self.scene_aabb,
Expand All @@ -473,11 +472,10 @@ def forward(
if num_samples == 0:
# create a single fake sample and update packed_info accordingly
# this says the last ray in packed_info has 1 sample, which starts and ends at 1
packed_info[-1, 1] = 1
ray_indices = torch.zeros((1,), dtype=starts.dtype, device=rays_o.device)
starts = torch.ones((1, 1), dtype=starts.dtype, device=rays_o.device)
ends = torch.ones((1, 1), dtype=ends.dtype, device=rays_o.device)

ray_indices = nerfacc.unpack_info(packed_info)
origins = rays_o[ray_indices]
dirs = rays_d[ray_indices]
if camera_indices is not None:
Expand All @@ -494,7 +492,7 @@ def forward(
),
camera_indices=camera_indices,
)
return ray_samples, packed_info, ray_indices
return ray_samples, ray_indices


class ProposalNetworkSampler(Sampler):
Expand Down
3 changes: 2 additions & 1 deletion nerfstudio/models/instant_ngp.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def get_outputs(self, ray_bundle: RayBundle):
num_rays = len(ray_bundle)

with torch.no_grad():
ray_samples, packed_info, ray_indices = self.sampler(
ray_samples, ray_indices = self.sampler(
ray_bundle=ray_bundle,
near_plane=self.config.near_plane,
far_plane=self.config.far_plane,
Expand All @@ -181,6 +181,7 @@ def get_outputs(self, ray_bundle: RayBundle):
field_outputs = self.field(ray_samples)

# accumulation
packed_info = nerfacc.pack_info(ray_indices, num_rays)
weights = nerfacc.render_weight_from_density(
packed_info=packed_info,
sigmas=field_outputs[FieldHeadNames.DENSITY],
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ dependencies = [
"mediapy==1.1.0",
"msgpack==1.0.4",
"msgpack_numpy==0.4.8",
"nerfacc==0.2.1",
"nerfacc==0.3.2",
"open3d>=0.16.0",
"opencv-python==4.6.0.66",
"plotly==5.7.0",
Expand Down

0 comments on commit 028df82

Please sign in to comment.