일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BOJ
- image2image translation
- 프로그래머스
- transformer
- Vit
- 논문리뷰
- 3d generation
- video editing
- ddpm inversion
- research intern
- plug-and-play
- video generation
- visiontransformer
- diffusion
- ddim inversion
- 3d editing
- 코테
- 코딩테스트
- ami lab
- style align
- image generation
- prompt2prompt
- diffusion models
- magdiff
- 네이버 부스트캠프 ai tech 6기
- Programmers
- Python
- image editing
- VirtualTryON
- DP
- Today
- Total
평범한 필기장
[평범한 학부생이 하는 논문 리뷰] DreamGaussian : Generative Gaussian Splatting for Efficient 3D Content Creation (ICLR 2024 oral) 본문
[평범한 학부생이 하는 논문 리뷰] DreamGaussian : Generative Gaussian Splatting for Efficient 3D Content Creation (ICLR 2024 oral)
junseok-rh 2024. 7. 2. 11:52https://arxiv.org/abs/2309.16653
1. Introduction
최근 3D 생성은 크게 두가지 카테고리로 나눠진다.
Inference-only 3D native methods
몇초안에 3D-consistent assets을 생성할 수 있는 잠재력을 보이지만 거대한 3D 데이터셋에 대한 광범위한 학습을 필요로 한다. 이러한 데이터를 만드는게 엄청 어렵다.
Optimization-based 2D lifting methods
DreamFusion이 SDS를 제안했는데 이게 최근 2D lifting 방식의 발전을 이끌었다고 한다. 이 SDS suprevision에 의한 inconsistency와 ambiguity를 해결하기 위해, NeRF를 사용한다. 하지만 NeRF를 사용함으로써 optimization에 대한 시간이 엄청났다.
본 논문에서는 optimization-based pipeline에서 디자인 선택을 정제함으로써 3D content 생성 효율성을 향상시킨 DreamGaussian을 도입한다. 본 논문에서 core design은 통합된 mesh extraction과 texture refinement를 가진 3D Gaussian Splatting을 생성 셋팅에 적용한 것이다.
SDS supervision과 spatial densification에서의 모호성 때문에, 3D Gaussian으로 직접 생성된 결과는 blurry한 경향을 띈다. 이러한 이슈를 해결하기 위해, 본 논문은 texture가 명시적으로 정제되어야할 필요가 있다는 것을 확인했고, 이는 생성된 3D Gaussian들로부터 섬세한 textured polygonal mesh 추출을 필요로 한다. 본 논문에서는 local density querying을 통해 3D Gaussian들로부터 mesh를 추출하는 효율적인 알고리즘을 디자인한다. 그 후 generative UV-space refinement stage가 texture 디테일 강화를 위해 제안된다. 첫번째 스테이지에서 latent space SDS loss의 직접적인 적용은 UV map에서 over-saturated blocky artifacts를 야기한다고 관찰됐기에, 본 논문에서는 SDEdit에서 영감을 받아 image space supervision을 수행한다.
Contribution
- 3D Gaussian Splatting을 3D 생성에 적용해 optimization-based 2D lifting 방식의 생성 시간을 대폭 줄였다.
- 3D Gaussian으로부터 효율적인 mesh extraction 알고리즘과 생성 퀄리티를 강화하는 UV-space texture refinement stage를 디자인했다.
- Image-to-3D와 text-to-3D 실험을 통해 method가 optimization time과 generation fidelity에 대해 효과적으로 밸런스를 맞추고 있는 것을 보인다.
2. Related Work
2.1 3D Representation
NeRF 류, 3D Gaussian Splatting
2.2 Text-to-3D Generation
DreanFusion,....
2.3 Image-to-3D Generation
Zero-1-to-3, One-2-3-45
처음 듣는 거랑 모르는 게 산더미...
3. Method
3.1 Generative Gaussian Splatting
원래 3D Gaussian Splatting은 3D reconstruction을 위한 모델이다. 본 논문은 3D Generation task에서 이 모델을 이용하려고 한다. 3D Gaussian의 parameter는 $\{ \mathbf{x}, \mathbf{s}, \mathbf{q}, \alpha, \mathbf{c} \}$로 $\mathbf{x}$는 중심 좌표, $\mathbf{s}$는 scaling factor, $\mathbf{q}$는 rotation quaternion, $\alpha$는 opacity, $\mathbb{c}$는 color(SH를 사용하지 않음)를 나타낸다. Optimizable 파라미터는 $\Theta$로 나타내고 $i$번째 가우시안의 파라미터는 $\Theta = \{ \mathbf{x}_i, \mathbf{s}_i, \mathbf{q}_i, \alpha_i, \mathbf{c}_i \}$이다. 3D Gaussian들을 2D Gaussian들로 project시키고 이를 통해 volumetric rendering을 수행해 최종 color과 alpha의 추정값을 구한다. 기존 3D Gaussian Splatting 방식을 이용해 $\Theta$를 최적화한다.
본 논문에서 구 내에서 random 위치에서 샘플링된 unit scaling과 no ratation을 가진 3D Gaussian으로 초기화한다. 3D Gaussian들은 optimization을 통해 점진적으로 desification된다. 기존 3D gaussian splatting과 다른 점은 더 적은 Gaussian들로 시작해서 더 자주 densification을 진행한다. 각 스텝마다 random camera pose $p$를 샘플링해서 RGB image $I^p_{RGB}$와 transparency $I^p_{A}$를 렌더링한다. 학습동안 linear하게 $t$를 줄인다고 한다. 그리고 나서 다른 2D diffusion prior $\phi$가 사용된다.
Image-to-3D
Image-to-3D task에서 이미지 $\tilde{I}^r_{RGB}$와 foreground mask $\tilde{I}^r_A$가 input으로 주어지고 Zero-1-to-3 XL이 2D diffusion prior로 적용된다. SDS Loss는 다음과 같이 계산된다.
여기서 $\Delta p$는 reference camer $r$로부터 상대적인 camera pose 변화량을 의미한다. 또한 reference view image $I^p_{RGB}$와 transparency $I^r_A$를 input에 align하도록 다음과 같이 최적화한다.
여기서 $\lambda_{RGB}$와 $\lambda_A$는 학습동안 linear하게 상승시킨다.
Text-to-3D
Text-to-3D에서는 text만 input으로 사용되고 StableDiffusion이 사용된다. SDS Loss는 다음과 같이 계산된다.
여기서 $e$는 input text description의 CLIP embedding이다.
Discussion
더 긴 SDS training interation에도 생성된 Gaussian들은 blurry해보이고 디테일이 부족하다는 것을 발견했다. 각 optimization step이 inconsistent 3D guidance를 제공하기 때문에, under-reconstruction 지역을 정확하게 densification하거나 over-reconstruction을 pruning하는 것에 어려움을 겪는다. 그래서 이러한 관측을 통해 mesh extraction과 texture refinement 디자인이 필요하다는 것을 보여준다.
3.2 Efficient Mesh Extraction
본 논문에서 block-wise local density query와 back-projected color를 기초로한 textured mesh를 추출하는 알고리즘을 제안한다.
Local Density Query
일단 $(-1,1)^3$의 3D 공간을 $16^3$의 overlapping block들로 나눈다. 그러고 나서 각 block에 중심이 속하지 않는 Gaussian들은 culling한다. 그렇게 함으로써 특정 block에 대해 계산할 때 그 block에 속한 Gaussian에 대해서만 계산하게 해서 효율적으로 만든다. Grid position $\mathbb{x}$에서 각 query에 대해, 남은 3D Gaussian의 opacity를 weighted sum한다.
여기서 $\Sigma_i$는 scailing $\mathbb{s}_i$와 rotation $\mathbb{q}_i$으로부터 만들어진 covariance matrix이다. Marching Cubes를 통해 mesh surface를 추출하기 위해 경험적인 threshold가 사용된다. 추출한 mesh를 더 smooth하고 더 compact하게 만들기 위해 decimation and remeshing이 사용된다.
Color Back-Projection
위 과정을 통해 mesh geometry를 얻었기 때문에, rendered RGB image를 mesh surface로 back-project할 수 있고 texture로 bake할 수 있다. 처음에는 3D mesh를 2D UV coordinate들을 unwrap하고 빈 texture image로 초기화한다. 대응되는 RGB image를 렌더링하기 위해 8개의 azimuth($\phi$)와 3개의 elevation($\theta$)와 위 아래 view를 uniform하게 선택한다. RGB image들로부터 각 픽셀은 UV coordinate에 기초한 texture image에 back-project될 수 있다. 여기서 mesh boundary에서 unstable projection을 피하기 위해서 카메라의 $z$축과 표면의 법선 벡터의 각이 작은 픽셀들은 배제한다고 한다. 이렇게 back-projected texture image는 다음 스테이지에서 initialization으로 주어진다.
3.3 UV-space Texture Refinement
이 단계에서는 앞선 coarse texture를 refine한다. 아래의 그림처럼 SDS Loss를 바로 사용하면 artifacts가 발생한다.
이는 differentiable rasterization에서 사용된 mipmap texture sampling technique때문이다. SDS와 같은 모호한 guidance와 함께, 각 mipmap level에 전파되는 gradient는 over-saturated color block들을 야기한다.
초기화된 texture를 이미 가지고 있기 때문에, 임의의 camera view $p$로부터 blurry image $I^p_{coarse}$를 렌더링할 수 있다. 그런 다음 그 이미지를 random noise로 perturb하고 refined image를 얻는 2D diffusion prior를 사용해서 multi-step denoising process $f_{\phi}( \cdot)$을 적용한다.
여기서 $\epsilon(t_{start})$는 $t_{start}$에서 random noise이고, $c$는 image-to-3D에서는 $\Delta p$이고 text-to-3D에서는 $e$이다. 시작 timestep $t_{start}$는 noise strength를 제한하기 위해 조심스럽게 선택된다. 그렇게 함으로써 original content를 파괴하지 않으면서 detail들을 강화할 수 있다. Pixel-wise MSE Loss를 사용해서 texture를 최적화한다.
Image-to-3D task에서는 수식 2에서 RGBA loss를 적용한다.
4. Experiments
4.1 Implementation Details
4.2 Qualitative Camparisons
Optimization-based methods와 inference-only methods와 비교했다. 본 논문의 method가 생성 퀄리티와 속도 사이의 더 좋은 밸런스를 지닌다.
4.3 Quantitative Comparisons
CLIP similarity와 generation 속도를 정량적으로 비교하는 실험을 진행했다.
User study를 통해 reference view consistency와 생성 퀄리티를 비교하는 실험을 진행했다.
4.4 Ablations
5. Limitations and Conclusion
이전의 연구들과 공통의 한계점을 지닌다. (Multi-face Janus problem, over-saturated texture, baked lignting) 또한 back-view texture가 blurry한데 이는 stage 2 학습을 더 길게 하면 완화될 수 있다고 한다.
More Results