Paper/Human

High-Quality Passive Facial Performance Capture using Anchor Frames

침닦는수건 2024. 7. 19. 18:18
반응형

내 맘대로 Introduction

 

High-Quality Single-Shot Capture of Facial Geometry 2010년 논문을 그대로 multiview video 입력으로 어떻게 확장할 수 있는지 고민해서 나온 2011년 디즈니 논문. 핵심 방법론은 2010년 논문이랑 똑같은데, 여기서 다루는 contribution은 각 reconstruction마다 tracking을 해서 하나의 topology로 엮는 것이다. 

 

optical flow를 또 disparity만큼이나 고도로 계산해서 모든 픽셀이 tracking이 되도록 설계했고, 이를 바탕으로 3D point가 모든 frame에 대해서 공통으로 사용되게 했다. 

 

완성도가 너무 높다. 2011년인데.

 

메모


1) 기존 알고리즘으로 매 프레임을 복원 일단 함.

2) anchor 프레임 설정 
-> 사람이 정한 기준 표정이랑 가장 유사한 애들 N개 선별 

3) anchor를 갖고 anchor 사이 tracking 수행

4) mesh propagation

5) mesh refinement (기존 알고리즘과 같은 방식)




1) single multiview shot으로 복원하는 것을 미리 돌려두기





사람이 한 장 기준 프레임을 정하고 이 기준 프레임과 가장 visually 유사한 anchor frame을 찾아둔다.

직관적으로도 이 anchor frame이 도움이 되는게, 기준 프레임과 비슷하게 생겼으므로 NCC 계산하는 것도 편하고 tracking할 때마다 초기화 지점처럼 기능을 해주기 때문에 의미가 크다. 

----------------
anchor frame을 선정하는 방식은 기준 프레임과 SIFT feature matching을 한 뒤 일정 threshold 이상으로 matching된 프레임은 전부 anchor frame이 된다.



기준 표정과 상당히 유사한 애들만 anchor frame이 됨.
기본적으로 optical flow를 구하는 방식은 block by block으로 나눠서 NCC 계산하는 방식.

근데 이게 기준 프레임 <-> anchor 프레임 간에는 쉬울 텐데 표정변화가 있는 기타 프레임에서는 잘 안될 것.

그래서 anchor >>>>-----------------<<<anchor 사이는 바로 계산하지 않고 anchor로부터 propagation되도록 진행함.
이것 역시 coarse-to-fine 방식. anchor frame 과 기준 프레임과의 correspondence는 이미지가 비슷하기 때문에 훨씬 쉽다.

optical flow는 disparity와 같이 특정 방향성이 없고 자유롭기 때문에 constraint가 더 적지만, 반대로 cyclic consistency가 사용 가능하다.

forward - backward optical flow match를 했을 때 제자리로 돌아오는지를 본다. 이게 일정 threshold 미만이면 제대로 matching되었다고 보고

아닐 경우, re-matching한다. 

한번 matching을 하고나면 disparity smoothness로 업데이트하듯이 NCC 향상과 주위 pixel (이번에는 상하좌우 다 가능)과의 smoothness 상승을 energy function으로 전체적으로 한 번 refine해준다. 

------------------
상하좌우 weighting해서 합칠 때는 depth 까지 활용해서 merge.
anchor frame이야 위와 같이 NCC + smoothness로 해도 전혀 문제없다. 이미지가 실제로 비슷하게 생겼으니까.

하지만 anchor frame이 아닌 애들은 위와 같이 하면 deformation이 심할테니까 수렴을 안할 것.

따라서 anchor >>>-----<<< anchor 양끝 anchor에서 propagation되는 식으로 matching을 수행해서 수렴시켰다.

deformation이 심하다한들 직전 프레임과는 굉장히 유사할 것이기 때문.

양방향에서 propagation하는 것이기 때문에 matching case가 2개 나올텐데, 이때는 smoothness가 더 큰 애를 선택했다.
mesh propagation은 기준 프레임 mesh가 역시 기준

+ 기준 프레임 -> all frame correspondence

---------------
기준 프레임 mesh projection -> correspondence따라서 다른 프레임으로 이동 ->다른 프레임에서 back projection으로 3D correspondence 찾기

-> 다른 프레임에서 여러개 correspondence가 나올텐데 (한 픽셀에 여러개 3dpoint가 맺힐 수도있으니), normal과 camera vector 각도 차이로 weighting해서 weighted sum.
------------
이 작업을 모든 ref. mesh vertex에서 하면 모든 3d correspondence가 완성되는 것.

3d correspondence가 찾아졌으니 이를 활용해서 전체 시퀀스를 종합적으로 보고 mesh를 한 번 더 refinement

1) 같은 시간일때, 다른 시점 간의 correspondence를 이미지로 내려찍어보면 normal같은게 비슷해야 함.

2) 시간이 가까울 때, normal 같은게 비슷해야 함. 

3) mesh 자체는 국소적으로 다 비슷해야 함. 
-> 3d point 주변 normal이나 거리가 비슷해야 함.

4) smooth해야 함
---------------
종합적으로 위와 같은 특성을 반영하기 위해서 

이전 논문 방식을 차용해서 NCC 향상 방향, Smoothness 향상 방향, mesoscopic 향상 방향으로 업데이트해준다. (같은 시점 내에서만)

-> 모든 프레임 동시에 사용해서 업데이트하므로, mesh가 다양한 표정, 각도에 일관되게 업데이트 됨. 
-> tracking을 한 이유기도 함.
다른 시점 간에서는 mesoscopic 뺏다. 표정 변화가 있는 와중에 모공, 주름 추정은 noise만 더할 뿐.

반응형