ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DECA: Detail Expression Capture and Animation 논문 정리
    논문 정리 2024. 4. 15. 16:37

    개인 정리

    github: https://github.com/yfeng95/DECA

     

    GitHub - yfeng95/DECA: DECA: Detailed Expression Capture and Animation (SIGGRAPH 2021)

    DECA: Detailed Expression Capture and Animation (SIGGRAPH 2021) - GitHub - yfeng95/DECA: DECA: Detailed Expression Capture and Animation (SIGGRAPH 2021)

    github.com

    • DECA는 2021 SIGGRAPH에 게재된 3D face reconstruction 분야 논문이다.
    • 발표 당시 복원된 3D face의 shape을 평가할 수 있는 NoW benchmark에서 SOTA성능을 보였다.
    • Coarse 3D face 뿐만 아니라, 애니메이션이 가능한 detailed 3D face (주름, 모공 포함)를 모델링하는 기법을 제안하였다.
    • 2023년에 발표되는 논문에서도 DECA를 활용하거나 DECA를 기본 베이스로 사용하는 논문이 다수 존재할 정도로 영향력이 높은 논문이다.
    • 최신 3D face reconstruction 기술을 이해하기 위해서는 DECA 논문 분석을 기초로 시작하는 것도 좋은 방법인 것 같다.

    Abstract

    최근 단안 영상 3차원 얼굴 복원 기법들은 geometric detail을 잘 복원할 수 있었으나, 표정에 따라 변화하는 주름을 모델링 하는 데에는 한계가 있음이 확인 됐다. (Expression-dependent wrinkles)

    High-Quality face scan을 학습하여 주름을 생성하는 방법을 보였으나 이는 In-the-wild image에 적절히 적용되기 어렵다. 

    본 논문에서는 3D face shape 및 Animatiable한 detail을 생성할 수 있는 모델인 DECA를 제안한다.

    DECA는 Detailed Expression Capture and Animation의 약자로, 다음과 같은 특징을 가진다.

    - 저차원의 개인 특화 주름 파라미터와 표정 파라미터로부터 강건하게 UV displacement map을 생성

    - 단일 이미지로부터 details, shape, albedo, expression, pose, illumination, camera 파라미터를 예측

    - In-the-wild 이미지로부터 학습 + 3D Ground-truth가 필요 없는 학습 방법

    - 벤치마크 두개에 대해 SOTA 성능 달성 

     

    Introduction

    단안 단일 이미지로부터 3차원 얼굴 복원 기법은 다양한 어플리케이션을 가능하게 한다.

     

    최근 기법은 Coarse face shape 생성에는 적당히 좋은 성능을 보였으나, Detailed face shape 복원에는 한계를 보였다.

    표정에 의존되는 주름과 같은 디테일 복원은 감정 분석과 같은 다양한 분야에서 꽤 필요한 파트이다.

     

    Detailed facial geometry 복원 기법에는 다양한게 있었으나, 1) 고해상도 3D 스캔 필요 2) 제한된 환경에서의 이미지에만 적용 가능 등의 문제로 인해, In-the-wild 이미지와 같은 unconstrained images에 적용이 힘들다는 한계를 가졌다.

     

    해당 논문에서 제안하는 DECA (Detailed Expression Capture and Animation)은 in-the-wild image에 대해, 2D-to-3D 지도 학습 없이도 Animatable한 displacement model 생성이 가능하다.

    1) DECA는 저차원으로 구성된 파라미터 (subject-specific detail parameter + expression parameter)로부터 UV displacement map을 생성할 수 있다.

    2) DECA의 encoder 기반의 regressor는 이미지로부터 개인 특화된 detail, albedo, shape, expression, pose, lighting 파라미터를 추론하며, FLAME을 coarse model로 활용하고 이에 기반한 detail model을 만든다.

     

    기존 기법들 또한 디테일 복원은 가능했으나, Animatable하지 않다는 한계가 있었다.

    DECA는 이를 극복하기 위해서는 Expression-dependent detail과 Person-specific detail을 분리할 수 있어야 함을 강조했다.

    이를 해결하기 위해, DECA에서는 학습 과정 중 'Detail consistency loss function'를 사용 할 것을 제안한다.

     

    Preliminaries 정리

    더보기

    Geometry prior

    DECA에서는 FLAME을 활용한다.

    FLAME은 통계적인 3DMM으로, Linear identity shape, expression space와 pose-dpendent corrective blendshape을 가진다.

    FLAME의 온라인 interactive model (https://flame.is.tue.mpg.de/interactivemodelviewer.html)

    FLAME에 대해 간략히 설명하자면, FLAME은 5023개의 버텍스로 이루어진 3DMM이다.

    여기서 3DMM은 3D Morphable Model의 약자인데, 이는 '변형가능한' 얼굴 모델을 의미한다.

    3DMM은 통계적으로 대량의 3D (or 4D) 스캔을 학습하여 만들어진 통계적인 모델로, 각 파라미터 (얼굴형, 표정, 포즈)에 대한 선형 공간이 존재하고, 이 선형 공간의 조합을 통해 얼굴을 표현 할 수 있다는 논리로 만들어진 모델이다.

    이 중에서도 FLAME은 얼굴형, 표정, 포즈를 분리하여 적은 파라미터로 표현력 높은 얼굴을 만들어 낼 수 있다는 강점을 가진다.

    자세한 설명은 FLAME 홈페이지를 참고하도록 하자.

     

    Appearance model

    FLAME 자체에는 appearance model (얼굴의 텍스처)를 포함하진 않느다.

    하지만 이전 Basel Face Model (FLAME 이전에 3DMM 중 하나였음)을 위한 linear albedo model을 FLAME의 albedo로 변환 할 수 있게 되어 이를 활용한다.

    Linear albedo 역시 3DMM과 유사하게, 선형파라미터를 통해 얼굴의 텍스처를 생성하는 모델이다.

    즉, 얼굴 텍스처에 대한 선형 파라미터의 조합과 Linear albedo model을 통해 전세계인의 얼굴 텍스쳐를 표현 할 수 있다. (주로 서양 사람 데이터가 많긴 했던 것으로 기억함)

    AlbedoMM

     

    Camera model

    3D Face reconstruction 분야를 처음 접한다면 camera model의 역할과 의미가 무엇인지 햇갈릴 수 있다.

    컨트롤된 환경에서의 이미지(연구실 내에서 촬영된 이미지)를 보면, 인물과 카메라 사이 거리가 거의 고정적이다.

    하지만 In-the-wild 이미지는 카메라와 얼굴 사이의 거리가 다양하기 때문에 이미지 내의 얼굴 크기와 위치가 다양하게 나타나게 된다.

    "입력 이미지 -> 3차원 얼굴 생성 -> 3차원 얼굴과 카메라의 위치 관계 파악 -> 3차원 얼굴과 카메라 위치를 통해, 생성된 3차원 얼굴을 이미지로 투영 -> 입력 이미지와 비교 과정"에서,  우리는 입력 이미지와 최대한 유사한 3차원 얼굴을 생성하기 위해서는 3차원 공간상의 카메라에 대한 정보가 필요하다.

    이를 위해 필요한 정보가 카메라 모델이다.

    본 논문에서는 3D model (M), orthographic 3D-2D projection matrix (Pi), isotropic scale (s), 2D translation (t) 중에서도, s와 t를 카메라 모델로 사용한다.

    3D Model과 projection matrix는 고정되었다고 할 때, 카메라와 얼굴의 거리, 카메라의 상하좌우 움직임을 가진다면 어느정도 카메라에 대한 표현이 가능하다. (실제 3D graphics에서는 더 많은 파라미터가 사용됨)

     

    Illumination model

    여기서 사용하는 lighting model은 Spherical Harmonics (SH)이다.

    이에 대해 자세하게 분석한 적은 없으나, 모델 학습과 실험 과정에서 보았을 때 이 파라미터는 '광원과 물체의 상대적인 위치'를 나타내는 것으로 보인다.

    3차원 모델은 이 Lighting 파라미터에 따라 그림자가 생기고, 빛이 반사된다.

     

     

    Texture rendering

    3D shape, expression, pose, albedo, lighting, camera가 있다.

    우리는 FLAME으로 입력 이미지의 얼굴과 동일한 모양, 표정, 포즈를 가진 3차원 얼굴을 복원할 수 있으며,

    Albedo로 입력 이미지의 얼굴과 동일한 텍스처를 생성할 수 있고,

    Lighting으로 이미지와 동일한 광원 정보를 얻을 수 있고,

    Camera를 통해 3차원 얼굴을 2차원 평면으로 투영할 수 있다.

    이러한 과정이 꽤 높은 정확도로 진행된다면 우리는 입력 이미지와 동일한 렌더링 이미지를 생성할 수 있다.

    Method

    DECA는 개인의 얼굴에 대한 관찰을 통해, 표정에 의존되는 동적인 디테일개인에게 존재하는 정적인 디테일이 분리되어 존재한다는 점에서 아이디어를 착안하였다.

    주요 과정은 Coarse stage와 Detail stage로 나뉘게 되며, 각 stage를 살펴보자.

    DECA training 및 animation 과정. Training 과정은 파란색과 빨간색을 통해 Coarse와 Detail이 구분된다.

    Coarse stage

    우선 입력 이미지로부터 ResNet50 기반 인코더를 통해 FLAME의 shape(100), expression(50), pose(6) 파라미터와, albedo(50), camera(3), lighting(27) 파라미터를 추론한다. (각 파라미터 차원 괄호로 표시)

    이미지로부터 앞서 언급된 236개의 파라미터를 추론한다면, FLAME, renderer, albedo 등의 모델을 통해 I_r 과 같은 렌더링 이미지가 바로 생성될 수 있는 것이다.

    하지만 이러한 인코더를 학습하기 위해서는 다양한 손실 함수가 필요하다.

    Landmark re-projection loss

    Landmark 기반의 손실함수는 3D face reconstruction의 초기에서부터 활용됐던 함수이다.

    Landmark란? ⬇️

    더보기

    우선 Facial landmark란 얼굴의 특징점들에 대한 인덱스와 위치를 의미한다.

    주로 68개 모델을 사용하며, 최근에는 구글의 mediapipe를 통해 468개까지 사용할 수 있다.

    (a) 68개 랜드마크 모델, (b) 468개 랜드마크 모델

    최근 딥러닝 성능의 향상으로 랜드마크의 정확도가 상당히 높아질 뿐 아니라, 엄청 많은 수의 랜드마크까지 찾을 수 있게 됐다.

    해당 분야의 연구 당시 성능이 좋았던 모델은 HRNet이라는 모델이었는데, 최근에는 SPIGA부터 시작해서 더 많은 모델이 나오는듯 하다..

    Landmark re-projection loss는 우선 2개의 랜드마크가 필요하다.

    1) Pseudo ground-truth landmarks: 입력 이미지로부터 상당히 정확한 Landmark detection model을 통해 예측된 랜드마크. 3D Face reconstruction 과정에서 이를 GT 데이터로 활용한다.

    2) FLAME landmarks: 5023개 버텍스를 가진 FLAME 모델의 표면에 임베딩된 랜드마크들. FLAME 표면에 임베딩 되었기 때문에 3D 좌표를 가진다.

    우리는 FLAME landmark를 예측된 카메라 모델을 통해 2차원으로 투영하여, 1) 의 랜드마크와 비교하여 에러를 계산하게 된다.

    Landmark re-projection loss 예시

    Landmark model 변경과 실제 실험 결과 ⬇️

    더보기

    DECA에서 사용한 Landmark detector는 FAN 이라는 모델이다 (https://github.com/1adrianb/face-alignment)

    DECA에서 사용한 이 landmark detector를 실제로 사용해보면 Landmark 위치가 조금 불안정한 감이 있다.

    FAN Landmark detection 결과. 눈꺼풀이 감겼으나 랜드마크가 부정확하게 잡혔다.

    불안정한 landmark detector의 결과를 Pseudo GT로 사용하다 보니, 눈이 감긴 이미지에 대해서 DECA의 추론 결과가 눈을 잘 못감는 사태가 있음을 확인했다.

    이 외에도 입의 모양에 대해서도 부정확함이 확인됐으며, DECA를 영상 데이터에 적용할 시 3D Face가 심하게 흔들리는 현상까지 발견됐다.

    연구 당시 이를 보완하기 위해 더 정확도가 높은 Landmark detector를 사용하기로 하였고, 이 당시 SOTA 성능을 보인 HRNet을 사용하기로 결정했다 (https://github.com/HRNet/HRNet-Facial-Landmark-Detection)

    HRNet Landmark detection 결과. 눈꺼풀의 위치가 더 정확하다.

    FAN보다 HRNet의 모델 사이즈가 더 컸기 때문에 GT label 생성 과정에서 시간이 조금 더 걸렸지만, 학습 데이터셋 생성 당시 label 생성을 진행하기 때문에 실제 학습 과정에서의 시간 차이는 없었다.

    (Top) FAN을 사용한 학습 결과, (Bottom) HRNet을 사용한 학습 결과

     

    동일한 이미지에 대해서 눈의 위치와 입의 크기가 확실히 차이가 남을 볼 수 있다.

    Eye closure loss

    앞서 설명한 Landmark re-projection loss같은 경우 각 인덱스에 맞는 랜드마크 좌표 사이 거리를 손실로 사용하였다.

    Eye closure loss는 Pseudo GT landmark에서의 눈꺼풀 위아래 거리와, 2차원 투영된 FLAME landmark에서의 눈꺼풀 위아래 거리를 손실로 사용한다 (상대 거리를 활용함).

     

    Photometric loss

    Photometric loss는 입력 이미지와 렌더링 이미지간의 픽셀 값 차이를 손실로 사용하는 손실 함수이다.

    이를 통해 적절한 Albedo가 생성될 수 있을 것이다.

    하지만 이 과정에서 정확히 "얼굴 부위"만을 비교해야 한다.

    이를 위해 Face segmentation model을 활용하는데, 이는 얼굴의 영역에는 1, 얼굴이 아닌 영역(손이나 머리카락으로 가려진 영역 포함)에는 0으로 맵핑 된 결과를 제공한다.

    이를 통해 입력 이미지와 렌더링 이미지 간의 픽셀 값 차이를 계산하는 과정에서 얼굴 영역만을 비교하게 되며, 이는 Occlusion과 같은 상황에서 Robust 할 수 있게 돕는다.

    Face segmentation 결과. (Red: face 영역, Blue: 이외 영역)

    Face segmentation 기법 변경 ⬇️

    더보기

    DECA에서는 Nirkin의 Face segmentation model을 활용했다. (https://github.com/YuvalNirkin/face_segmentation)

    해당 Github의 Issue 탭에서 볼 수 있듯이, 설치에서의 오류 뿐 아니라 실행시 정확도가 너무 낮다는 문제가 다수 발생했었다.

    환경을 동일하게 맞췄음에도 불구하고 종종 오류가 발생하였고, 당시 시간이 부족하여 대체할 수 있는 방법을 찾을 수 밖에 없었다.

    나는 Face segmentation 기법을 찾아보던 중, Face parsing 기법을 찾게 되었다. (https://github.com/hhj1897/face_parsing)

    이 기법은 Face segmentation 뿐 아니라, 얼굴 영역 별 클래스 분류까지 지원했다. (눈썹, 입, 코 등을 분리 가능)

    Face parsing 결과

    이런 방식을 사용한다면 DECA의 Photometric loss를 적용할 때, 특정 부위에 대해 더 높은 가중치를 제공할 수 있을 것이다.

    하지만 당시 DECA에 대한 테스트 목표는 Realistic한 렌더링 이미지 생성 보다는 Expressive 3D face model 생성 까지였기 때문에, Photometric loss 사용을 하지 않아도 됐었다.

    차후 Texture에 대한 학습이 필요한 경우 위의 방법을 적용한다면 특정 부위에 더 높은 가중치를 둘 수 있도록 할 수 있다.

    Identity loss

    Identity loss는 기학습된 face recognition model을 활용하는 손실 함수로, 입력 이미지에 대한 face recognition model의 output과, 렌더링 이미지에 대한 face recognition model의 output을 비교하는 함수이다.

    이러한 손실 함수는 3차원 얼굴 복원 분야에서 주로 사용되었던 "인식 손실 함수 (Perceptual loss function)" 중 하나로, 시각적인 인식을 모방하는 딥러닝 모델을 통해 두 이미지가 최대한 인식적으로 유사하게 되도록 장려하는 함수이다.

    Face recognition model을 사용한다는 점에서 입력 이미지와 렌더링 이미지가 동일한 인물처럼 보이도록 장려하게 된다.

     

    Shape consistency loss

    동일한 인물에 대해 서로 다른 이미지 I, J가 있다고 할 때, 이에 대해 예측한 Shape parameter는 동일해야 하는 것이 이상적이다.

    기존의 기법에서는 두 이미지로부터 추출된 Shape 파라미터가 동일하게 되기 위해, 두 이미지로부터 추출된 Shape 파라미터의 차이를 손실 계산에 활용하였다.

    DECA에서는 이와 다르게, 두 이미지로부터 추출된 전체 파라미터셋이 있을 때, Shape 파라미터를 서로 교환하여 나오는 손실 값을 활용하여, 한 인물의 두 이미지가 동일한 shape 파라미터를 출력할 수 있게 장려한다.

     

    Regularization

    이는 Shape, Expression, Albedo 파라미터의 크기를 손실 함수에 더해줘서, 모델이 한 파라미터에 너무 과하게 피팅되지 않으면서도 학습 과정에서 크기가 너무 급격히 설정되지 않도록 돕는다.

     

    Detail stage

    앞서 Coarse stage로부터의 최종 출력은 Coarse 3D mesh, Albedo, Lighting, Camera 파라미터 등이 있었다.

    Detail stage는 입력 이미지로부터 Detail에 대한 UV displacement map을 출력하는 것이 목표이다.

    Displacement map (변위 맵)이란? ⬇️

    더보기

    Mesh의 표면 상에서 표현하기 힘든 디테일한 굴곡(들어가고 나감)을 표현하기 위한 Map을 의미한다.

     

    Displacements map과 detail shape

     

    DECA에서는 Detail을 추론을 위한 Encoder-Decoder 구조를 활용한다.

    여기서 Detail encoder는 앞서 사용된 Coarse encoder와 동일한 ResNet50이며, 해당 인코더는 디테일에 대한 128차원의 latent code를 출력한다.

    Detail decoder는 앞서 추론된 128차원의 latent code와, expression, pose 파라미터를 입력으로 d*d 차원의 normal map을 출력한다.

    생성된 displacement map은 normal map과 비슷하게 Renderer의 입력으로 사용되어 최종적으로 detail shape을 포함하는 mesh를 출력하게 된다.

     

    Detail stage에서는 Coarse stage에서 학습된 Coarse encoder의 학습 파라미터는 고정된 상태로 진행된다.

     

    Detail photometric loss

    앞서 Coarse stage에서 언급된 Photometric loss와 동일하다. 다만 Detailed shape이 적용되어있다.

     

    ID-MRF loss

    DECA의 저자가 high frequency를 얻는 과정에서 가장 contribution이 높은 손실 함수로 지목한 것이 바로 이 ID-MRF loss이다.

    이 손실 함수는 Image reconstruction (이미지의 가려진 부위를 고해상도로 복원하는 태스크)에서 제안되었다.

    이 손실 함수는 입력 이미지와 렌더링 이미지로부터 사전 학습된 신경망(VGG19)을 통과하여, 각각 다른 레이어에 있는 가장 가까운 feature patch들을 추출하고 이를 비교하는 방식이다.

    해당 논문에서는 UV space에서의 얼굴 영역에 대한 MRF loss를 계산한다.

    ID-MRF loss

    ID-MRF loss의 실패 ⬇️

    더보기

    Detail stage의 학습을 재현하는 과정에서, ID-MRF loss가 정상적으로 작동하지 않음을 확인했다.

    내부 계산 과정을 확인 했을 때 논문과 동일하며 전혀 문제가 없었음에도 불구하고 Loss 계산 결과가 NaN으로 출력되었다.

    이는 Cosine similarity 계산 과정에서의 문제로 보이는데, 패치의 일부 영역이 Normalization 이후 Inf로 변하게 되고, 이를 분모로 가져가는 순간 에러가 발생하는 것으로 보인다.

     

    임시 방편으로 ID-MRF loss를 제외하고 나머지 손실함수로만 학습을 진행하였는데, 아쉽게도 점점 displacement map이 모두 0으로 변하면서 detail이 모두 사라지는 결과를 가져오고 말았다.

     

    최종적으로 ID-MRF loss의 에러로 인해 Detail stage에 대한 재현은 실패하고 말았다.

    이러한 문제는 DECA의 github issue tab에서도 발견되는데, (https://github.com/yfeng95/DECA/issues/175) 아직 해결되지 않은것으로 보인다.

    EMOCA에서 DECA와 동일한 detail stage를 적용하여 좋은 결과를 보였는데, 어떻게 이 문제가 발생하지 않았는지.. 어렵다..!

    Soft symmetry loss

    이 손실 함수는 self-occlusion (얼굴 가려짐)에 robust한 성능을 위해, 생성된 Displacement map이 대칭적으로 출력되게 만드는 손실 함수이다.

    이를 통해 Extreme poses (너무 큰 포즈로 인해 한쪽 얼굴만 나오는 경우), 혹은 머리카락으로 인한 가려짐 등의 상황에 대해서도 어느정도 균일하고 Robust한 displacement map을 출력하게 된다.

     

    Detail consistency loss

    이 역시 DECA에서 가장 contribution이 높은 손실 함수이며, Shape consistency loss와 구성과 아이디어가 유사하다.

    한 인물에 대한 서로 다른 이미지가 있을 때, Person-specific한 detail을 포함하는 Detail encoder의 latent code를 서로 교환하더라도 손실이 유지되게 하는 방식이다.

    이를 통해 Person-specific detail과 Expression-dependent detail이 구분되게 되며, Animatable한 detail이 생성될 수 있게 되는 것이다.

     

    Experiments and Ablation study

    NoW benchmark, Stirling benchmark에 대해 State-of-the-art 성능을 달성하였다.

    현재는 다른 기법들이 높은 순위를 차지하였지만, 여전히 DECA의 detail 복원 기법을 활용하는 등의 형태를 보이고 있다.

    아직까지도 DECA의 기법을 넘어서는 디테일 복원 기법은 없는 듯 하다.

     

    Quantitative comparison
    Qualitative evaluation (detailed face)
    Qualitative evaluation (Coarse face)

     

     

    본 논문의 Ablation study에서 볼 수 있듯 각각의 손실 함수가 가지는 영향과 효과가 확실하며 설득력이 있다.

    실험적으로도 잘 쓰여진 논문인 것 같다.

     

Designed by Tistory.