[논문리뷰] DreamFace: Generation of 3D Faces under Text Guidance
📑

[논문리뷰] DreamFace: Generation of 3D Faces under Text Guidance

Category
딥러닝
Tags
Deep Learning
Paper Review
Text2Texture
Published
April 10, 2023
Author
Jay

DreamFace: Progressive Generation of Animatable 3D Faces under Text Guidance

 
 
notion image

0. Abstract

본 논문에서는 text-guidance를 활용한 3D face 생성 방법론인 DreamFace를 소개한다. CG pipeline(blender, maya 등 실무 툴)에서 실제로 활용 가능하도록 shape, texture, animation 등의 부분에서 동일한 형식을 활용한다. → 바로 실무 3D asset 작업에서 활용 가능하다는 점이 포인트!
자세히
첫번째로는 통일된 topology에 대해 neutral facial geometry를 생성하는 coarse-to-fine(거친 것에서 미세한 것까지) scheme을 소개한다. 우선 coarse geometry를 생성하기 위해 CLIP embedding space에서 selection 전략을 사용하고, SDS(Score Distillation Sampling)을 활용해 displacements 맵과 normals 맵을 optimize한다.
두번째로는 neutral appearance 생성을 위해 dual-path mechanism을 소개한다. 이 기법은 일반적인 LDM을 새로운 texture LDM과 결합하여 UV space 내의 diversity와 textural specification을 보장한다. 또한, fine-grained 합성을 제공하기 위한 two-stage optimization(latent와 image space에서 SDS를 수행)을 소개한다. 이는 또한 latent space로부터 physically-based texture(diffuse albedo, specular intensity, normal maps)로의 mapping을 학습한다.
 

1. Introduction

3D digital human 생성 Tool은 유저들이 skin color, hair types, facial shapes, expression 등을 customizing 할 수 있어야 할 것이다. 또한 결과물이 자연스럽고, 영화나 소설 등과 매치되는 theme을 일괄적으로 적용된다던가, 초심자들이 text로 심플하게 사용하는 등의 편의성 역시 고려되어야 할 것이다. 이러한 Tool에 대한 수요는 영화사, 게임사, 그리고 최근에는 거대한 Metaverse 등에서 크게 발견할 수 있다. 그러나, 선행 연구들은 3D generation에 있어 다양성이나 디테일이 부족했었다.
높은 퀄리티로 생성하고 쉽게 컨트롤 하기 위해, DreamFace는 점진적인 프레임워크로 디자인되었으며, 아래의 3가지 순차적인 모듈들(Sequential Modules)로 구성된다
Geometry Generation (mesh 선택 및 다듬기)
  • 첫 번째로 Geometry Generation에서는 neutral facial geometry 생성(ICT-FaceKit의 topology 구조)을 위해 Coarse-to-Fine scheme을 활용한다. Coarse stage에서는 ICT-FaceKit에서 사전 샘플된 다양한 geometry 후보군에 대해 text와 geometry(2D 렌더링)들간의 score를 계산한 뒤(CLIP embedding space), 최적의 coarse geometry를 선택한다. 이후, 디테일에 대해 fine-grain을 실시한다.
Physically-Based Texture Diffusion (Texture 생성)
  • 두 번째로 DreamFusion과 유사하게 SDS(Score Distillation Sampling) 기법을 활용해 displacements 맵과 normal 맵을 학습한다. 이후, physically-based appearance을 통해 주어진 geometry와 text 프롬프트에 맞는 neural facial asset을 생성하는데, 이때 두 종류의 diffusion model을 활용하기 위한 dual-path mechanism이 적용된다. 하나는 일반적인 LDM으로 프롬프트 입력에 대한 높은 생성 역량을 활용하기 위함이고, 다른 하나는 새로운 Texture LDM으로 UV 공간 상의 texture의 품질을 보장하기 위함이다. 이 Texture LDM을 학습하기 위해, 저자들은 존재하는 UV Texture dataset에 직접 만든 데이터, 다른 데이터셋의 prompt tuning 적용본 등을 더해 데이터셋을 늘렸다. 결과적으로 diffuse albedo, specular intensity, normal map을 얻을 수 있으며, SR모듈을 적용해 4K Texture를 생성할 수 있다.
Animation Empowerment (animation 최적화)
  • neutral geometry와 appearance를 animation하기 위한 브루트포스 접근방식은 ICT-FaceKit의 기본 blendshapes를 활용하는 것이다. 토폴로지를 공유하기 때문에 가능하다. 논문에서는 이러한 기본 animation보다 품질 or 표현력을 높이고자 하는데, corss-identity hypernetwork를 적용하여, 생성된 facial asset의 expression space를 모델링하기 위한 univeral prior를 학습한다. 이 univeral prior를 통해 video facial tracker를 encoder로 학습시키고, video-based animation을 가능하게 만든다.
 
 

4. Geometry Generation

얼굴 특징을 묘사하는 유저 프롬프트 로부터, 가장 좋은 CLIP matching score를 갖는 shape을 찾는다. 이때 얼굴 geometry는 ICT-FaceKit에 포함되는 토폴로지 구조로서, 14062개의 vertices, 28068개의 faces를 갖는다. 이후 fine-grained detail carving을 수행하고, 이를 guide하기 위해 SDS loss를 사용한다. Stable Diffusion의 image autoencoder를 사용하며 encoder , Decoder 로 표기한다.
정리하자면 이 과정은, 이미 있는 mesh 중에 text prompt와 가장 잘 맞는 mesh를 찾고, 다듬는다.

4.1. Coarse geometry generation

notion image
ICT-FaceKit에서 후보군을 샘플링하기 위해, basis인 shape space를 얻는다. 특정 shape을 shape space에서 얻기 위한 공식은 아래와 같으며, 는 mean face, 는 shape 요소, 는 생성된 head mesh이다. coarse geometry 후보군은 에 의해 shape space에서 샘플된다.
자세히
가장 match되는 best 후보 geometry를 찾기 위해서, 선택된 face geometry를 다른 각도의 10가지lighting 아래에서 front, left/right 3/4 view에서 렌더링한다. 이에 따라 각 후보마다 30개의 이미지가 생성된다. 그 다음에는 30개의 이미지와 주어진 text prompt를 CLIP embedding으로 보내고, matching score를 계산한다.
주어진 face 후보 , 파라미터 , 그에 해당하는 mesh , 3개의 camera pose , 10개의 lighting , mesh renderer 에 대해 렌더링 프로세스는 이고 는 렌더링된 이미지이다. image는 CLIP의 image encoder 로 임베딩되고 아래와 같다.
text는 로 임베딩되고, , 의 correlation을 직접구하기 보다, AvatarCLIP에 제시된 아래의 계산이 활용된다. 의 normalized value, 이고 는 anchor embedding이다.
최종적으로 맥시멈 matching score를 가진 coarse geometry는 , 이에 상응하는 identity code는 이다.

4.2. Detail Carving

geometry를 더 input prompt에 가깝게 하기 위해 detail carving process를 고안했다. 에 대해 vertex displacement (가 geometry correction하게 만듬) 그리고 normal map (가 주름 표현 등 → detail하게 만듬)이다.
자세히
선택된 coarse geometry에 대해, detail geometry에 대한 식은 아래와 같다.
notion image
여기서 은 vertex normal을 나타내고, ⊙은 element-wise multiplication이다. 그러면, vertex displacement가 더해져 corrected된 mesh를 카메라 포즈 와 lighting 방향 에 대해 렌더링하는 식은 아래와 같다
notion image
은 differentiable render이다. 이제 렌더링된 이미지 에 대해 SDS loss는 아래와 같다
notion image
SDS loss와 함께 regularization term들이 더해지는데, 생성되는 detail들의 rationality를 보존한다. 아래와 같다.
notion image
최종 optimization은 아래와 같다.
notion image
 
이러한 detail carving process를 통해 input prompt와 가깝게 매치되는 디테일한 geometry를 얻을 수 있다. 자세한 부분은 논문을 참고하면 좋을 듯 하다.
→ 현재 풀고 있는 문제가 mesh가 주어진 상황이라, 굳이 존재하는 mesh 중에 제일 나은 것 선택하는 방법론이 엄청 필요하지는 않은 상황이라, 얕게 정리했다..
 

4.3. Hair Selection

얼굴 geometry처럼 hair 역시 selection 한다. 전문 아티스트에 의해 디자인된 16개의 헤어스타일 데이터셋에 대해 geometry generation process를 통하고, input prompt에 가까운 헤어컬러를 찾는다.

5. Physically-based Texture Diffusion

notion image
이번 섹션에서는 앞 섹션에서 생성한 detailed geometry에 더해 diffuse, specularity, 그리고 normal map으로 컨트롤되는 appearance 생성에 대해 알아본다. 입력 프롬프트를 통해 묘사된 특성을 잘 살리는 것 이외에 texture map(본 논문에서는 UV unwrapping 형태)의 consistency 보장은 CG 생성 파이프라인에서 상당히 중요하다. 그러므로 본 논문에서는 두 종류의 diffusion model(일반적인 LDM, Texture LDM)을 통한 dual-path 기법을 제안한다.
더불어, 더 효율적인 appearance 생성을 위해, Latent-NeRF로 부터 영감을 얻은 latent space와 image space에서의 SDS를 활용한 two-stage optimization 기법을 소개한다.

5.1. Learning diffusion model in texture space

결국 본 논문에서는 UV unwrapping 형태의 Texture를 모아서 Stable Diffusion을 학습시킨다. 때문에, UV texture를 어떻게 모았는지, 어떻게 전처리했는지, 어떻게 fine-tuning했는지를 중점적으로 다룬다.
5.1.1. Data Collection
notion image
데이터는
  1. 자체 captured facial scan 데이터
  1. public datasets(facescape)
  1. 판매하는 데이터
세 가지를 활용했으며, 각각의 형태와 UV unwrapping 형태, lighting 조건 등이 달라 팀에 속한 전문 아티스트, 리서쳐 들이 직접 unification, annotation을 수행했다. 또한, 헤어, 모자, 마커 포인트 등 non-face 영역에 대해서는 학습의 안정성을 해치므로 마스킹(; face color detection model 사용)했고, LDM에 넣어줄 때는 해당 영역을 zero로 만들어주었다.
5.1.2. Prompt Tuning
notion image
lighting 있는 Texture가 있어서, 이상적인 desired domain , undesired domain 으로 나누어 Text 조건을 주었다. 최종적으로는 아래의 Loss로 Fine-Tuning 하는데, 사실상 괜찮은 Texture 데이터셋 모아서 Stable Diffusion 학습시키는 식이다.
notion image
 

5.2. Two-stage Dual-path Appearance Optimization

Latent space SDS와 Image space SDS로 나뉘며, 각각 아래와 같다.
Latent space SDS
notion image
Image space SDS
notion image
 

5.3. Physically-based textures generation

Texture U_d를 기반으로 specularity 맵과 normal map을 생성하는데, image to image 방법론을 활용하고 Loss는 아래와 같다. 은 Stable Diffusion이고, , 는 specularity 맵을 생성하는 디코더, 은 normal map을 생성하는 디코더로서 저자들이 확보한 dataset을 통해 학습되었다.
notion image
이후 512x512의 Texture들은 ESRGAN을 통해 4K로 upscale된다.
 

6. Animatability Empowerment

  • 논문 참고 바람
 

7. Experiment

  • 결과들은 좋아보이긴 한다. (cherry picking 있겠지만)
notion image
notion image
notion image
notion image
 

개인적인 생각

  • UV Texture들 모으고, 전처리 열심히 하고, Stable Diffusion Fine-tuning하고 정도..?
  • 모델이랑 데이터를 공개 안했기 때문에, 웹사이트의 데모만 사용해볼 수 있는 상태인데, 헤어나, 캐릭터 같은 것들은 안되고 생긴것도 다 비슷비슷한 것 같기도 하다..
  • MetaHuman Texture를 Stable Diffusion에 학습시키고 활용하기 위한 논문