논문 리뷰

[논문 리뷰] Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network

망나 2021. 6. 17. 22:35

논문 링크 / 공식 코드

 

2018년 ECCV 2018에서 발표된 논문입니다. 3년전에 발표된 논문이지만 여전히 여러 데이터셋에서 아래와 같은 좋은 성능을 보여주고 있습니다. 논문의 핵심 내용에 대해서 간략히 리뷰해보도록 하겠습니다.

 

논문의 핵심 컨트리뷰션은 다음과 같습니다.

  • end-to-end 방법으로 두 가지 문제인 face alignment와 3D face reconstruction을 함께 해결합니다.
  • 직접적인 3D facial structure 예측을 위해 UV position map이라는 새로운 표현을 만들었습니다.
  • 모델 훈련시 position map의 각 point에 다른 weight를 부여하는 weight mask를 사용하여 모델의 성능을 향상시켰습니다.
  • 최종적으로 100FPS의 속도로 2D facial image로 부터 3D face reconstruction와 alignment를 수행하는 light-weighted framework를 제공합니다.
  • AFLW2000-3D와 Florence 데이터셋으로 실험했을 때 기존의 state-of-art 방법들모다 25%의 성능 향상을 이루어 냈습니다.

위 컨트리뷰션 리스트에서 보듯 이 논문에서 우리가 이해하고 얻어가야할 부분은 UV position mapweight mask 2가지 인 것 같습니다. 차근차근 논문의 핵심 방법론을 정리하며 알아가 보겠습니다.

 

 

 

[ 3D Face Representation ]

UV position map은 UV 공간의 모든 모든 point들의 3D position들을 기록한 2D image입니다. 이전까지 3D 공간에서 매개변수화된 2D 이미지인 UV 공간은 질감 (texture map), 2.5D geometry (height map) 그리고 3D 얼굴 메시간의 대응 정보를 표현하기위해 사용되었습니다.

 

이전 작업들과는 다르게 본 논문에서는 UV 공간을 3D 얼굴 모델의 포인트들의 3D 좌표 정보를 저장하기 위해 사용됩니다. 3D face point cloud를 Left-handed Cartesian Coordinate 시스템으로 정의합니다. 이때, 3D face point cloud의 ground truth를 x-y 평면에 투영했을 때 2D 이미지의 얼굴과 정확히 일치합니다. 글로 읽는 것 보다 아래 이미지를 보면 조금 더 쉽게 이해할 수 있습니다.

position map에서 point들의 정보들을 보존하기 위해서 3DMM (3D Morphable Model)을 기반으로 UV 좌표를 생성합니다. 2D 얼굴 이미지로부터 3D 구조를 바로 회귀하기 위해서 end-to-end 학습이 필요로 합니다. 학습에 사용된 데이터는 300W-LP로 3DMM 파라미터에 맞는 이미지가 60K 넘게 포함된 데이터셋입니다. 데이터셋의 3DMM 파라미터는 Basel Face Model를 기반으로 되어 있어 이를 사용하기 위해 BFM에 해당하는 UV 좌표를 사용합니다. 좀 더 구체적으로, conformat Laplacian 가중치와 Tutte embedding을 계산하는 UV 좌표를 사용한다고 합니다. 

 

 

 

[ Network Architecture and Loss Function ]

네트워크 구조는 위 그림에서 보는 것과 같이 encoder-decoder 구조를 사용합니다. encoder에서는 하나의 convolution layer에 10 residual block들을 사용하여 256x256x3의 입력 이미지에서 8x8x512의 feature map을 얻어냅니다. decoder에서는 17개의 transposed convolution layer들을 사용하여 256x256x3의 예측 position map을 생성합니다. 모든 층에서 kernel size는 4를 사용하고 활성화 함수로 ReLU를 사용합니다. 출력값인 예측 position map은 전체 3D 정보와 함께 dense alignment 결과를 포함하기 때문에 다른 추가적인 네트워크는 필요하지 않다고 합니다.

 

네트워크 학습을 위해 새로운 loss function을 제안합니다. 보통 Mean square error (MSE)를 사용하는 경우가 많지만 MSE는 모든 포인트들을 동일하게 취급하는데 얼굴의 중앙 부분은 다른 영역과는 다른 특징을 가지고 있고 따라서 position map의 모든 포인트들에 대해서 적절한 학습이 불가능하다고 합니다. 그렇기 때문에 loss function에 weight mask를 사용한다고 합니다. 이미지 영역을 4가지로 나누고 각 영역마다 다른 weight를 적용합니다. 



weight mask는 위 그림과 같습니다. 보통 68개의 얼굴 랜드마크 (영역 1)에 가장 높은 가중치를 주고 그 다음 눈, 코, 입 (영역 2) 그리고 다른 얼굴 부분 (영역 3) 마지막으로 목 부분 (영역 4)으로 논문의 실험에서는 각 영역에 대해서 16:4:3:0의 가중치를 부여했다고 합니다.

loss fuction은 다음과 나타낼 수 있습니다.

 

 

 

[ Experimental Results ]

성능 실험을 위해서 3가지 데이터셋 AFLW2000-3D, AFLW-LFPA, Florence를 사용했습니다.

3D face alignment 결과입니다. 빨간색인 ground truth 보다 더 정확하게 예측한 결과들도 확인할 수 있습니다.

 

3D face reconstruction 결과입니다.