3D Gaussian Ray Tracing

김민솔·2024년 12월 2일

1. Introduction & 2. Related work(생략)

CV분야에서, rendering은 rasterization과 ray tracing 두 가지로 사용되고 있습니다. rasterization은 real-time 성능을 보장하는 반면에, ray tracing은 high-fidelity rendering을 보장하였습니다. 3D Gaussian Ray Tracing에서는 특별한 GPU ray tracing을 고안하여 real-time을 구현하였습니다.

3D GS 한계점

  • tile-based rasterizer는 왜곡이 심한 카메라에 부적합합니다.
  • reflection, refraction, shadows와 같은 현상에 취약합니다.
  • ray를 확률적으로 샘플링하지 못합니다.

Contibution

  • GPU-accelerated ray tracing 알고리즘을 구현하였습니다.
  • paricle-based(Gaussian) radiance fields 최적화 구조를 향상시켰습니다.
  • 일반화된 가우시안 formulation으로 intersection의 수를 줄이고, 랜더링 효율성을 향상시켰습니다.
  • depth of field, shadows, semi-transparent, highly-distorted cameras(rolling shutter), incoherent rays 등에 응용할 수 있습니다.

3. BackGround

3.1 3D Gaussian Parameterization

미분 가능한 3D Gaussian particles의 kernel function으로 scene을 표현합니다. point xR3\mathbf{x} \in \mathbb{R}^{3}에 대한 kernel function은 다음과 같습니다.

ρ(x)=e(xμ)Σ1(xμ)\rho(x) = e^{-(\mathbf{x}-\mathbf{\mu})^{\top}\Sigma^{-1}(\mathbf{x}-\mu)}

이때, μR3\mu \in \mathbb{R}^{3}은 particle의 position입니다. covariance matrix ΣR3×3\Sigma \in \mathbb{R}^{3\times3}은 아래와 같이 정의됩니다.

Σ=RSSTRT\Sigma = RSS^TR^T
  • RR: rotation matrix
  • SS: scaling matrix
    positive semi-definiteness를 만족해야 gradient descent가 가능합니다.

opacity coefficient σ\sigma와 SH(m=3) 함수 Ylm(d)Y^m_l(d) viewdir에 따른 parametric radiance function ϕβ(d)\phi_{\beta}(d)는 아래와 같이 정의됩니다.

ϕβ(d)=f(=0maxm=βmYm(d))\phi_{\beta}(d) = f\Bigg( \sum\limits^{\ell_{max}}_{\ell=0}\sum\limits^{\ell}_{m=-\ell}\beta^m_{\ell}Y^m_{\ell}(d) \Bigg)
  • ff: sigmoid function
  • sigmoid는 color normalization에 사용됩니다.

3.2 Differentiable Rendeing of Particle Representations

ray r(t)=o+td\mathbf{r}(t) = \mathbf{o} +t\mathbf{d}에 따른 numerical intergration은 다음과 같이 정의됩니다.

L(o,d)=i=1Nci(d)αij=1i1(1αj)\mathbf{L}(\mathbf{o}, \mathbf{d}) = \sum\limits^N_{i=1}\mathbf{c}_{i}(\mathbf{d})\alpha_{i}\prod^{i-1}_{j=1}(1-\alpha_j)
  • α=σiρi(xi)\alpha = \sigma_{i}\rho_{i}(\mathbf{x}_{i}): 투명도
    이때 appearance는 view-dependent radiance function으로부터 얻어지는 color 값입니다. (3.1에서의 방식입니다.)

3.3 Hardware-Accelerated Ray Tracing

NVDIA OptiX 프로그래밍 인터페이스를 통해, NVIDIA RTX에 최적화된 Ray Tracing을 구현합니다. triangle mesh로 Bounding Volume Hierarchy(BVH)를 사용하는 구조는 RT core에 최적화되어 있다고 언급합니다. (논문엔 해당 부분에 대한 설명이 나와있지 않습니다.)
Streaming-Multiprocessor(SM)과 RT cores를 활용하여 아래의 프로그램 포인트들이 이뤄집니다.

  • ray-gen: SM이 ray에 대해 scene traversal을 시작합니다.
  • intersection: traversal 중, hit primitives를 계산합니다. (gpu가 사용되는 부분은 아닙니다.)
  • any-hit: traversal 중, 모든 hit에 대한 처리나 hit을 제거하는 부분입니다.
  • closest-hit: traversal 종료 후, closest accepted hit을 처리합니다.
  • miss: traversal 종료 후, accepted hit이 없을 때 실행됩니다.

4. Method

3D GRT의 알고리즘 overview입니다. 1️⃣ 3D particles로부터 BVH를 빌드합니다. 2️⃣ ray를 trace하여 k개의 입자로부터 radiance를 얻습니다. 3️⃣ intersected particle의 response와 radiance를 렌더링 방정식을 통해 축적합니다.(transimittance) 4️⃣ 모든 입자가 처리되거나, transimittance가 임계 값에 도달한 경우, final rendering을 반환합니다.

4.1 Bounding Primitives

NVIDIA OptiX 프로그래밍 모델은 3가지의 BVH를 제공합니다.
1. traingles
2. spheres
3. custom primitives by AABBs(Axis-Aligned Bounding Boxes)
이때, bound를 정하는 부분에서 trade-off가 발생합니다. AABB를 따라 ray intersecting하게 되면, 속도는 빠른 반면에 false positive 수도 증가합니다.

Stretched Polyhedron Proxy Geometry

저자들의 많은 실험 후에 가장 효과적인 particle 형태로 stretched regular icosahedron mesh를 사용하였습니다. particle도 타이트하게 bounding하고, hardware에도 최적화된 intersection입니다.
bounding proxy는 minimum response αmin=0.01\alpha_{min}=0.01로 설정하였습니다.

v2log(σ/αmin)SRTv+μv \leftarrow \sqrt{2\log(\sigma/\alpha_{min})}SR^{T}v +\mu

위의 식의 과정은 다음과 같습니다. S,R,vS, R, v를 통해서 3D Gaussian에 맞게 mesh를 변형시킵니다. 이후, σ\sigma를 통해서 vertex가 scaling됩니다.
해당 식에서 opacity를 포함하므로, 크기가 크고 투명한 particle은 작은 bounding primitives를 갖게 됩니다.

4.2 Ray Tracing Renderer


OptiX 프로그래밍 모듈의 ray casting은 1️⃣ closest-hit 프로그램으로 가까운 입자들부터 처리하고, 2️⃣ 다음 입자들을 re-cast합니다. 하지만 이는 연산이 비싸다는 단점이 있습니다.
3D GRT에서는 semi-transparent 가우시안을 각 slab을 모은 후, slab 내에서 가우시안을 정렬합니다. 해당 과정 중에 반투명 표면을 k-buffer에 넣고, 인접한 입자들을 병합합니다.

Algorithm

ray-gen

  • 정렬된 primitive hits에 대해 각 가우시안의 정보를 얻고, 이를 통해 렌더링합니다.
  • 렌더링 과정을 다음 k개 입자에 반복적으로 적용합니다.
  • 모든 ray intersecting 입자들이 처리되거나, early-terminate인 transimittance 최소에 도달하면 ray-gen 프로그램이 종료됩니다.

any-hit

  • hit location과 가우시안들의 index 정보를 입력으로 받습니다.
  • ray-gen에 사용될 정렬된 버퍼를 구하는 과정입니다.

4.3 Evaluating Particle Response

ray-particle intersection을 알아낸 후에, 각 입자가 가지는 영향을 계산해야 합니다. 어떤 distance τ\tau을 샘플로 사용할지 정해야 합니다. 저자들은 maximum response τmax=argmaxtauρ(o+τd)\tau_{max}=\arg \max_{tau}\rho(\mathbf{o}+\tau\mathbf{d})에서 샘플을 사용하였습니다.

τmax=(μo)TΣ1ddTΣ1d\tau_{max}= \frac{(\mu-\mathbf{o})^{T}\Sigma^{-1}\mathbf{d}}{\mathbf{d}^{T}\Sigma^{-1}\mathbf{d}}

위의 식은 Gaussian function에서 argmax를 구하는 과정으로 얻어집니다.

G(o+τd)τ=2dTΣ1(o+τdμ)=0\frac{\partial{G(\mathbf{o}+\tau\mathbf{d})}}{\partial{\tau}} = 2d^{T}\Sigma^{-1}(\mathbf{o}+\tau\mathbf{d} - \mu ) = 0

4.4 Differentiable Ray Tracing and Optimization

Differentiable Ray Tracing

ray tracing render가 미분 가능하도록 구현하였습니다. backprop을 위해서, forward-pass로 렌더링 후, 같은 rays를 re-cast하여 같은 입자들을 순서대로 얻어 각 shading 표현에 대해 gradient를 계산하였습니다. 해당 gradient를 buffer 내에서 축적하여 사용하였습니다.

Optimization

3D GS와 동일하게, pruning / cloning / splitting 연산으로 가우시안 입자들을 최적화하였습니다. 하지만 3D GS는 이미지 gradient로 최적화하는 반면에, RT에서는 해당 값이 의미가 없어집니다. 따라서, world-space에서의 gradient를 사용하여 최적화하였습니다. 단, 가우시안들이 업데이트 되면, ray tracing BVH가 다시 만들어져야 합니다.

Training with incoherent rays

Rasterization은 이미지 전체 혹은 타일들에 대해 렌더링한 반면에, GRT에서는 random sampled rays를 이용하여 stochastic descent를 활용할 수 있습니다. 단, stochastic sampling이 사용되면, window-based 이미지 목적 함수(i.e. SSIM)는 사용할 수 없습니다.

5. Experiments

Quantitatives

  • metric으로 확인 시 GS와 거의 비슷한 성능을 보입니다.
  • 메모리가 절반 가까이 줄었습니다.

Rasterization vs Ray Tracing

  • GS에 비해 FPS는 낮은 것을 확인할 수 있습니다.

Qualitatives

  • GS에 비해 더 적은 floater를 형성하는 것을 확인할 수 있습니다.
  • GRT는 Novel-View Synthesis 이외에도 다른 영역에서도 사용 가능하다는 차이점을 가집니다.

Ablations

Quantitative Ablations

  • (top-left): ray-tracing 알고리즘에 따른 FPS/PSNR 비교입니다.
    - GRT가 FPS는 낮지만, PSNR에서는 높은 점수를 가졌습니다.
  • (top-right): hit buffer size에 따른 FPS 비교입니다.
  • (bottom-left): BVH 모양에 따른 FPS와 build 시간 비교입니다.
  • (bottom-right): hit의 평균 수와 평균 FPS 테이블입니다.

Particle kernel functions

  • Gaussian / Generalized Gaussian 등 여러 입자 함수를 적용한 ablation입니다.
  • 3D 가우시안을 사용했을 때 가장 좋은 성능을 보입니다.

6. Applications

reflections, depth of field, shadows와 같은 Ray-based 효과 뿐만 아니라, Instancing, 복잡한 카메라 등 다양하게 응용이 가능하다는 점이 GRT의 가장 큰 장점이 아닐까 싶습니다. project page에서 더 자세한 내용을 확인하실 수 있습니다.

7. Conclusion

Gaussian Splatting 내 Rasterization에서의 단점을 Ray tracing으로 변경하여 해결한 논문입니다. rasterization에 비해 여전히 속도가 느리다는 단점이 존재하지만, 개선할 부분이 많이 보이기도 합니다. ray tracing에 대한 자세한 포스트를 조만간 올려보겠습니다.

Reference

[1] 3D Gaussian Ray Tracing: Fast Tracing of Particle Scenes, https://gaussiantracer.github.io/
[2] Ray-Tracing, https://developer.nvidia.com/discover/ray-tracing

profile
Interested in Vision, Generative, Neural Rendering

0개의 댓글