SIGGRAPH 2024. [Paper] [Page] [Github]
Keyang Ye, Qiming Hou, Kun Zhou
Zhejiang University
29 Apr 2024

Introduction

최근 3D Gaussian Splatting (3DGS)은 radiance field를 3D Gaussian들로 모델링하여 고해상도 및 실시간 프레임 속도로 새로운 뷰를 합성하고 SOTA 시각적 품질을 달성하였다. 그러나 정반사는 Gaussian splatting을 모델링하기에는 여전히 어려운 문제이다. 3DGS는 Gaussian마다 Spherical Harmonics (SH) 함수를 통해 뷰에 따른 색상을 제공하지만 정반사를 모델링 하기에는 너무 제한된다. 대신 학습 과정에서는 Gaussian이 반사된 이미지를 명시적으로 모델링하며, 이는 3D 공간 상에 반사체의 위치를 잘 정의하지 못하게 만든다. 따라서 반사 효과는 제대로 반영되지 않으며 기하학적 품질이 저하되는 부작용이 생긴다.

본 논문에서는 Gaussian splatting을 이용하여 정반사를 효과적으로 렌더링하기 위하여 deferred shading 방법을 도입하였다. 각 Gaussian에 반사 강도를 나타내는 스칼라 파라미터를 추가하고 각 Gaussian의 가장 짧은 축을 normal 벡터로 간주한다. 렌더링은 두 단계로 수행된다.

  1. Gaussian splatting pass는 base color, normal, 반사 강도에 대한 맵을 생성한다.
  2. Pixel shading pass는 반사 방향이 포함된 environment map을 쿼리하여 정반사 색상을 획득하고 반사 강도를 가중치로 base color와 reflection color를 더해 최종 색상을 렌더링한다.

Environment map과 Gaussian별 반사 강도는 기존 Gaussian 파라미터들과 함께 학습된다.

Environment map은 반사 방향을 계산하는 데 필요한 normal 벡터에 높은 정밀도를 요구하는 동시에 이를 개선하는 데 유용한 기울기를 거의 제공하지 않는다. 또한 반투명한 Gaussian들은 표면이 느슨하게 정의되어 있다. 본 논문은 이를 위해 normal propagation이라는 학습 알고리즘을 제시하였다. 상대적으로 큰 반사 강도 값을 갖는 Gaussian이 거의 정확한 normal 벡터를 갖는다는 관찰을 기반으로 이러한 반사하는 Gaussian들을 확장하여 normal 벡터를 인근 Gaussian에 전파한다. 이러한 방식으로 거의 정확한 normal을 갖는 하나의 Gaussian이 정확한 normal을 갖지 못한 다른 Gaussian과 겹치면 일부 공유 픽셀도 거의 정확한 normal을 가질 수 있으며, 이는 의미 있는 normal 기울기을 얻고 이후 Gaussian의 normal을 최적화하는 데 도움이 된다.

Deferred shading 모델은 학습의 효율성에 매우 중요하다. Gaussian splatting pass는 base color, normal과 같은 Gaussian 속성을 텍스처에 혼합한다. 각 픽셀의 혼합된 입력 값은 반사를 평가하고 base color와 reflection color를 최종 색상으로 합성하는 데 사용되며, 이미지 색상 loss를 통해 동일한 픽셀의 입력 값에 기울기를 다시 공급한다. 이는 색상에서 혼합된 normal과 개별 Gaussian normal으로의 기울기 채널을 생성하여 동일한 픽셀에 겹치는 서로 다른 Gaussian normal 간의 정보 흐름을 촉진하여 normal propagation을 가능하게 한다. 반면 3DGS는 기울기가 색상에서 개별 Gaussian normal으로 직접 전파되고 서로 다른 Gaussian이 서로 영향을 미칠 수 없다.

본 논문의 방법은 여러 데이터셋에서 고품질 정반사 효과를 합성하는 SOTA 방법들보다 훨씬 뛰어난 성능을 보여주며, 3DGS와 거의 동일한 실시간 프레임 속도로 실행되는 동시에 합성 장면과 실제 장면 모두에 대해 peak PSNR의 일관된 개선을 보여준다. 또한 보다 정확하게 normal과 environment map을 추정한다.

Method

1. Rendering Model


Deferred rendering 모델은 두 개의 pass로 구성된다. 첫 번째 pass는 Gaussian splatting pass이다. 3DGS renderer의 원래 설정에 따라 Gaussian 파라미터 $\Theta_i$, Gaussian별 SH 색상 $c_i (\mathbf{v})$로 픽셀 색상 $C(\mathbf{v})$를 계산한다. 여기서 $v$는 뷰 방향이다.

\[\begin{equation} C(\mathbf{v}) = \sum_i c_i (\mathbf{v}) G (\Theta_i, \mathbf{v}) \end{equation}\]

$G$는 각 Gaussian에 대한 가중치이며 많은 계산이 요구된다. 따라서 $G$를 normal 벡터로 해석되는 각 Gaussian의 가장 짧은 축인 $n_i$와 ​​Gaussian별 반사 강도인 $r_i$에 재사용하여 normal map $N(\mathbf{v})$와 반사 강도 map $R(\mathbf{v})$를 만든다. $n_i$는 항상 카메라를 향하도록 필요에 따라 뒤집어진다.

\[\begin{equation} N(\mathbf{v}) = \sum_i n_i G(\Theta_i, \mathbf{v}), \quad R(\mathbf{v}) = \sum_i r_i G(\Theta_i, \mathbf{v}) \end{equation}\]

두 번째 pass인 deferred reflection pass는 최종 픽셀 색상 $C^\prime (\mathbf{v})$를 구성한다.

\[\begin{equation} C^\prime (\mathbf{v}) = (1 - R(\mathbf{v})) C(\mathbf{v}) + R(\mathbf{v}) E ( \frac{2 (\mathbf{v} \cdot N (\mathbf{v})) N (\mathbf{v})}{\| N (\mathbf{v}) \|} - \mathbf{v}) \end{equation}\]

여기서 $E$는 bilinear filter를 사용하여 반사 방향에 대해 쿼리된 학습된 environment map이다.

스플래팅된 이미지는 shading pass에서 결합되어 최종 이미지를 구성한다. 이 프로세스는 전적으로 화면 공간에서 작동한다. Environment map은 Gaussian에서 분리된 최종 패스에서 완전히 학습된다.

2. Loss Function and Normal Gradient

학습 시 3DGS에서와 동일한 loss, 즉 L1 loss와 D-SSIM loss를 사용한다. ($\lambda = 0.2$)

\[\begin{equation} \mathcal{L} = (1 - \lambda) \mathcal{L}_1 + \lambda \mathcal{L}_\textrm{D-SSIM} \end{equation}\]

Loss function은 순전히 색상 기반이므로 normal 벡터의 기울기는 궁극적으로 environment map에서 나온다.

\[\begin{equation} \frac{\partial \mathcal{L}}{\partial N} = \frac{\partial \mathcal{L}}{\partial E} \frac{\partial E}{\partial N} \end{equation}\]

$E$가 텍스처 쿼리인 경우 $\frac{\partial E}{\partial N}$은 bilinear 텍스처 필터에서 나온다. 직관적으로 이는 normal 벡터 $N$을 업데이트하여 예상 픽셀 색상과 가장 잘 일치하는 environment map texel을 향해 반사 방향을 회전시키는 gradient descent 프로세스로 해석될 수 있다. 그러나 bilinear 필터이므로 반사 방향의 타겟은 텍스처 필터에 관여하는 4개의 texel로 제한되어 이미 올바른 값에 가까운 normal 벡터로는 의미 있는 기울기를 얻을 수 없다.

본 논문의 shading model은 픽셀 레벨에서 environment map 조회를 수행하므로 각 Gaussian은 의미 있는 기울기를 받기 위해 거의 정확한 normal로 몇 개의 픽셀만 커버하면 된다. 이 속성을 활용하여 인접한 Gaussian 전체에 올바른 normal을 전파하고 결국 모든 반사 표면으로 확장한다.

3. Training

먼저 반사 강도 $r_i$를 0으로 초기화하고 Gaussian별 SH 색상 함수 $c_i (v)$를 order 0으로 제한하여 ($c_i (v) = c_{i,0}$) 뷰에 의존하는 색상 및 반사 최적화를 끄고 뷰에 독립적인 짧은 단계로 학습 프로세스를 부트스트랩한다. $r_i = 0$이면 관련 기울기의 크기가 0이므로 반사 관련 최적화가 비활성화된다. 이 단계는 수천 iteration 동안 지속되며 일반적으로 고급 GPU에서는 몇 분 정도 걸린다. 최적화 과정은 3DGS와 동일한다.

그런 다음 Gaussian별 반사 강도 $r_i$와 environment map의 최적화를 켠다. 일부 Gaussian은 최적화 중에 상대적으로 큰 반사 강도를 얻을 수 있다 ($r_i > 0.1$). 반사하는 Gaussian이 거의 정확한 normal 벡터를 가지고 있으므로, 반사하는 Gaussian의 normal 벡터를 근처의 Gaussian으로 전파한다. 거의 정확한 normal을 갖는 하나의 Gaussian이 다른 Gaussian과 겹치는 경우 일부 공유 픽셀도 거의 정확한 normal을 가질 수 있으며, 이는 의미 있는 normal 기울기를 얻고 이후 Gaussian의 normal을 최적화하는 데 도움이 된다.

이러한 전파를 촉진하기 위해 주기적으로 모든 Gaussian의 불투명도를 0.9 이상으로, 반사 강도를 0.001 이상으로 높인 다음 반사하는 Gaussian의 가장 긴 두 축을 1.5배로 확장하고 normal로 사용되는 가장 짧은 축은 그대로 유지한다. 이로 인해 거의 모든 반사하는 Gaussian이 이웃 Gaussian과 겹치게 되며, 높은 불투명도는 모든 가시적인 Gaussian이 표면 normal과 역전파에 크게 기여하도록 하고 역전파 중에 의미 있는 normal 기울기의 영향을 받도록 보장한다. 이 과정을 normal propagation이라고 부른다.


위 그림은 학습이 진행됨에 따라 올바른 normal이 어떻게 전파되는지에 대한 구체적인 예시이다. 초기 9000 step의 상수 색상 피팅에 의해 생성된 가장 짧은 축 방향에서 시작하며 일부 지점은 랜덤하게 올바른 반사 강도를 먼저 얻었다. 그런 다음 올바른 normal 벡터를 이웃 Gaussian으로 전파하고 잡음이 있는 곳으로 점차 확산되어 최종적으로 부드러운 구를 생성한다. 반사 강도 맵은 초기에 증가하지만 normal 벡터가 더 정확해짐에 따라 올바른 값에 접근하기 시작한다.

Diffuse color $c_{i,0}$은 이미 뷰에 독립적인 부트스트랩에 의해 최적화되었으며 반사 학습 중에 overfitting되는 경향이 있어 반사 표면을 발견하는 것을 방해할 수 있다. 이 효과에 대응하기 위해 normal propagation이 적용될 때마다 ±10% noise를 추가하여 $r_i \le 0.1$인 아직 반사하지 않는 Gaussian의 색상을 의도적으로 방해한다. 이러한 프로세스를 color sabotage라고 부른다.

3DGS는 주기적으로 모든 Gaussian의 불투명도를 0.01 이하로 클램핑하므로 주기적으로 불투명도를 0.9 이상으로 증가시키는 본 논문의 방법과 충돌을 일으킨다. 또한 color sabotage는 색상 항이 수렴되는 것을 방지한다. 해결 방법으로 불투명도 증가 기간과 불투명도 클램핑 기간을 섞어서 동시에 적용되지 않도록 한다. 또한 $r_i > 0.1$인 Gaussian 수가 고정 iteration 동안 증가를 멈추면 normal propagation과 color sabotage를 종료한다. 이는 더 이상 반사 표면을 찾을 수 없음을 의미한다. 반사 학습을 방해하지 않도록 이 반사 종료 기준이 충족된 후에만 고차 SH 계수를 최적화하기 시작한다.

Results

  • 데이터셋: Shiny Blender, Glossy Synthetic
  • GPU: NVIDIA RTX 4090 1개
  • 구현 디테일
    • 실제 장면에서는 구형 도메인 $M$을 사용하여 물체를 덮는다.
    • 학습 중 배경의 간섭을 줄이기 위해 deferred reflection 단계를 $M$ 내부의 Gaussian으로 제한한다.
    • 제한된 양의 뷰에서만 캡처된 배경은 반사하는 물체와 유사한 동작을 나타내며 이는 environment map 피팅을 방해한다.

1. Comparisons with baselines

이미지 품질

다음은 여러 장면에서 이미지 품질을 비교한 표이다.


다음은 합성 장면에서의 결과를 비교한 것이다.



다음은 실제 장면에서의 결과를 비교한 것이다.

Normal & environment map 재구성

다음은 normal과 environment map 재구성 품질을 각각 MAE◦와 LPIPS로 비교한 표이다.


다음은 추정된 normal을 비교한 것이다.


다음은 추정된 environment map을 비교한 것이다.

효율성

다음은 학습 시간과 렌더링 FPS를 비교한 표이다.


다음은 Shiny Blender 데이터셋에서 Gaussian의 개수를 비교한 표이다.

2. Ablation Study

다음은 forward rendering과 deferred rendering 결과를 비교한 것이다.


다음은 normal propagation과 color sabotage에 대한 ablation 결과이다.


다음은 base color, reflection color, 반사 강도로 분해한 결과이다.


다음은 비반사성 장면에 대한 regression test 결과이다.

Limitations

  1. 전통적인 deferred shading과 마찬가지로 픽셀당 최대 하나의 반사 재료 레이어를 처리할 수 있다. 예를 들어 위 그림의 경우 전면 창은 순수 반사 표면으로 수렴되고 측면 창은 순수 투명 표면으로 수렴된다.
  2. Normal propagation은 오목한 장면에서 덜 효율적으로 작동한다. 학습은 수렴하지만 훨씬 더 많은 시간이 걸린다.