일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- level2
- 3D
- Computer Vision
- 프로그래머스
- 파이썬
- 큐
- deep learning
- transformer
- Python
- point cloud
- flame
- Deeplearning
- 임계처리
- 딥러닝
- 스택
- OpenCV
- cv2
- reconstruction
- Object Tracking
- numpy
- center loss
- Threshold
- 자료구조
- NLP
- re-identification
- Object Detection
- attention
- 알고리즘
- Knowledge Distillation
- 논문 구현
- Today
- Total
공돌이 공룡의 서재
[논문 리뷰] FLAME : Learning a model of facial shape and expression from 4D scans 본문
[논문 리뷰] FLAME : Learning a model of facial shape and expression from 4D scans
구름위의공룡 2022. 4. 17. 00:493D 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)=9K∑n=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 는 사용하지 않고 이뤄진다.