반응형
내 맘대로 Introduction
개인적으로 또 역작이라고 생각하는 논문을 발견했다. 2016년 ACM에 게재된 논문이라 오래 되긴 했지만 그 깊이와 성능은 오히려 요즘 쏟아져 나오는 논문들을 부끄럽게 만들기 충분한 수준인 것 같다. 이 당시에는 디테일을 설명하지 않아도 모두가 이해하고 수준이어서 그런지 디테일이 빠져있어, 조금 논문이 어렵게 느껴지지만 그럼에도 불구하고 아이디어가 좋다는게 느껴진다.
monoculde video로 부터 animatable head를 복원해내는 논문인데, 위 사진에서도 볼 수 있다시피 주름까지 잡아내는 정확도를 자랑한다. 더 대단한 건 딥러닝 한 방울도 들어가지 않은 최적화로 푼 논문이라는 점.
핵심 아이디어는 coarse-medium-fine 3 layer를 이용한 3단 복원이고 각각 3DMM fitting - update - refinement 과정을 담당한다. 요구되는 수학이 많아 정확히 이해하지 못했으나, 다음에 다시 읽을 때 빠른 따라잡기를 위해 메모를 남겨둔다.
위와 같은 표현들도 좋았다. 그냥 VR/AR 어쩌구 하면서 칸 채우기용 introduction보다, 조금 더 문제를 제대로 인식하려는 표현들이 섞여있는 introduction.
*200번째 논문 기록
메모
|
0) 2D 66 landmark detection + refinement (detail 안 나와있음.) 1) 3DMM 갖고 generic model fitting (shape, expression, light, albedo) 2) Manifold harmonic을 이용한 mesh update + albedo update 3) deformation gradient 를 이용한 detail update. ---------------- 논문 구조가 재료를 소개하고, 방법을 소개하고, 디테일을 설명하는 순서다. 생략도 많아 조금 불친절하다고 느낄 수 있으나, 이 논문에서 생략이 많다고 느끼는 것은 내가 멍청하다는 뜻이므로 부끄러워 하는게 맞는 것 같다. |
먼저 입력 비디오를 촬영한 1대 카메라의 intrinsic와 head pose를 풀어둔다. 2d keypoint를 갖고 SfM 도는 것인데, 변화하는 2d keypoint를 갖고도 sfm을 풀 수 있는 이유는 3D model parameter도 같이 풀기 때문이다. reprojected 3d model keypoint와 2d keypoint가 맞아떨어지도록 강제하기 때문에 수렴할 수 있다. 안그러면 2d keypoint 는 deform되므로 수렴 안함. |
|
3DMM model fitting으로 문제를 풀어나가기 때문에 모든건 vertex 단위로 정의되어 있음. vertex 별로 색상을 정의할 때 1) albedo, c (reflectance) 1개 2) SH, b ( irradiance) 27개 3) normal, n 3개 로 정의함 |
가장 첫단계인 coares level은 기존 3DMM fitting 과정이다. 이 때 사용한 과거의 모델은 지금의 faceverse와 비슷하다 shape parameter와 동시에 색상(albedo, reflectance)까지 담고 있는 모델이다. 따라서 shape, alpha / reflectance, beta로 정의되어 있고 원리는 PCA다. 여기에 표정 정보를 추가해야 하므로, expression parameter, delta를 추가했다고 한다. 이 때 delta에 해당하는 PCA는 facewarehouse 데이터에 피팅한 결과로 만들었다고 함. 따라서 최종 alpha, beta, delta로 정의되는 3DMM 지금으로썬 FLAME+ texture 혹은 유사 faceverse라고 보면 될 것 같다. (faceverse는 shape과 expression이 합쳐져 있으므로 엄밀히 말하면 조금 다름) |
3DMM fitting이 끝나서 coarse level이 완료된 이후에 alpha, beta, delta는 고정. 그리고 추가로 surface displacement(여기선 corrective)를 만들어 내는 작접을 한다. (medium level) 그 방식은 manifold harmonics를 사용한 방식 나도 이게 뭔지 정확히 모르는데 대충 직관적으로 이해하면, mesh 형상을 표현할 때 사용되는 일종의 basis집합이다. 이 MH의 coefficient를 찾으면 mesh 형태를 알 수 있는 것. 마치 SH를 사용해서 color를 표현하는 것과 비슷한 원리. MH를 이용하면 디테일까진 아니지만, mesh 표현할 때 사용하는 basis를 활용해서 업데이트하는 것이므로 조금 더 디테일한 부분을 잡을 수 있개 된다. -------------------- MH를 이해하려면 너무나 많은 것을 이해해야 하기 때문에 포기했다. differential manifold, riemann manifold까지 가야 한다. --------------------- 따라서 그냥 이해하길, MH basis는 주어졌고, 그 coefficient인 tou를 최적화로 찾아주는 것. 최적화 energy function은 나중에 나옴. |
|
마지막 fine level detail은 이미지 1장 1장과 비교해가면서 최종 fine detail을 찾아내는 단계다. 여기서 주름을 잡아낸다. 그 방법은 mesh face마다 deformation gradient를 이용하는 방식이다. face 단위로 변화 전 후 3개 vertex가 만들어내는 jacobian을 뜻한다. 이미지와 photometric consistency를 계산하는 과정에 이 jacobian을 계산해내고, 이 jacobian 방향대로 surface를 추가로 더 움직여주는 느낌. |
최적화 순서는 fine detail 전까지 먼저 풀고, fine detail은 전부 다 고정하고 마지막에 풂. |
energy function, 즉 loss 는 어쩔 수 없이 photo-consistency 밖에 없음. 정보가 이미지 밖에 없기 때문에 이미지갖고 풀어야 한다. 현재 복원된 3D 모델을 이미지로 내려찍었을 때 각 이미지와 얼마나 유사한지 비교하는 data term과 각 파라미터가 neutral 값을 크게 벗어나지는 않도록 억제하는 prior term으로 구성되어 있다. delta, expression param.의 경우 0~1 범위로 한정짓는 prior도 추가. |
3D 모델을 이미지로 내려찍었을 때 color 비교를 기본적으로 하고, 2d keypoint가 있으므로 이것도 사용함 현 3D 모델의 expression 파라미터만 바꿔가면서 렌더링을 하고 2D keypoint를 찾는다. 이걸 back project해서 3D keypoint를 찾아 사용함. |
이 때 사용한 모델은 gaussian mean, std로 정의된 parameter를 사용했기 때문에 std 대비 각 파라미터가 너무 크지 않도록 억제 요즘 크기 0으로 보내는 regularization하고 동일한 효과. |
meidum level에서 찾아내는 새 파라미터 tou는 크기만 억제할 뿐 아니라, 이전 값과 temporal consistency를 유지하도록 강제함 expression은 크기 억제 + 0~1 값으로 억제 |
|
pose 먼저 3DMM 기본 파라미터 먼저 Manifold harmonic 파라미터 먼저 -> 여태까지 결과를 갖고 albedo update (pixel average) albedo 바뀌었으니, pose, expression만 다시 풀어주고 포즈랑 manifold harmonic 다시 한번 풀어주고 최종적으로 fine detail 찾기. |
|
마지막 단계는 모든 파라미터 고정하고 직접 point를 움직여서 이미지랑 맞도록 하는 fine detail. 이 부분은 shading을 쓴다고 표현할 수 있다. 앞서 계산한 face deformation gradient의 크기가, photo consistency 향상을 위해 발생하는 gradient 크기랑 유사하도록 하면서 face 를 업데이트하는 방식이라 그럼. 컨셉이. |
이 때 expression 파라미터를 활용함. 그 이유는 이렇게 엮어서 풀어야 나중에 표정 변화시킬 때 기존하는 방식 그대로 3DMM expression 파라미터만 갖고 풀 수 있기 때문. 따라서 입력은 이미지들과 expression 파라미터다. |
|
fine detail을 업데이트할 때 medium level, tou도 같이 풀어줌. tou의 표현력도 끌어올려서, fine detail p는 정말 최후의 residual만 계산할 수 있도록 도와줄 의도인 것 같음 ----------------- 최적화 방법은 다음과 같다. expression parameter를 모든 시간대다 모아서 row 방향으로 쌓음-> 전체를 한 번에 봐야 공통된 fine detail 찾을 수 있으므로. 1) medium level 먼저 업데이트할 때 H = tou 전체로 설정 수식 (18)을 풂. 그리고 tou = X* expression 파라미터로 업데이트 -> 이게 무슨 효과인지 잘 모르겠음 -> manifold harmonics의 물리적인 의미를 알아야 이해 가능하므로 패스 2) fine level 업데이트할 때 H = face deformation gradient로 설정 수식 (18)을 똑같이 풂. -> expression parameter들을 어떻게 조합 변형해야 deformation gradient와 일치할지 expression <->gradient 간의 변환 관계 학습. 이 변환 관계 X를 각 expression parameter에 곱한 뒤, p=X*delta 이 p가 의미하는 transformation matrix를 vertex 단위로 찾아냄. -> 이동 -> fine detail 업데이트 되는 것 --------------- 이렇게 밖에 이해 못해서 아쉽다. ㅋㅋㅋ... |
과정이 복잡하지만 1장 처리하는데 시간을 재보면 0.03s + 1.5s + 40s + 15s + 9s + 110s CPU 치고 완전 무난한 듯. 결과 깡패. |
빛 반사 때문에 실패. sequence가 너무 짧으면 실패, 입모양이 너무 다양하면 모델 subspace의 한계로 실패 |
반응형