Paper/Human

3D Face Modeling via Weakly-supervised Disentanglement Network joint Identity-consistency Prior

침닦는수건 2024. 10. 18. 14:05
반응형

내 맘대로 Introduction

 

찾아보니 linear face model에서 더 나아가기 위해서 Auto encoding 컨셉으로 nonlinear face model을 만들고자 하는 시도가 굉장히 많았던 것 같다. 크고 작은 차이가 있지만 결국 shape latent, expression latent를 어떻게 잘 구하느냐, 어떻게 잘 decoding하느냐, 어떻게 데이터를 구성하느냐 틀을 벗어나지 않는 형태다.

 

이 논문 역시 똑같이 VAE로 shape/expression latent space를 만들고 decoding하는 논문인데, id가 같은 SCAN들이 그룹핑되어 있는 데이터를 활용해서 shape, expression을 어떻게 decoupling할지를 고민한 내용이 들어갔을 뿐 전체 틀은 같다. 

 

메모


VAE 인데 encoder가 shape, expression용으로 나뉘어 있다는 것은 새로운 내용이 아니고, Neutral Bank module, second order loss를 추가해서 decoupling에 힘썼다는게 핵심

근데 다 읽고 보니까 그렇게 매력적인 트릭들인지는 모르겠다.

neutral bank module은 사실 상 id 별로 평균 낸 geometry에서 벗어나지 않도록 하는 것이고

second order loss는 expression parameter의 크기가 실제 mesh 변형 크기와 비례하도록 하는 loss인데 음... 

두 말할 것 없는 VAE

VAE 구조적 특성 상 shape, expression latent는 N(0,1)을 따른
다. 따라서 직접 조절하기 편한 범위 안에 있다. 

근데 이걸 합치는 순간 shape+expression latent는 N(0,1)이라는 가정이 깨짐

shape+expression latent도 결과적으로 또 N(0,1)을 따를 수 있도록 하는 트릭을 집어넣었다. 그게 re-coupling.

근데 결국 MLP 반복이다. 

1) MLP(shape), MLP(expression) 서로 matmul

2) 결과를 N(0,1)로 맵핑 

3) 또 앞에 LEARNABLE MATRIX 곱함

--------------
결과적으로 결국 network로 한건데 뭐가 특별한건지 모르겠다.


id consistency를 유지하는데 활용하기 위해선 neutral gt가 필요한데 이를 pseudo GT 형태로 만들어서 사용했다. 

단순히 말하면 id가 같은 여러 표정 mesh를 average하면 무표정이 나와야한다는 얘기. 

전체 데이터에 대해서 mean을 미리 계산해둘 수도 있지만 모종의 이유로 (progressive lerarning, generality 등 납득은 안감) moving average로 무표정 mesh를 만들어두었다고 함.


VAE loss 그대로 사용하고

무표정 pseudo GT와 만들어낸 neutral 표정하고는 갖도록 강제.


expression latent 크기와 실제 mesh 변형 정도가 비례하도록 만들고 싶었다고 함.

따라서 latent / mesh 간의 gradient를 이용해서 비례식을 세우고 loss로 활용함
-> 무슨 큰 의미가 있는지는 모르겠음.
-> 그냥 latent range를 좀 더 컨트롤하겠다는 것 정도인 듯.

뒤에 결과 보니까

neutral mesh 복원 성능이 올라가는 것으로부터 간접적으로 expression parameter를 더 개별적으로 만드는데 기여했다는 논리로 효과를 보임.



VAE의 posterior distribution은 mu, sigma를 갖는 multivariate gaussian인데 이것도 결국 N(0,1)로 가도록 해서 한 번 더 정리했다는 것 같다.

반응형