Explore how Spherical Harmonics enhance Neural Radiance Fields and 3D Gaussian Splatting by optimizing inference speed

Harnessing Spherical Harmonics in NeRF and 3D Gaussian Splatting: A Breakthrough in 3D Rendering Efficiency

Papers in 100 Lines of Code
4 min readNov 26, 2024
Novel views synthesis from an optimized NeRF model

Neural Radiance Fields (NeRF) are powerful techniques for 3D rendering, but their real-time applications face significant challenges, particularly due to slow inference. By integrating Spherical Harmonics, we can dramatically enhance these frameworks, achieving both efficiency and high-quality visual outputs.

Introduction to Spherical Harmonics in NeRF

One of the biggest challenges with NeRF is its slow inference speed. Traditional NeRF pipelines rely on neural networks (NNs) to compute view-dependent color. While caching techniques can speed up the static components (like density), the view-dependent color still requires querying a neural network, making real-time rendering impractical.

Spherical Harmonics offer a clever alternative. By representing the view-dependent color with mathematical functions rather than neural networks, we can achieve significant speed-ups without sacrificing quality. These functions efficiently model light behavior and surface interactions in a compact, computationally efficient manner.

How Spherical Harmonics Work

Spherical harmonics decompose functions defined on a sphere into frequency components, similar to Fourier transforms but applied to spherical domains. In 3D rendering, this allows us to approximate lighting and reflection properties efficiently.

In NeRF and 3D Gaussian Splatting

  • Problem: Computing the view-dependent color using neural networks is computationally expensive.
  • Solution: Spherical harmonics approximate the color as a function of ray direction. By representing the color as a linear combination of coefficients (precomputed or learned during training), rendering becomes significantly faster.

For instance, a degree-2 spherical harmonics expansion can be used, which includes 9 terms for compact and effective representation.

Understanding the Equation

  • x, y, z represent the Cartesian components of the ray direction (which is derived from spherical coordinates θ,ϕ).
  • a0, a1, …, a8​ are the spherical harmonics coefficients, which determine how light interacts with surfaces based on the viewing direction.
  • This equation represents a degree 2 spherical harmonics expansion, consisting of 9 terms.

These coefficients allow us to replace neural network computations with simple mathematical operations, boosting rendering performance.

Turning Theory into Code: Implementation of the Plenoxels Paper

What Are Plenoxels?

The Plenoxels paper builds upon spherical harmonics by storing these coefficients directly in a 3D voxel grid, bypassing the need for neural networks. This direct learning approach avoids the complexity of creating a high-dimensional tensor, which would be computationally infeasible.

  • Direct Coefficient Learning: Instead of a 5D tensor (x, y, z, θ, φ), the coefficients are stored in a 3D grid, with spherical harmonics handling directional dependencies.
  • Efficient Rendering: Leveraging spherical harmonics reduces the computational load compared to querying neural networks.
Real-Time Novel View Synthesis | Plenoxels: Radiance Fields without Neural Networks

Evaluating Spherical Harmonics

The eval_spherical_function function computes the color based on ray direction and spherical harmonics coefficients:

Spherical Harmonics in NeRF and 3D Gaussian Splatting from scratch

Inputs:

  • k: Learned coefficients.
  • d: Ray direction.
  • Output: Color value.

Defining the NeRF Model

The NerfModel class replaces neural networks with a voxel grid storing precomputed spherical harmonics coefficients:

Spherical Harmonics in NeRF and 3D Gaussian Splatting PyTorch
  • Voxel Grid: Stores density and coefficients.
  • Efficient Querying: Maps spatial coordinates to voxel indices for fast lookups.

Rendering Rays

The rendering function was already discussed in this introduction to NeRF tutorial and therefore, I won’t spend time on it but I am adding it for completeness. If you want to deepen your knowledge of NeRF, I also have a 10-hour course about it on Udemy.

The great thing about the rendering function is that it is agnostic to the model. Therefore, it is the same function used in my vanilla NeRF, Instant-NGP, or single-image reconstruction codebases.

Spherical Harmonics in NeRF and 3D Gaussian Splatting from scratch

Training

The train function optimizes the model to minimize the pixel reconstruction loss. It is very similar to a standard supervised learning optimization loop in machine learning.

Spherical Harmonics in NeRF and 3D Gaussian Splatting PyTorch

Testing

The test function generates rendered images:

Spherical Harmonics in NeRF and 3D Gaussian Splatting Pure Python

Putting Everything Together

Spherical Harmonics in NeRF and 3D Gaussian Splatting

Key Takeaways

  • Efficiency: Spherical harmonics accelerate NeRF and 3D Gaussian Splatting by replacing slow neural network computations.
  • Quality Preservation: Despite the simplifications, the rendering quality remains high due to the expressiveness of spherical harmonics.
  • Scalability: The voxel grid approach scales well to large scenes while maintaining real-time performance.

I hope you found this story helpful! If it provided value to you, please consider showing your appreciation by clapping for this story. Don’t forget to subscribe to stay updated on more tutorials and content related to Machine Learning, Neural Radiance Fields, and 3D Gaussian Splatting.

Your support is greatly appreciated, and it motivates me to create more useful and informative material. Thank you!

[Full code] | [Udemy Course] | [Career & Internships] [Consulting Services]

--

--

Papers in 100 Lines of Code
Papers in 100 Lines of Code

Written by Papers in 100 Lines of Code

Implementation of research papers in about 100 lines of code

No responses yet