본문 바로가기
Deep Learning/3D Reconstruction

[논문 리뷰] GANFIT: Generative Adversarial Network Fitting for High Fidelity 3D Face Reconstruction

by kail9974 2021. 9. 27.

Figure 1. 1장의 입력으로 정확한 ID 복구를 하여 고품질의 3D Shape, Texture를 얻음. Texture를 얻어낸 뒤 광원의 세기나 방향 등은 모델로 새롭게 설정하여 결과물을 얻었기에 이미지의 특징을 그대로 가져온 것이 아님.

이 논문은 Deep3DFaceRecon(논문 리뷰)과 같은 시기에 나온 논문으로 Feed-Forward가 아닌 반복적 Optimize로 더 나은 3D Reconstruction 결과물을 만드는 모델이다.

기존 다른 방법들과 달리 GAN을 사용하여 texture를 생성하였다는 것이 주목할 점이다.

3DMM으로는 LSFM을 사용하였는데 연구목적으로만 공유받을 수 있는 데이터셋이며 대학 연구실 소속이 아니면 구하기 어려워 보인다.

Paper: https://arxiv.org/abs/1902.05978

Github: https://github.com/barisgecer/GANFit (코드 없음)

 

Introduction

기존의 3D Face Reconstruction 기법들은 3DMM 데이터를 통해 3D shape과 texture를 PCA 기법으로 추정하고 있지만 GANFIT은 Texture를 생성하는 GAN을 학습하여 3D shape은 PCA, texture는 GAN으로 만들어내는 기존과는 다른 방법을 사용한다.

논문에서 제시한 공헌은 다음 4 항목이다.

  • 최초로 GAN을 사용하여 다량의 고해상도 texture를 복원하는 모델이다. 이 texture는 Rendering 된 상태의 것이 아닌 UV 공간에서 만들어낸 것으로 얼굴 texture 복원에 UV 공간을 사용할 수 있음을 보여준다.
  • GAN과 Differentiable renderer를 기반으로 하는 새로운 3DMM fitting 방법을 제시한다.
  • 얼굴 인식 신경망에 적용하기 위한 Identity 특징에 적용하는 다양한 Content Loss를 복합한 새로운 Cost Function을 제시한다.
  • 임의의 조건을 갖는 질적 양적 실험에서 사실적이고 정체성을 보존하는 우수한 3D shape과 texture 결과를 보여준다.

기존의 방식을 보면 3DMM에서 texture는 PCA 하여 parameter를 곱하는 선형 모델을 통해 원하는 texture를 얻는 방식을 사용하고 있다.

이렇게 연산할 경우 가우시안의 특성으로 인해 texture가 흐려지며 당연하게도 저주파(저주파는 표면이 밋밋하다고 할 수 있고, 반대로 피부의 세세한 주름은 고주파 특징이다.) 특징만 표현하게 된다는 문제점이 있다.

3DMM에서 shape도 마찬가지로 PCA의 방법을 사용하는데 각 정점에 대응되는 Identity, Expression을 다루는 2개의 선형 모델이 사용된다.

 

Fitting 과정에서 texture와 shape을 얻는 parameter를 비선형 모델을 통해 반복적 최적화로 계산하며 이 비선형 모델이 우리가 학습하고자 하는 Deep Learning 모델이다.

Parameter를 사용하여 Rendering 한 결과물과 입력 이미지와의 손실 함수를 계산하여 최적해를 찾기 때문에 미분 가능한 Renderer가 필요하며 기존에 소개된 대부분의 Deep Learning 모델이 서술한 것과 같은 방식을 사용하고 있다.

 

Method

Figure 2. 전체 모식도. Cost function은 주로 우측 하단의 Pretrained Face Recognition 단에서 identity feature에 따라 계산된다.

전체 모식도를 보면 3D shape 위에 Texture GAN에서 만들어낸 UV map을 입혀 Renderer를 통해 그려내고 있다.

이를 신경망 입력으로 사용해 각각의 parameter를 반복적으로 최적화하는 구조다.

Texture GAN

기존의 다른 모델들이 사용하던 PCA를 통한 texture 추정법은 저주파 특징 위주로 결과물을 만들며 이 문제점을 해결하고자 GAN을 사용한 것이며 실제 사진과 같은 결과물을 얻기 위함이다.

GAN으로 UV map을 생성하여 고주파 특징을 잡아내는데 UV map은 완벽하게 align되어 있다는 특징 덕분에 대략적으로 align 하던 GAN 모델들에서 겪는 학습 분포와 다른 데이터는 대응이 어렵다는 문제점도 해결된다고 한다.

 

이 GAN은 textrue parameter를 입력으로 받고 512 해상도의 출력을 갖는 PGGAN 구조이며 데이터는 10,000장의 고해상도 texture를 사용하여 학습하였다.

이후 단계에서는 먼저 학습한 Texture GAN 출력을 PCA shape model의 결과물에 입혀 입력 이미지와의 오차가 적은 parameter를 추정한다.

Loss Function

손실함수는 2개의 pretrained 신경망을 활용한 것 3종류와 pixel 공간의 손실 함수가 사용된다.

3D Reconstruction에서 중요한 것은 사진과 같은 모습의 한순간의 것이 아니라 생성물의 관측 시점을 바꾼다거나, 광원의 특성을 수정하고 입을 벌리거나 눈을 찡그려도 여전히 같은 사람으로 보여야한다는 것이다.

손실함수는 모두 이를 만족시키는 것들로 구성되어 있으며 identity loss, content loss, landmark loss, pixel loss이다.


Identity Loss & Content Loss

identity loss와 content loss는 pretrained Face Recognition 모델인 ArcFace를 사용하여 계산한다.

identity loss는 ArcFace 끝단의 feature 간 cosine 거리를 측정하며 수식은 다음과 같다.

$$L_{id} = 1 - \frac{F^n(I^0) \cdot F^n(I^R)}{\lVert F^n(I^0) \rVert_2 \lVert F^n(I^R) \rVert_2}$$

여기서 $I^0$는 입력 이미지, $I^R$는 rendering 결과물, $F^n$은 ArcFace 모델의 끝단 feature를 의미한다.

위 수식에 랜덤 pose, expression, light를 입력한 결과물 $\hat{I}^R$과 $I^R$을 입력한 것도 추가적인 identity loss로 사용한다.

 

content loss는 identity loss에서 고려되지 않는 부분을 위한 것이다.

예를 들자면 입력 이미지와 rendering 결과물이 분명 같은 사람이긴 하지만 표정, 나이, 조명, 턱을 든 각도 등 다양한 특징들이 고려되지 않기 때문에 이를 강제하기 위해 content loss를 사용하는 것이다.

여기서 나이와 같은 것은 3D Reconstruction에 있어 매우 중요한 요소이지만 ArcFace의 끝단에서는 이러한 특징은 약해지므로 중간 feature $F^j$에 대해 loss를 계산하며 수식은 다음과 같다.

$$L_{con} = \sum^n_j \frac{\lVert F^j(I^0) - F^j(I^R) \rVert_2}{H_{F^j} \times W_{F^j} \times C_{F^j}}$$

 

Pixel Loss

pixel loss에서 주목하고 있는 것은 광원에 대한 추정이다.

content loss에서 조명에 대한 것이 어느 정도 반영되겠지만 이미지 분야에서 지금껏 사용해오던 이 단순한 이미지 간의 손실 함수는 광원 추정에 아주 효과적이다.

광원 관련 parameter는 광원 방향, 광원 거리, 환경색, 광원색과 같은 것으로 pixel 값 자체를 민감하게 조정하는 것들이기 때문이다.

또 pixel loss는 ArcFace 입력에서처럼 112 해상도로 낮춰야 할 필요가 없어 그 자체로도 identity와 content에 대한 정보를 보존할 수 있도록 만든다.

GANFIT에서는 $l_1$ loss를 사용하며 수식은 다음과 같다.

$$L_{pix} = \lVert I^0 - I^R \rVert_1$$

 

Landmark Loss

landmark loss는 pretrained deep face alignment 모델을 사용하여 계산한다.

68개의 landmark의 위치에 대한 유클리드 거리를 줄이는 것이며 입력 이미지와 rendering 결과의 landmark가 같은 위치에 존재하도록 만들기 위한 것이다.

이 손실 함수를 통해 camera, shape, expression parameter가 조정되어 shape 추정을 도와주며, 자연스럽게도 입력 이미지와 rendering 결과가 align 되면서 다른 loss의 효율을 극적으로 높여준다.

Face Alignment 모델 $M$에 대해 수식은 다음과 같다.

$$L_{lan} = \lVert M(I^0) - M(I^R) \rVert_2$$

 

Model Fitting

GANFIT은 Feed-Forward 모델이 아님에 따라 먼저 landmark loss만 사용하여 align을 맞춘 후 다른 loss를 사용하여 shape, texture를 추정하는 방식을 사용하고 있다.

따라서 순서대로 다음의 loss로 optimize 한다.

$$\min_{p^r} \mathcal{E}(p^r) = \lambda_{lan}L_{lan}$$

$$\min_p \mathcal{E}(p) = \lambda_{id}L_{id} + \hat{\lambda}_{id}\hat{L}_{id} + \lambda_{con}L_{con} + \lambda_{pix}L_{pix} + \lambda_{lan}L_{lan} + \lambda_{reg}Reg({p_{s,e},p_l})$$

마지막 항은 shape, expression, light parameter의 편향을 방지하기 위한 regularization이다.

 

Multiple Image Input (i.e. Video)

같은 인물에 대한 여러 장의 사진이 있다면 한 장에 비해 정보량이 많기 때문에 더 좋은 결과물을 기대할 수 있어야 한다.

이 방법으로 여러 장의 이미지에 대한 backprop 결과에서 shape, texture parameter를 단순히 평균을 취하는 방법을 사용하고 있으며 수식은 다음과 같다.

$$p_s = \sum^n_i p^i_s, \quad p_t = \sum^n_i p^i_t$$

 

Experiments

Table 1. MICC dataset에서의 point-to-plane 거리값. 낮을수록 정확함.
Figure 4. MoFA-Test dataset에 대한 결과물. 다른 방법들은 PCA로 texture를 추정하므로 저주파 특징만 있지만 GANFIT은 GAN으로 texture를 생성하여 고주파 특징도 표현하고 있음을 볼 수 있다.
Figure 5. 각 loss 사용 유무에 따른 결과물 비교.
Figure 8. BAM dataset에 대한 결과물. 일러스트를 입력했어도 상당히 유사한 결과물을 얻음.
Figure 11. Challenging Results. 강한 조명, 머리카락에 의한 가림, 옆모습 등의 어려운 조건의 사진에 대한 결과물.

여러 가지 실험 결과들 중 몇 가지를 추렸다.

GAN을 사용하여 texture를 생성하면서 고주파 특징을 표현할 수 있음에 따라 훨씬 더 사실적인 묘사가 가능하여 정량적으로도 정성적으로도 기존의 SoTA 등 다른 방법들에 비해 훨씬 나은 결과를 보여준다.

 

결론

  • PCA 기법은 고주파 특징을 잘 표현하지 못하지만, GAN을 사용하여 이를 해결하였으며 3D Reconstruction에서 texture 생성에 최초로 GAN을 적용한 모델이다.
  • 기존의 어떤 방법들보다 사실적인 결과물을 보여주는 것 같다. 또 안경이나 머리카락 등 얼굴 일부가 가려도 꽤 좋은 결과물을 보여준다.
  • LSFM의 albedo로 Texture GAN을 학습했는데 이 albedo는 모든 texture가 합쳐져 있으며 얼굴 정면에 위치한 환경 광원이 있는 것으로 보인다.
    이는 specular map 등이 분리되어 색상만 표현하는 diffuse map과는 다른데 data를 구하기 어려워 확인하지 못한 것이 아쉽다.
  • GANFIT을 optimize 방식에서 feed-forward 방식으로 개선한 Fast GANFIT은 어떤 방식인지 궁금함.

댓글