공돌이 공룡의 서재

[논문 리뷰] FLAME : Learning a model of facial shape and expression from 4D scans 본문

딥러닝/3D

[논문 리뷰] FLAME : Learning a model of facial shape and expression from 4D scans

구름위의공룡 2022. 4. 17. 00:49

3D Face Reconstruction 에서 최근에 등장하여 3DMM 모델과 함께 많이 쓰이고 있다. 사실 FLAME 을 이용해서 어떻게 Reconstruction 을 할지가 더 중요하긴한데, 그래도 한번 살펴보자.



Introduction

3D Face modeling 의 양끝이 있다면, 한쪽은 굉장히 실제에 가깝도록 모델링하는 것이고 반대쪽은 단순하게 모델링하는 것이다. 우리의 목표는 단순하게 모델링한 것을 학습을 통해서 실제에 가깝도록 바꾸는 것이다.

초기 모델들은 3D 스캔 데이터 수 자체가 부족하거나 표정, pose, 등 자체가 제한된 환경에서 만들어진 모델들이다. 따라서 모델이 나타낼 수 있는 얼굴 모양이나 표정, 등에 제한이 있을 수 밖에 없다. FLAME 은 이 점을 극복하기 위해 총 33000개 스캔 데이터를 사용했다.

연산면에서 단순하고 효율성을 유지하기 위해, 상대적으로 적은 polygon 과 articulation 을 사용하고 blend skinning 방식을 사용해서 vertex-based model 로 만들었다.

학습에는 다음 2가지 데이터를 이용했다.

  • CAESAR body scan → identity shape space
  • D3DFACS dataset (4D) + additionally acquired → pose, expression variance

Key Contribution

  • 기존에 있는 head / face model 보다 low-dimension 이면서 더 정확하고 표현력이 좋은 통계적인 head model 을 만들었다.
  • head pose 나 eyeball rotation 같은 부분들도 모델링하였다.

Model Formulation

SMPL body model 모델링 개념을 확장해서 적용한다. SMPL 의 경우, 얼굴 자세나 표정에 대한 모델링이 없다는 단점이 있다. 또한 SMPL 에선 geometric deformation 은 사람 자체의 외형이나 사람의 pose 변화에 따라 변한다. 그러나 얼굴의 경우, pose 변화보다는 근육 움직임에 따라서도 그 형태가 변한다.

사람 표정은 여러 얼굴 근육들로 나타낼 수 있음을 떠올려보자.



FLAME 은 그래서 이 점 또한 모델링하기 위해, 추가적으로 expression blendshape 도 사용한다. (SMPL 은 shape 이랑 pose 만 사용함. SMPL-X 에서는 FLAME 을 반영하여 facial expression 도 들어가긴 함.)


FLAME 은 5023개 vertice, 4개 joint 로 이뤄져 있고, linear blend skinning (LBS) 를 사용한다. FLAME 모델 자체는 다음과 같이 나타낼 수 있다. (SMPL 과 비슷하다.)

M(β,θ,ψ)R3N

M 안의 변수들은 순서대로 shape, pose, expression 에 대한 vector 다.

이를 구체적으로 풀어쓰면 다음과 같다. ˉT 는 zero-pose template mesh 다.

M(β,θ,ψ)=W(TP(β,θ,ψ),J(β),θ,ω)

  • W 는 standard skinning function 이다.
  • ω 는 linear smoothing 에 쓰이는 blendweight 다.
  • Tp(β,θ,ψ)=ˉT+BS(β;S)+BP(θ,P)+BE(ψ,\Epsilon) 으로, template mesh 에 shape, pose, expression offset 을 더하는 것을 의미한다.

Shape blendshapes

BS(β,S)=|β|n=1βnSn

β 는 shape coefficient 고, S 는 orthonormal shape basis 에 해당한다 (PCA 로 얻을 수 있다.)


Pose blenshapes

BP(θ;P)=9Kn=1(Rn(θ)Rn(θ))Pn

R(θ) 는 face / head / eye pose vector 를 대응하는 모든 rotation matrix 들로 보내는 함수다. pose blendshpae 은 R (concatentated rotation matrix) 에 대해서는 linear 하지만 θ 를 rotation matrix 로 mapping 하는 것이 non-linear 하다.


Expression blendshape

BE(ψ,E)=|ψ|n=1ψnEn

shape blenshape 과 마찬가지로 linear shape blenshape 으로 구성한다. E 는 orthonormal expression basis 를 말하고, ψ 는 coefficient 다.


이 이후는 Alternative registration 과 모델 파라미터 학습에 관한 내용이다. 수식이 많고 복잡하기도 하고, 실제로는 Head model 을 만드는 것 보다는 FLAME 자체를 사용해서 3D Face reconstruction 에 많이 사용하므로, 간단하게만 알아보고 넘어가려 한다.



Registration

3D scan 해서 취득한 데이터는 실제로 해보면 watertight mesh 아닌, noise 가 많은 형태를 하고 있다. 그런데 우리는 full-vertex correspondence 가 필요하다. Registration 과정에서는 3D data scan 에 맞는 template mesh 를 계산한다. FLAME 을 regularize 하면서 mesh 를 register 하는 것과 registration 으로 FLAME 을 학습하는 과정을 번걸아가며 진행한다.

model-based registration 은 총 3단계로 이뤄져 있다.


1. Model only

E(β,θ,ψ)=ED+λLEL+EP

: 3D scan data ↔ FLAME

위 식을 최소화할 수 있도록 최적화로 해결한다. 각각의 term 을 살펴보자.

  • ED : scan vertices 와 각각에 가장 가까운 model 의 point들 사이 거리를 구하고 다 합친다. 다시 말해서, scan-to-mesh 거리를 계산한다.
  • EL : Landmark term 으로, image landmark 와 그에 대응하는 model 의 vertices 사이 거리를 계산한다.
  • EP : pose, shape, expression coefficient 가 0에 가깝게끔 regularize 하는 term이다.

2. Coupled

E(T,β,θ,ψ)=ED+EC+ER+EP

: 3D scan data ↔ mesh registering

마찬가지로 최적화를 통해 위 식을 최소화하는 것이 목표다. Template mesh 의 vertices 를 추가로 입력으로 받는다.

  • ED : scan 이랑 aligned mesh T 사이의 거리를 측정한 term 이다.
  • EC : coupling term. Template mesh T 와 Model 사이의 edge 거리 차이를 줄인다.
  • ER : T의 각 vertex 에 대한 regularization term 이다. 이웃하는 vertex들과의 거리차에 관한 식인데, noise 나 partial occlusion robust 하게 해준다.

3. Texture-based

E(T,β,θ,ψ)=ED+EC+λTET+ER+EP

: 3D scan data ↔ mesh registering

Coupled 식에서 ET 가 새로 추가되었다. 실제 이미지와 T 를 rendering 한 이미지와 비교해서 photometric error를 구한다.


Model Training

Pose parameter training

: 각 subject 에 특수한 파라미터들과 subject 전체적으로 동작하는 파라미터로 나눈다고 하자. 최적화를 할 때는 이 둘을 번갈아가며 최적화한다. 전자에 대해 진행할 때는 expression term 없이 한다.


Expression parameter training

: pose & shape 이랑 expression 을 분리하는 것이 중요하다. pose parameter 없이 진행한다.


Shape parameter training

template ˉT 와 shape blendshape S 를 계산하는 것으로 이뤄져있고, pose parameter 와 expression parameter 는 사용하지 않고 이뤄진다.

Comments