Paper/Generation

GaussianDreamer: Fast Generation from Text to 3D Gaussian Splatting with Point Cloud Priors

침닦는수건 2023. 11. 22. 20:00
반응형

내 맘대로 Introduction

 

또 발견했다. 계란 후라이 논문. 3D GS가 NeRF를 일각에서 너무 효과적으로 대체하다보니, NeRF를 붙여서 열심히 text-to-3D를 구현하던 사람들이 다 3D GS로 넘어오는 것 같다. 

 

이 논문도 text-to-3D를 타겟으로 하는 논문인데, novelty가 있다기 보다 어떻게 2D, 3D diffusion model과 3D GS를 엮었는지 보여주는 테크니컬 리포트에 가깝다. 물리적으로 찾아낸 SfM 결과에서 시작한 것이 아니라 generation 모델로 얻어낸 결과에서 시작하는 컨셉을 보여주는 논문이다. 큰 틀에서는 이전에 봤던 DreamGaussian 과 동일하다고 볼 수 있다. 

 

그래도 나름 차이점이라고 할 수 있는 핵심 아이디어는 DreamGaussian과 다르게 2D diffusion prior만 쓰는 것이 아니라 2D, 3D diffusion prior 둘 다 써서 3D GS을 수렴시킨다는 컨셉이다. 

 

메모하며 읽기


2D, 3D diffusion model을 둘 다 붙이려는 이유를 다음과 같이 설명한다. 

1) 3d diffusion은 3d consistent 생성 성능은 좋지만 데이터 부족으로 인해 생성 범위가 좁음

2) 2d diffusion은 생성 범위는 넓지만 camera view를 고려하지 않으므로 3d consistency가 부족함

따라서 상호보완적이므로 둘 다 prior로 쓰는 것이 좋다는 주장이다.




조립형 논문이라, recap 내용이 길다.
과정은 다음과 같다. 

1) 3d diffusion model mesh 얻기
2) mesh to point cloud
3) point cloud pertubation
4) 3d gaussian initialize
5) update 3d gs using 2d diffusion w/ SDS loss

각각은 novelty가 없다. 파이프라인으로 이어붙인 것이 의미.


1) 2) 는 정말 알고리즘 돌려보았다 수준이다. 3d diffusion model이 뱉어주는 결과가 SDF implicit function이기 때문에 marching cube까지 돌려야 최종 결과물을 얻을 수 있으므로 mesh로 일단 만들고 mesh vertex만 뽑아서 point cloud로 썼다고 한다.


3d diffusion model이 아직까지는 데이터 부족의 문제로 넓은 생성 범위를 갖지 못하므로 point cloud 개수가 부족하거나, 색상이 단조로운 단점이 있다.

너무 단조로운 값으로 초기화를 하는게 맘에 걸렸는지 position과 color에 pertubation을 가해주는 식으로 약간 augmentation을 해주었다고 한다.

(실제로 단조로운 초기화값으로도 문제가 없었을텐데... 초기화가 얼마나 영향을 주는지에 대한 ablation이 뒤에 사진 한 장있지만 도움이 되는지는 잘 모르겠다. ) 



이후 과정은 3D GS를 업데이트하는 과정인데, rendering 하고 2D diffusion model을 통과시켜 SDS loss로 업데이트하는 방식이다.

DreamGaussian, DreamFusion과 동일하다.  novelty없음.
성능과 속도를 둘 다 향상시켰다는 결과인데, 비교군이 NeRF 기반 3D diffusion이다 보니, 이게 3D GS 때문에 좋아진 것이라는 생각이 우선적으로 든다.

3D GS가 explicit하게 공간에 존재하니까 조금 더 3d consistent하기 쉽고 속도도 빠른게 주 원인인 것 같다.

아무튼 파이프라인을 보여준 테크니컬 리포트같은 논문.
반응형