카테고리 없음

[논문 리뷰] GaussianCube: A Structured and Explicit Radiance Representation for 3D Generative Modeling

Justin4AI 2024. 10. 30. 13:36

[논문 리뷰] GaussianCube: A Structured and Explicit Radiance Representation for 3D Generative Modeling

✨GaussianCube : 3DGS의 3D representation을 diffusion으로 생성✨

 

 

Zhang, B., Cheng, Y., Yang, J., Wang, C., Zhao, F., Tang, Y., ... & Guo, B. (2024). GaussianCube: Structuring Gaussian Splatting using Optimal Transport for 3D Generative Modeling. arXiv preprint arXiv:2403.19655.

 

 

Abstract

GaussianCube는 1) fully explicit하면서, 2) voxel grid에 spatially structured된 radiance representation을 제시한다. NeRF와 같은 implicit feature decoder의 경우 representation의 모델링 성능을 크게 저해하며, 3DGS와 같은 공간적으로 구조화되어있지 않은 경우 3D diffusion과 통합이 어려워진다. 정해진 수의 free Gaussians를 새로운 densification-contrained Gaussian fitting 알고리즘을 통해 피팅시킨 후, Optimal Transport를 통해 미리 정해진 voxel grid에 재배열시킨다. 이렇게 하면 구조화가 되었으므로, 3D U-Net을 어렵지 않게 통합하여 3D representation을 생성할 수 있다.

1. Introduction

Hybrid NeRF의 변형을 활용한 방법론들은 하나의 implicit feature decoder가 모든 객체에 대해 공유되기 때문에, 저하된 representation power를 보여준다. 게다가, volumetric rendering으로 인하여 높은 계산 복잡도를 가진다.

최근 등장한 3D Gaussian Splatting는 shared implicit decoder를 제거하고 완전히 explicit한 특성을 지니지만, 공간적으로 unstructured되어있기 때문에 주류의 generative modeling frameworks와 통합이 어렵다.

하지만, GaussianCube는 정해진 수의 free Gaussians를 피팅시키고, 이를 structured voxel grid에 정리해넣는다. 여기서 단순히 densification/pruning 과정을 없애고 정해진 수의 Gaussians만을 피팅하게 되면, object surface에 가까이 있는 Gaussians를 다루기 어려워지므로 성능 저하가 발생한다. 따라서, 3DGS와 똑같이 densification을 진행하지만 대신 최대 $N^{3}$개를 넘지 않도록 한다. 이를 N x N x N의 voxel grid안에 넣을 때 Optimal Transport를 사용한다. 이렇게 되면, 각 voxel은 Gaussian의 features를 보관하게 된다.

또한 GaussianCube는 1) 복잡함 없이 3D U-Net을 denoising diffusion function으로서 통합, 2) 공간적 일관성은 3D U-Net이 인접한 Gaussians의 관계를 잘 학습하도록 하며 3) 더 적은 파라미터를 가질 수 있으므로 효율적인 3D diffusion modeling을 할 수 있게 된다. Conditional/Unconditional generation도 가능하며, single portrait로 3D avatar를 만드는 실험까지 진행되었다.

2. Related Work

Radiance filed representation.

NeRFs와 같은 모델이 대표적이었으며, ray marching으로 인해 보통 높은 계산 비용으로 문제가 대두되었다. 이로부터 implicity를 제거하고 explicit proxy representation을 사용하는 연구들도 진행되었다. 3DGS는 완전 explicit한 representation을 실시간 렌더링의 속도로 제공하지만, unstructured 되어있으며 scene 단위의 최적화가 필요하다. 하지만 GaussianCube는 structured representation이다.


3D generation.

Single-image collections로부터 view-dependent image를 생성하는 3D-aware GAN은 기하학적 변이를 가진 다양한 객체의 복잡함을 잡아낼 수 없었다. 2D diffusion priors를 3D representation으로 distill하는 방법론은 굉장히 costly하다. 이외에도 diffusion을 도입하는 시도가 있었지만, 공유된 implicit feature decoder를 사용함으로써 NeRF를 기반으로 했기에 여전히 efficient training이 어려웠다. 최신 3DGS 기반인 Gvgen은 Gaussians의 global correspondence를 다루지 않는 반면, GaussianCube는 Optimal Transport를 통해 피팅된 ‘개수만 제한되고 공간적으로는 자유로운 Gaussians’를 voxel grid에 넣는다.

3. Method

두 가지 주요한 stages로는 1) representation construction과 2) diffusion modeling이 있다.

3.1 Representation Construction

Explicit representation인 3DGS이지만, ADC로 인해 고정된 길이의 Gaussians를 도출하는 것에는 어려움을 겪으므로, 일반적인 GS fitting은 객체마다 서로 다른 수의 Gaussians를 가질 것이다. 심지어는 disorganized spatial structure를 가지는데, densification-contrained fitting strategy는 정해진 수의 free Gaussians를 얻고 정해진 voxel grid에 rearrange하므로 structured/explicit radiance representation을 얻을 수 있다.


3DGS에 따라, i번째 Guassian은 다음과 같이 표현된다:



따라서 $\theta_{i} = \{\mu_{i}, s_{i}, q_{i}, \alpha_{i}, c_{i}\} \in \mathbb{R}^{C}$ - 각각 Gaussian의 center, covariance matrix의 decomposition인 s와 q, opacity 그리고 color - 은 $C$-channel feature vector로서 하나의 Gaussian을 특징화한다.


Densification-contrained fitting

목표는 정해진 수의 Gaussians $g \in \mathbb{R}^{N_{max} \times C}$에 도달하기 위해, densification-constrained fitting을 거친다. 이는, 다음과 같은 절차를 밟는다:

  1. Densification Detection: $N_c$개의 Gaussians가 있는 상태에서, view-space position gradient magnitudes가 사전 정의된 임계값인 $\tau$보다 큰 후보들을 선택- $N_d$개 - 한다.
  2. Candidate Sampling: $N_{max}$개의 Gaussians를 넘기지 않기 위해서, candidates로부터 view-space positional gradients가 가장 큰 $min(N_{max} - N_c, N_d)$개의 Gaussians를 고른다.
  3. Densification: Cloning/Splitting의 대안을 새롭게 제시한다.
  4. Pruning Detection & Pruning: $\alpha$가 아주 작은 임계값인 $\epsilon$보다 작은 Gaussians를 탐지하여 제거한다.
    모든 절차가 끝나면, $N\_{max}$개의 Gaussians를 남기기 위해서 부족한 개수만큼 $\\alpha = 0$의 Gaussians를 채워넣는다.

Gaussian structuralization via Optimal Transport

$N_v = \sqrt[3]{N_{max}}$일 때, Gaussians를 이제 $v \in \mathbb{R}^{N_v \times N_v \times N_v \times C}$의 structured voxel grid에 매핑해야 한다. 그런데, 단순히 매핑하는 것이 아닌 공간적 관계를 최대한 유지하면서 저장해야 한다.


Nearest neighbor transport같은 경우, global arrangement를 신경쓰지 않기 때문에 이러한 관계를 잘 보존할 수 없으므로 저자는 Optimal Transport $(OT)$ 문제로 정의한다. Voxel grid의 중심을 $x_j$라고 할 때, $D_{ij} = \| \mu_i - x_j \|^2$는 각 Gaussian center와 voxel center의 moving distance이며, optimal transport plan은 다음과 같다:



저자는 Jonker-Volgenant algorithm을 통해 OT 문제를 해결한다. Gaussians는 solutions에 따라 정리되기 때문에 j-th voxel에는 대응하는 Gaussian인 $\theta_{k} = \{\mu_{k} - x_j, s_{k}, q_{k}, \alpha_{k}, c_{k}\} \in \mathbb{R}^{C}$를 저장한다. 이 때 k는 $T^{*}_{kj} = 1$와 같은 optimal transport plan에 따라 결정된 것이다. 각 voxel을 local coordinate와 비슷한 개념으로 생각하면, $\mu_k$가 아닌 moving distance - 혹은 center간의 offset - $\mu_{k} - x_j$로 바꾸어 저장하는 것이라고 이해할 수 있다. 이렇게 하면 diffusion의 solution space를 줄일 수 있기 때문이다.


* 초창기 object detection 모델들이 bounding box correction에 있어서, $t$와 $s$를 그대로 predict하지 않고 GT와의 offset을 모델링했던 것과 같은 이치이다.

따라서, voxel grid에 재정렬된 fitted Gaussians은 인접한 Gaussians의 spatial correspondence를 보존함으로써 generative modeling을 용이하게 한다.

3.2 3D Diffusion on GaussianCube

DDPM에 대한 설명이므로 생략한다.


Model Architecture.

2D U-Net에서, convolution, attention, upsampling 그리고 downsampling과 같은 2D operators를 단순히 3D로 바꾼 단순화된 구조를 사용해도, 공간적으로 구조화된 GaussianCube의 특성상 충분하다고 이야기한다.


Conditioning mechanism.

Class condition의 경우 AdaGN으로, image condition의 경우 ViT를 거친 feature tokens를 U-Net의 cross-attention을 통해 주입힌다. 이는 text로부터 3D objects를 생성할 때도 똑같이 활용된다.


Training objective.

우선 simple DDPM loss를 사용한다.

 

Conditional diffusion models를 학습할 때 사용되는 loss인데, 문제는 단순히 image generation이 아닌 3D representation을 생성하기 때문에 2D scenes로 각각이 project되었을 때도 좋은 품질인지 확인하기 위해, rasterized images I_{pred}와 GT인 I_{gt}간의 불일치를 penalize하는 다음의 loss를 추가로 활용한다:



여기서 $\Psi$는 VGG를 사용한 multi-resolution feature extractor이다.

Experiments

ShapeNet의 Car과 Chair에 대해서는 unconditional generation을, OmniObject3D 데이터에 대해서는 class-conditioned generation을 실험했다.