공돌이 공룡의 서재

[논문 리뷰] 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(\vec \beta, \vec \theta, \vec \psi) \rightarrow \mathbb{R^{3N}}
$$

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

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

$$
M(\vec \beta, \vec \theta, \vec \psi) = W(T_P(\vec \beta, \vec \theta, \vec \psi), J(\vec \beta), \vec \theta, \omega)
$$

  • $W$ 는 standard skinning function 이다.
  • $\omega$ 는 linear smoothing 에 쓰이는 blendweight 다.
  • $T_p(\vec \beta, \vec \theta, \vec \psi) = \bar T + B_S(\vec \beta; S) + B_P(\vec \theta, P) + B_E(\vec \psi, \Epsilon)$ 으로, template mesh 에 shape, pose, expression offset 을 더하는 것을 의미한다.

Shape blendshapes

$$
B_S(\vec \beta, S) = \sum_{n=1}^{|\vec \beta|} \beta_nS_n
$$

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


Pose blenshapes

$$
B_P(\vec \theta ; P) = \sum_{n=1}^{9K}(R_n(\vec \theta) - R_n(\vec \theta^*))P_n
$$

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


Expression blendshape

$$
B_E(\vec \psi, E) = \sum_{n=1}^{|\vec \psi|} \vec \psi_nE_n
$$

shape blenshape 과 마찬가지로 linear shape blenshape 으로 구성한다. E 는 orthonormal expression basis 를 말하고, $\psi$ 는 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(\vec \beta, \vec \theta, \vec \psi) = E_D + \lambda_L E_L + E_P
$$

: 3D scan data ↔ FLAME

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

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

2. Coupled

$$
E(T, \vec \beta, \vec \theta, \vec \psi) = E_D + E_C + E_R + E_P
$$

: 3D scan data ↔ mesh registering

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

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

3. Texture-based

$$
E(T, \vec \beta, \vec \theta, \vec \psi) = E_D + E_C + \lambda_T E_T + E_R + E_P
$$

: 3D scan data ↔ mesh registering

Coupled 식에서 $E_T$ 가 새로 추가되었다. 실제 이미지와 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 $\bar T$ 와 shape blendshape $S$ 를 계산하는 것으로 이뤄져있고, pose parameter 와 expression parameter 는 사용하지 않고 이뤄진다.

Comments