[논문리뷰] CraftsMan: High-fidelity Mesh Generation with 3D Native Generation and Interactive Geometry Refiner
📑

[논문리뷰] CraftsMan: High-fidelity Mesh Generation with 3D Native Generation and Interactive Geometry Refiner

Category
딥러닝
Tags
Deep Learning
Paper Review
Text23D
Published
October 1, 2024
Author
Jay
 
 

논문에 대한 나의 생각

notion image
  • 匠心(장심): 창의성, 묘한 생각
  • 3D Diffusion Model과 Geometry Refiner로 구성된 2 Stage 방법론 (Coarse-to-Refine)을 통해 Image/Text 입력으로 3D Mesh/Geometry만을 생성한다.
    • Coarse Stage
      • 3D native diffusion에 multi-view image condition을 활용했다는 것이 핵심
      • 당연하게도, single image나 text prompt 가이드보다 geometry를 잘 conditioning 해준다.
      • 3D native 방법론의 한계(다양하지 않고, 부족한 데이터셋)를 2D 기법으로 잘 보완했다.
      • Multi-View Diffusion 하나 잘 학습해두면, Geometry / Material Generation 모두에 요긴하게 써먹을 수 있겠다는 생각이 든다.
    • Refine Stage
      • 디테일 퀄리티를 높인 Normal 맵을 mesh optimization에 활용한다는 컨셉.
      • 구체적으로는, 우선 2D Diffusion Model을 Normal 이미지를 생성하도록 fine-tunning하고, 여기에 Tile ControlNet을 붙여서 Normal 이미지의 디테일을 높이도록 refine 한다. 그다음 Differential Renderer로 렌더링한 Coarse Mesh의 Normal와 2D Diffusion Model로 refine한 Normal 이미지간의 L1 Loss 계산하여 Mesh를 Optimization한다.
        • 학습은 Normal 생성하는 Diffusion 부분만 수행
      • 전통적인 3D Modeling 방식과 정반대로 접근하는 듯 보인다는 점은 신기하다?
        • 실제 실무 3D Modeling에서는 보통 Zbrush 등으로 Highpoly를 Sculpting해서 Lowpoly로 리토폴로지한 뒤, 섭페 등으로 Normal Map을 Bake하는 방식(두 Mesh의 차이를 자동으로 계산해서 Normal로 추출해주는 기능)이 보편적인데, 3D Gen 결과물 디테일이 떨어지니, Normal 퀄리티를 Diffusion으로 올려서 이를 Mesh에다가 다시 갖다가 붙여넣는 방식.
        • 나중에 서비스로 제공하는 경우에는 디테일 올린 Normal Map을 그냥 제공해도 될 것 같다는 잡상도 들지만. 아무튼..
  • 전반적으로 품질이 좋아보이고, CLAY의 코드가 공개되지 않은 시점에서 Geometry Generation 단계에 활용하여 연구를 해보면 좋을 것 같다.
  • Geometry 한정으로는 3D native + alpha 방법론이 느린 SDS 계열보다 점점 더 대세가 되어갈 수도 있겠다는 생각이 드는 듯 하다. (토폴로지도 훨씬 나은 것 같고)

1. Introduction

Image나 Text Prompt를 기반으로 High Quality 3D Shape을 30초 이내로 생성
Image나 Text Prompt를 기반으로 High Quality 3D Shape을 30초 이내로 생성
3D 에셋을 제작하는 일은 time/cost expensive하기 때문에, 많은 기법들이 한 장의 이미지나 텍스트 프롬프트만 있으면 3D를 생성할 수 있는 generative 방법론을 레버리지 해보려한다. 3D Generative Methods는 3가지 타입으로 나뉘는데, 아래와 같다.
  • 1) SDS(Score DIstillation Sampling) 기반 Method
    • 단점: 오래 걸림, 최적화 불안정, multi-face(Janus) 발생
  • 2) MV(Multi-View) 기반 Method
    • 단점: 불규칙적인 geometry 구조, 노이즈 많은 surface, over-smooth surface
  • 3) 3D native generation 기반 Method
    • 단점: 제한된 데이터, 이로인한 generalization 성능 부족
본 논문에서는 CraftMan이라는 새로운 3D Modeling System을 제시하는데, 이미지 입력이나 텍스트 입력을 기반으로 다양한 Shape / 규칙적인 Mesh Topology / 디테일한 Surface, 그리고 인터렉티브한 geometry refine을 제공한다. 시스템은 two-stage로 구성되는데, i) Coarse Stage: MV 이미지 컨디셔닝 되는 native 3D diffusion model, ii) Refine Stage: generative geometry refiner이다. 3D data에 대해 학습된 3D native diffusion model은 3D geometry distribution을 학습하게 되는데, 제한된 3D dataset은 필연적으로 generalization 성능을 저하시킨다. 저자들은 multi-view diffusion 모델을 3D diffusion model에 결합시킴으로서 이를 해결했다. 한편, generative geometry refiner의 경우 ControlNet-tile과 surface normal map diffusion을 결합해 디테일을 높인다.
 

3. Method

notion image
Craftman의 Framework는 아티스트의 3D 모델링 workflow를 모방했고 한다. 먼저 Coarse Geometry Modeling 한 뒤 Refine을 하는 식으로 (Highpoly를 만들기 위해 Zbursh나 Blender로 Sculpting하는 단계의 진행방식이라 볼 수 있겠음). 이러한 단계적인 접근이 규칙적인 토폴로지와 디테일을 가지는 3D Shape 생성을 가능하게 한다고 한다. 구체적으로는, 먼저 3D asset들을 latent로 encoding하여, 3D shape latent diffusion을 돌린다. 다음으로, MV diffusion model을 통해 Input 이미지나 텍스트를 multi-view 이미지로 만든다. 이 멀티뷰 이미지들을 3D latent diffusion에 condition으로 제공한다. 마지막으로 surface normal based refinement를 수행.
 

3.1. 3D Latent Set Representation

먼저 아래 그림 (a) Shape VAE를 통해 3D 에셋을 latent로 encoding하는 방법을 설명한다.
notion image

Shape Representation

LDM(Latent Diffusion Model)의 성공은 compact / efficient / expressive representation이 diffusion model을 학습시키는데 필수적임을 증명했다. 때문에 저자들은 3D shape을 LaserPointFlow와 비슷한 방식으로 one-dimensional latent set 로 인코딩했다. 는 latent sets의 개수, 는 feature dimension
 

Shape Encoding

Auto-Encoder 구조로 3D shape을 latent set으로 encode하고, neural field로 decode(reconstruct)할 것인데, 먼저 각 3D shape에 대해 포인트 클라우드 와 Normal(법선) 벡터 를 surface에서 샘플링한다. 그다음 Fourier PE(Positional Encoding)과 그 Normal이 결합된(Concat) 정보를 shape encoder에 주입하기 위해 cross-attention layer를 거친다. 구조는 Perceiver 기반의 shape encoder를 레버리지하여, geometric 특성을 효과적으로 캡쳐한다. ( 두가지가 Cross Attetion에 들어감. 는 column-wise 푸리에 positional encoding이라고 한다.)
notion image
 

Shape Decoding

비슷한 perceiver 기반 decoder를 사용하는데, 모든 self-attention 레이어를 cross-attension 레이어 앞으로 옮긴다. 주어진 3D point 쿼리와 학습된 shape latent embedding 에 대해 decoder는 Occupancy Value(점유값; 3D Representation 중 하나)를 predict한다.
notion image
는 실제 값이고, 는 단일 MLP로 구성된 occupancy 예측 함수이다. 정규화 위해 (KL divergence loss) 활용했고, 최종적으로 Marching Cube 활용해서 최종 surface를 reconstruction한다.
  • Occupancy Value(점유값)
    • Occupancy Value는 3D 공간의 특정 지점이 물체에 의해 점유되었는지 여부를 나타내는 값. 일반적으로 이진값(0 또는 1)이나 확률값(0에서 1 사이)으로 표현.
notion image

3.2. 3D Native Diffusion Model

직접 single image나 text prompt를 condition으로 활용하는 대신, multi-view images를 활용함.
notion image
 

Generating MV Images as Intermediate Conditions

Multi-View 이미지를 쓰면, 당연하게도..! 단일 이미지나 텍스트 보다 풍부한 Geometric / Contextual prior를 제공한다. 특히, MV 이미지를 사용하는 것은 텍스트로 조건을 주는 모델과 단일 이미지로 조건을 주는 모델을 따로 학습할 필요가 없는 통일된 방식으로 이어지기 때문에 좋다. (코드를 확인해보니 Multi-View Diffusion 구현중 CRM / ImageDream / Wonder3D 의 구현체를 지원하는 것으로 보인다. 3가지도 내부적으로는 MVDream 방식을 베이스로 활용하는 등이다)
notion image
 

MV-conditioned 3D Latent Set Diffusion

Shape latent 와 multi-view 이미지 를 가지고, 3D Diffusion Model을 학습한다. 먼저, Multi-View 이미지를 Image Feature Extractor 에 입력하여 임베딩을 얻는다. 논문에서는 Instant3D 방법을 따라 카메라 매개변수를 Image Feature Extractor에 함께 넣어줘서 Multi-View 이미지를 구분할 수 있게 한다. 각 어텐션 서브레이어에 adaLN를 적용해 이미지 임베딩이 카메라 위치를 인식할 수 있도록 한다.
notion image
결과적으로 3D native diffusion model이 텍스트나 이미지 기반 condition으로 occupancy field를 생성하게 할 수 있고, marching cube 알고리즘을 통해 mesh로 추출할 수 있다. 생성된 mesh의 부드러운 shape을 더 잘 시각화하기 위해, triangular mesh(삼각 메쉬)를 quadrilateral mesh(사각 메쉬)로 변환하기 위한 리메시 도구(Maxime [2024])를 사용했다. 확실히 quadrilateral로 리메싱 하는게 퀄리티가 올라가나보다.
 

3.3. Normal-based Geometry Refinement

Normal 맵을 기반으로 Coarse Mesh의 디테일을 보강하는 Refinement에 대해 설명한다. Vertex를 바로 조작하지 않고 디테일 퀄리티를 높인 Normal 맵을 mesh optimization에 활용한다는 컨셉.
notion image
 

Coarse Normal Enhancement

렌더링된 normal 디테일을 올리기 위해 ControlNet-Tile(Upscale 할때 보통 사용하는)을 썼다. 구체적으로는 normal 이미지들을 활용해 2D Diffusion Model을 파인튜닝했고, 그걸 RGB 도메인에 대해 학습된 ControlNet-tile에 태웠다. 결국, 학습은 Normal 이미지 생성하는 부분에만 했고 나머지는 있는거 활용했다는 이야기.
 

Shape Optimization via Differentiable Rendering

notion image
본 논문에서는 연속적인 remeshing[Palfinger]을 통한 vertex optimization을 활용하며, 이 방식이 효율적이고, explict한 컨트롤을 제공한다고 한다. vertices 와 faces 로 이루어진 mesh가 주어졌을때, 본 기법은 refine된 normal maps 를 가지고 triangle vertices와 edges를 직접적으로 조작하는 방식을 통해 mesh detail을 최적화한다. 구체적으로는, 각 최적화 스텝에서 differentiable rendering을 통해 현재 mesh의 normal map을 렌더링한다. 그다음 L1 Loss를 최소화 하는 방향으로 렌더링된 normal과 refine된 normal의 차이를 최소화한다. (즉, 아까 앞서서 diffusion model로 디테일 Up한 타겟 normal 이미지와 differential renderer를 통해 렌더링한 실제 normal 이미지의 L1 Loss를 구한다는 말)
notion image
은 differentiable 렌더러이고, 번째 카메라 정보이다. 각 step에서는 각 vertex의 위치를를 loss에 따라서 업데이트하며, edges를 split / merge / flip 한다. 자세한건 Palfinger 논문 참고
 

Automatic Mesh Refinement

이 방법은 여러 뷰에서 한번에 Mesh를 Refine하는 방법인데, Auto Normal Brush라고 한다. 중요한 문제는 diffusion으로 생성된 normal image가 서로 incosistent한 부분이 존재한다는 것인데, MVDream이나 Wonder3D에서 다루어진 cross-view attention으로 해결한다고 한다. (Multi-View Image 생성을 Texture 생성에 쓸때 바로 알 수 있는데, 앞/뒤 까지는 괜찮은데 옆면 이미지를 Texture에 Projection 해보면 잘 안맞는 경우가 거의 대부분이라는 점을 생각해보면 당연한 이야기). Cross-view attetion을 쓰면 key와 value를 연결시켜 여러 View간의 정보를 전달할 수 있게하여, View간의 상관관계를 인식하게 한다고 한다.
근데, 합성된 dataset에서 다시 학습된 method는 overfitting에 취약해서, unrealistic and over-smooth 결과를 낸다고 한다. 재미있는 것은 저자들이 cross-view attetion을 training-free하게 적용할 수 있음을 발견했다는 것이다. 이 부분은 coarse normal map 제약과 ControlNet-Tile 설계 덕분인데, ControlNet-Tile이 원래 입력 조건을 크게 변경하지 않고도 새로운 Detail을 생성하기 때문이다. Refine된 normal은 이후 mesh를 optimize하는데 활용한다. (Cross-View Attention을 training free하게 활용할 수 있는지 실험이 필요하겠다.)

Interactive Local Refinement

유저가 선택한 부분만 Refine할 수 있는 방법인데, 논문 참고바람
 

4. Experiment

4.1. Dataset Preparation

  • Objaverse 800k개 중, 품질 낮은 Mesh 필터링하여 170k개 활용
  • 각 메쉬에 대해, 먼저 Object를 정규화하여 단위 큐브 안에 맞춘 후, Mesheder처럼 비수밀(water-tight) mesh로 전처리
  • 랜덤한 Rotation으로 4-orthogonal view로 렌더링하여 Latent Set Diffusion Model에 주입
  • 같은 방법으로 2D normal diffusion model 파인튜닝할 때에도 활용
 
notion image
notion image
notion image
 

5. Conclusion and Discussion

(Chat-GPT 번역) 우리는 CraftsMan이라는 새로운 프레임워크를 제안하며, 이 프레임워크는 30초 만에 고품질의 3D 메쉬를 생성하는 장인의 작업 과정을 모방합니다. 우리의 접근 방식은 거친 기하학을 생성하는 것으로 시작하여, 그 후 표면 세부 사항을 보강하는 과정을 따릅니다. 이를 위해 우리는 3D 기하학에 직접 학습된 확산 모델을 활용합니다. 구체적으로, 우리는 강력한 다중 뷰 확산 모델을 사용하여 여러 관점의 이미지를 생성하고, 이를 3D 확산 모델의 조건으로 사용합니다. 이러한 전략은 3D 데이터셋의 부족 문제를 해결하며, 접근 방식의 견고성과 일반화 능력을 크게 향상시킵니다. 이후, 우리는 2D 확산 모델의 능력을 활용하여 거친 기하학에서 렌더링된 법선 맵을 보강하고, 보강된 맵을 세부적인 표면 개선의 지침으로 사용합니다.
우리 방법이 정규화된 메쉬 토폴로지를 가진 고품질의 3D 메쉬를 생성할 수 있는 능력을 갖추고 있지만, 여전히 탐구할 만한 많은 부분이 남아 있습니다. 예를 들어, 잠재 집합 확산 모델(Latent Set Diffusion Model)의 제어 가능성(controllability)은 더 많은 연구가 필요하며, 3D 메쉬에 텍스처를 생성하는 문제는 미래 연구에서 유망한 주제가 될 것입니다.