Cycle3D: High-quality and Consistent Image-to-3D Generation via Generation-Reconstruction Cycle
cycle3D 논문 리뷰
Aug 12, 2024
읽은 이유
아 힘들어
요약
직관적으로 이해가 되는 그렇게 어렵진 않은 방법이면서도 결과는 확실히 개선한 논문이다. 전체 접근 뿐 아니라 ablation에 비교한 2개의 방법과 time mapping을 위해 3d recon에 추가한 layer 등의 디테일한 구현법들이 실제 구현이나 다음 연구들에도 좋게 쓰일 것 같다.
Abstract
보통은 3D recon을 위해 diffusion model로 multi-view를 뽑고, feed-forward model을 통해서 이미지들을 3D content로 만든다.
하지만 여기서 첫번째 단계인 multi-view diffusion model은 퀄리티도 낮고 일관성도 유지를 못한다.
여기선 unified 3D generation 프레임워크를 제시하는데(Cycle3D) 2d 디퓨전 활용하고 FF 3D recon module도 같이 하나의 프로세스에 포함된다.
정확히는 2D diffusion model이 고퀄리티 texture를 생성하고, 3D recon model이 멀티뷰 일관성을 만든다.
Introduction
최근의 연구들은 multi-view diffusion model과 sparse-view reconstruction model을 조합해서 3D representation을 예측한다. 하지만 이렇게하면 퀄리티와 일관성이 낮다.
우리는 두가지 인사이트를 활용해서 연구를 진행했는데, 1) 수십억장의 웹 이미지로 사전학습된 2D diffusion model은 위의 문제를 해결하는데 도움이 되는 고퀄리티 이미지를 만들 수 있다. 2) reconstruction model은 여러 각도에 대해 일관성을 유지시키고자하고, 이걸 2D diffusion 생성에 활용할 수도 있다. (둘다 매우 맞는 말)
여기선 recon으로 3DGS를 사용.
generation-reconstruction cycle을 돌면서 점진적으로 개선한다.
multi-view diffusion model은 한계가 있는 3D data로 학습하기 때문에 텍스쳐 디테일도 잘 못잡아낼 뿐더러 오류도 많다. 그러니 2D diffusion model을 어떻게든 활용해야한다!
알고리즘만을 생각해보자
- 한장의 이미지를 입력으로 받은뒤 Multi-view diffusion model[여기선 multi-view dream 사용]을 사용해서 여러 각도의 이미지를 베이스 shape prior로 얻는다.
- 그리고 diffusion inverse과정을 거쳐서 그 이미지들을 noise로 보낸다.
- 2D diffusion model(1번과는 다른)을 사용해서 고퀼리티 이미지로 만든다(CFG denoising)
pre-trained 2d diffusion model은 텍스트를 입력으로 받을 수 있으니 보이지 않는 부분을 임의로 컨트롤 할 수도 있다. → 더 다양한 3D 결과를 만들 수 있게 된다.
그리고 새로운 각도의 이미지와 input view의 attention key, value를 concat해서 사용하면 더 texture 같은 것들이 input을 따라가도록 할 수도 있다고 한다. 이런 image diffusion model의 기술들을 활용할 수 있다는 것도 좋은 점.
- 위에서 뽑아낸 multi-view image를 가지고 3DGS를 적용해서 3D reconstruction을 진행한다.
여기서는 3D Gaussian의 속성을 예측하는 feed-forward reconstruction model(Lgm논문에서 제시한 asymmetric U-Net Transformer를 사용)을 사용한다. input으로는 x hat 0를 받는.
그리고 이 3D에서 multi-view image를 캡처한 다음 이 이미지들와 xt로 DDIM inversion을 적용해서 노이즈를 얻는다.
이 멀티뷰 이미지들로 3D recon model 학습. 아래 로스를 이용해서
- 이렇게 여러번 cycle을 돌아서 최종적으로 더 높은 퀄리티와 consistency의 3d를 얻게된다.
이렇게하면 전체 cycle을 T만큼 돈다고 했을 때, 타임스텝이 작을수록 multi-view image들이 좀 별로고 갈수록 나아진다. 이런 특성을 반영할 수 있게 3D recon model에 zero-initialized layer를 끼워넣고 학습한다.
성능비교
지표와 육안으로 결과를 봤을 때는 확실히 좋아보인다.
ablation 결과.
- 본 연구에서는 web scale로 학습한 이미지 모델의 비주얼 생성 능력(디테일한 텍스쳐 등)을 3d model에도 주기위해, 2d diffusion model의 디코더의 feature를 3d recon model의 인코더에 zero-initialized cross-attention layers로 연결해주었다(UNet에서 스킵 connection하는 것처럼? 순서가 이상하긴하지만).
이건 성능에 꽤 영향을 준걸 볼 수 있다.
- II는 reference-view image의 key, value를 2d diffusion model의 다른 뷰 생성에 주입해주는과정을 의미.
어짜피 입력 뷰에서 안보이는 곳은 임의로 만들게되는데 이 때 2D diffusion model을 쓰다보니 텍스트로 컨트롤을 할 수 있다.
Share article
Subscribe to our newsletter