MVDream: Multi-View Diffusion for 3D Generation
Paper: https://arxiv.org/abs/2308.16512 Project Page: https://dreamfusion3d.github.io/ Github: https://github.com/bytedance/MVDream
MVDream: Multi-View Diffusion for 3D Generation0. Abstract1. Introduction2. Related Work and Background2.1. 3D Generative Models2.2. Diffusion Models for Object Novel View Synthesis2.3. Lifting 2D Diffusion for 3D Generation3. Methodology3.1. Multi-View Diffusion Model3.2. Text-to-3D Generation3.3. Multi-View DreamBooth for 3D Generation4. Experiments4.1. Multi-View Image Generation4.2. 3D Generation with Multi-View Score Distillation4.3. Multi-View DreamBooth5. Discussion and Conclusion개인적인 생각
0. Abstract
본 논문에서는 text prompt를 통해 consistent한 multi-view image를 생성할 수 있는 Multi-View Diffusion 모델 MVDream을 소개한다. 2D와 3D 데이터를 통해 학습함으로서, 2D diffusion모델의 일반화 능력(Generalizability, 높은 생성 자유도를 뜻한다)과 3D rendering의 consistency를 모두 달성할 수 있었고, MV(Multi-View) diffusion을 3D 생성의 prior로 사용할 경우 Representation을 높일 수 있음 역시 입증했다. SDS(Score Distillation Sampling)를 통해 적용되며, 2D-lifting Method의(2D의 차원을 높여 3D로 만드는 것, 이전 리뷰 포스트 DreamFusion 참고) Consistency와 Stability를 높일 수 있다.
1. Introduction
3D Content Creation은 현대의 Game / Media 산업에서 매우 중요한 단계이나, 단 1개의 3D 에셋을 창작하기 위해 숙련된 디자이너가 굉장히 많은 시간을 할애해야 하는 노동 집약적인 Task이다. 그러므로 여러 툴에 숙련되지 않은 일반 유저들이 3D Content를 쉽게 창작할 수 있는 시스템은 매우 큰 가치를 지닌다.
존재하는 3D Object Generation 방법은 3가지 타입으로 나눌 수 있는데: (1) Template-based generation pipeline, (2) 3D Generative Models, (3) 2D-lifting Method 이다. 제한적인 3D Dataset과 3D Data의 복잡성으로 인해 (1),(2)번 방법론은 임의의 Object를 생성하는데에 어려움을 겪는다. 즉, 주로 단순한 topology와 texture를 생성할 수 밖에 없다. 그러나 실무에서 인기가 많은 3D 에셋들은 주로 복잡하고 예술적이고, 때로는 비현실적인 구조와 스타일을 갖는다.
최근, (3) 2D-lifting Method들은 Pretrained된 2D Gen 모델이 3D Gen에 활용될 수 있음을 보였다. 대표적으로 DreamFusion, Magic3D가 있는데, SDS Loss를 통해 3D Representation을 Optimization한다. 대규모의 2D image dataset으로 학습된 2D Gen 모델들은 text input을 통해 새롭거나 반사실적인 장면을 생성 가능한데, 이러한 특성이 2D Gen Model을 예술적인 assets을 창작하는데에 훌륭한 도구로 만들었다.
하지만 2D-lifting Method의 경우 Multi-View에 대한 포괄적인 Knowledge가 부족하다는 점이 단점이다. 이로 인해서 (1) Multi-face Janus Problem (Prompt가 표현하는 대상의 얼굴이 여러 뷰에서 반복되어 생성되는 문제), (2) Content Drift Problem (여러 뷰를 거치며 Content Drift가 일어나는 것) 등이 발생한다. 사람의 경우에는 특정 Object를 여러 각도에서 보면서 평가할 수 있지만, 2D diffusion model은 불가능하기에 inconsistency가 발생한다.
2D-lifting Method의 단점에도 불구하고, 저자들은 대규모의 2D Dataset이 3D 생성을 Generalize할 수 있을 것으로 본다. 따라서 3D representation에 agnositic한 3D Prior로서의 Multi-View Diffusion Model을 제시한다. 제안된 모델은 여러 View에서 Consistent한 이미지들을 생성할 수도 있다. 일반화 능력(Generalizability)을 상속받기(inherit)위해 Pretrained된 2D diffusion model을 transfer learning한다. 이후, 3D 에셋에서 얻은 multi-view image와 2D image-text pair로 학습을 시켰고, 좋은 consistency와 일반화 능력을 보임을 확인했다. Multi-View Diffusion을 SDS에 적용할 경우 2D Diffusion보다 더 안정적으로 생성이 가능하다. 또한 여전히 2D에서 그러하듯 unseen, counterfactual 3D Content를 생성 가능하다. Dreambooth에 영감을 받아, multi-view diffusion을 2D images collection에 fine-tunning시켰을 때 여전히 robust함을 확인했다. 저자들은 이 모델을 MVDream이라 이름지었으며, multi-view issue없이도 3D Nerf Model을 생성할 수 있다. 다양성(Diversity)의 경우에도 기존 SOTA 모델들과 비슷하거나 능가한다.
2. Related Work and Background
2.1. 3D Generative Models
2.2. Diffusion Models for Object Novel View Synthesis
2.3. Lifting 2D Diffusion for 3D Generation
Given the bounded generalizability of 3D generative models, another thread of studies have attempted to apply 2D diffusion priors to 3D generation by coupling it with a 3D representation, such as a NeRF
3. Methodology
3.1. Multi-View Diffusion Model
2D-lifting Method의 multi-view consistency 문제를 완화시키기 위한 전형적인 방법은 viewpoint에 대한 인지를 높이는 것이다. 예를 들어 DreamFusion에서는 별도 text-condition을 주었다(back view of image 등과 같은 Text Prompt). 보다 정교한 방법은 zero123에서 처럼 camara pameter(사진을 찍은 카메라 시점에 해당한다)를 novel view synthesis에 활용하는 것인데, 저자들은 완벽한 camera-conditioned 모델을 만들게 될지라도 문제가 해결되지 않고, 여러 뷰에서 3D 모델이 계속해서 다르게 보일 것이라는 가설을 세웠다. 예를 들어, 정면을 보고 있는 독수리를 Camera Condition에 완벽하게 생성한다고 할지라도 후면 View에서는 우측을 보고 있을 수도 있는 노릇이니 말이다.
저자들의 다음 영감은 Video Diffusion Model로부터 왔다. 사람은 3D를 인식할 수 있는 센서를 갖고 있지 않기 때문에 일반적으로 3D Object를 인식하기 위해 모든 View를 관찰하는데, 이는 360도 video(turn-around video)와 유사할 것이라 판단했다. 최신 Video 생성 연구들은 2D Diffusion 모델을 통해 temporally consistent(시간 축으로 consistent)한 Video를 만들어낼 수 있는 가능성을 보였다. 하지만 그러한 video 모델을 3d gen task에 도입하는 것은 geometric consistency(공간적 일관성) 관점에서도 문제를 해결할 것임이 자명하지 않았다. (저자들은 공간적 일관성(geometric consistency; z-축에의 일관성) 문제가 시간적 일관성(temporal consistency; t-축에의 일관성) 문제보다 어렵기 때문이라고 한다.) 게다가, video diffusion model은 일반적으로 동적인 장면에서 학습되어, 정적인 장면을 생성하기 어려웠다.
위와 같은 발견들을 통해, 저자들은 직접 multi-view diffusion model을 학습하는 것이 필요하다는 결론에 도달했다. Camera parameter를 input으로 하는 Image 생성 모델 학습에 직접 구축한 3D rendered dataset을 활용할 수 있기 때문이다.
2D Diffusion Model의 높은 자유도를 상속받으려면, fine-tuning을 위해 그 구조를 유지해야 한다. 그러나, 그러한 모델들은 1개의 이미지만 생성할 수 있고, Camera Position 조건을 input으로 받지 않기 때문에, 다음의 3가지 문제를 해결해야 한다.
(1) 어떻게 같은 text prompt로부터 Consistent한 여러 각도의 이미지들을 생성해 낼지? (3.1.1)
(2) 어떻게 Camera Pose Control을 추가할지? (3.1.2)
(3) 어떻게 퀄리티와 자유도를 유지시킬지? (3.1.3)
3.1.1. Multi-View Consistent Image Generation
(a) Video Diffuison과 비슷하게, 2D Model의 다른 Network는 유지하면서도 cross-view dependency를 위해 attention layer를 적용하고자 했다. 그러나 단순한 temporal attention은 multi-view consistency를 학습하는데에 실패했고, 3D rendered dataset에 대해 모델을 fine-tune하더라도 content-drift 문제가 발생함을 확인했다.
(b) 이외에도 원래의 2D를 변경하는 대신, 새로운 3D self-attention layer를 실험해보기도 했지만, 해당 방식은 generation quality가 낮았으며 multi-view image도 잘 생성하지 못했다. 새로운 attention 모듈은 기존 구조를 변경하여 사용하는 것 대비 convergence가 느렸고, 모델을 과대하게 fine-tune하고자 하지 않았던 저자들은 이 방법을 더이상 사용하지 않기로 결정했다.
(c) 최종적으로는 원래의 2D Self-attention layer를 모든 다른 뷰에 대해 연결하는 방식으로 변경하여 3D layer로 활용했다. 즉 저자들은 기존 2D를 재사용한 3D attention을 사용했다.
3.1.2. Camera Embeddings
Video Diffuison Model들과 비슷하게, position encoding은 본 모델에서 다른 View들을 구분하는데에 중요한 역할을 한다. 저자들은 relative position encoding, rotary embedding, absolute camera parameter를 실험 후 비교했으며, 2-layer MLP를 가진 embedding camera parameter가 각 View간의 차이를 가장 잘 구분하면서도 image 퀄리티가 높았다. 구체적으로 camera parameter를 모델에 주기 위해 저자들은 2가지 방식을 테스팅 했는데, (1) time embedding에 residual로 camera embedding을 추가하는 방법, (2) cross attention을 위해 camera embedding을 text embedding에 append하는 방법이다. 전자가 더 robust함을 발견했고, 그 이유는 camera embedding이 text에 대해 덜 entangle되었기 때문으로 본다.
3.1.3. Training Loss Function
저자들은 data curation과 training strategy의 디테일이 중요하다고 말하며, 이는 Appendix를 참고. SD2.1을 fine-tune 하되, image size를 256x256으로 줄였다. 저자들은 더 큰 규모의 text-to-image dataset을 3D rendering dataset과 함께 학습하는 것이 generalizability를 높일 수 있다고 말한다. 아래는 Loss 식. (세부사항은 논문 참고)
3.2. Text-to-3D Generation
Multi-View Diffusion model을 3D Generation에 활용하는 방법은 다음의 두 가지이다.
- 생성된 Multi-View Images를 few-shot 3D reconstruction method의 입력으로 주는 것 (InstantNGP같은 3D Recon 방법론으로 3D만들기)
- Multi-View diffusion 모델을 SDS를 위한 prior로 사용하는 것 (SDS 기반의 2D-lifting하기)
3D reconstuction 방법이 더 직관적이긴 하지만 더 많은 View + Consistency를 요하기에, 본 논문에서는 후자의 방법론에 집중했다. SDS에 Multi-View Diffusion을 활용하기 위해서는 (1) Camera Sampling 전략을 변경해야하고, (2) Camera Parameter를 입력으로 줄 수 있어야 한다. Dreamfusion 처럼 direction-anottated prompt를 사용하기 보다, 원래의 text를 활용했다.
위의 Multi-View SDS가 Consistent한 3D Model을 생성할 수 있었음에도 불구하고, denoising diffusion process에서 sample된 image들의 퀄리티가 낮아 texture등에 영향을 미쳤다. 때문에, (1) SDS 최적화 과정에서 Max/Min time step을 annealing했고, (2) 몇가지 고정 negative prompt를 사용했으며, (3) 높은 CFG로 인한 color saturation을 경감시키기 위해 dynamic thresholding과 같은 clamping technique이나, CFG rescale을 적용했다. 위의 3가지 트릭을 에만 적용한 후, SDS 식을 그대로 사용했다.
3.3. Multi-View DreamBooth for 3D Generation
(논문 참고)
4. Experiments
4.1. Multi-View Image Generation
4.2. 3D Generation with Multi-View Score Distillation
4.3. Multi-View DreamBooth
(논문 참고)
5. Discussion and Conclusion
Conclusion
본 논문에서는 처음으로 multi-view diffusion model을 발표했다. 기존 text-to-image diffuison model을 3D render data와 대규모 text-to-image data로 부터 학습함으로서, 본 모델은 generalizability를 유지하면서도 multi-view consistency를 달성할 수 있었다. 또한 3D 생성을 위한 SDS의 좋은 prior이며, 타 모델 대비 좋은 성능을 보인다.
Limitation
256x256으로 학습되어, base model보다 generalizability가 제한된다. SDXL을 베이스로 삼아서 학습해볼 필요가 있다. 또한 lighting, texture 등이 rendered dataset의 영향을 받으므로, 좋은 퀄리티의 rendering dataset을 구축할 필요가 있다.
개인적인 생각
- DreamFusion 계열의 논문들 다음으로 크게 도약을 이루어 낸 Paper인 듯 하다!
- Texture 생성을 위해 Multi-VIew Consistency를 해결할 수 있는 방법을 열심히 찾고 있었는데, Multi-View Diffusion으로 접근할 수 있게 되었다.
- SDXL based MV Diffusion + ControlNet 구현이 필요하겠다!