Paper/Human

Human Hair Reconstruction with Strand-Aligned 3D Gaussians

침닦는수건 2025. 5. 23. 14:18
반응형

내 맘대로 Introduction

 

이 논문 역시 hair 복원을 목적으로 하는데, neural strand에서 한 스텝 더 나아가서 gaussian을 binding해서 realistic rendering까지 나아간 논문이다. 어떻게 보면 당연한 수순을 밟아 나온 논문이라고 볼 수 있겠다. neural strands에서 아쉬운 점이라고 하면 최종 렌더링 결과를 얻는 것이 alpha compositing에 의존하기 때문에 정해진 시점, 입력 시점에서만 결과를 얻을 수 있다는 점이다. Gaussian이 등장한 이후로 시점을 다양화하는 것은 기본처럼 느껴지게 된 상황이라 마지막 렌더러를 GS로 바꾸려고 생각하는 것은 자연스러웠다. 

 

핵심 아이디어는 기존 neural strand 방식으로 그대로 따라가되 hair strand vertex마다 gaussian을 할당한 것이다. 정말 simple extension이다. 내가 보기엔 이를 구현해낸 디테일이 더 빛나는 논문인 것 같다. (물론 자세히는 안나와있지만)

 

메모


설명이 unstructured, structured 두 개 다 활용했다고 나왔길래 나는 전자를 먼저 복원한 뒤, 이를 structuring하는 방식이라고 생각을 했는데 그게 아니었다.

두개는 어찌보면 완벽히 독립된 gaussian 들로, 서로 binding되지 않는다. 

간단히 말하면 다음 과정을 따른다.

1) 일단 3DGS를 돌려서 high quality로 복원함 
-> 이러면 표면 위주에 3DGS가 생성되며, 머리카락 geometry랑 연관성은 거의 없음 
-> 주목적은 입력 이미지 시점 N개에서 벗어나 N++ 시점 이미지를 생성하기 위함
-> 정말 Novel view synthesis용으로만 학습시킨 것
-> 퀄리티가 엄청 좋아야 했을텐데 이것을 위해서 Line based MVS (저자 중 남길주 박사님 논문) 사용해서 초기화를 했다거나, gaussian이 하나의 방향으로 뾰족하게 수렴하도록 특별히 reguarlization했다거나 하는 디테일이 엄청 숨어있을 것이다. 

2) neural strands랑 똑같이, scalp texture에서 latent decoding해서 hair strand 생성 

3) gaussian 할당 후 학습
-> 이 때 1)에서 만든 unstructured 3DGS로 렌더링한 무수히 많은 이미지를 죄다 사용했을 것으로 보임.
2) 3) 과정에 들어갈 디테일 설형

일단 초고퀄 복원이 기반이 되어야 머리카락이 잘 표현될 것이기 때문에 카메라 포즈가 엄청 정확해야 한다. 따라서 BARF 컨셉으로 unstructured 3DGS를 복원할 때 초기화도 빡세게 하고 카메라 포즈도 같이 업데이트했다고 한다. 
->이게 BARF 차용했다고 언급만 할 간단한 구현 내용은 아닌 것 같은데 그냥 넘어간 듯 하다. 컨셉만 언급.

각 gaussian들은 hair segmentation label 즉, hairness 라고도 볼 수 있는 confidence를 추가로 갖고 있게 했고 머리카락 이다보니 뾰족해야 해서 뾰족한 모양이 맞는지 (그냥 렌더링 loss 줄이려고 추가되어 버린 앤지, 진짜 머리카락인지 분간) confidence도 추가했다. 

아무리 자유도를 1방향으로 뾰족하도록 가둔다 한들 그냥 학습시키면 그렇게 되진 않는다. 

따라서 rotation 중 주축 방향 1개를 렌더링 해서 픽셀로 내리찍은 다음, 미리 계산해둔 픽셀 별 orientation과 loss를 먹여준다. 


VAE는 neural strands랑 거의 같이 학습. 아마 같은 걸 썼지 않을까. 


latent decoding으로 만든 strand line segment에 gaussian을 하나씩 할당하고 렌더링 하는 방식이기 때문에 수많은 머리카락을 동시에 하면 당연히 메모리가 터진다. 

따라서 guide strands들을 두고, 그 중간중간은 interpolation으로 처리했다. 
->그래도 메모리 충분히 썼겠지. 일반 PC에 비하면
-> Texel에서 interpolation 아니고 3D space 상에서 했다고 함 
-> 3D Uniform하게 했다는 뜻으로 보임.

추가로 어떤 regularization들을 넣었다는데 이건 저 ref논문들을 안 읽어봐서 모르겠다.
머리카락 1개에 존재하는 분절, line segment 마다 GS가 1개 존재하고 

그 방향은 당연히 line segment 방향 (regularize가 아니고 아예 이렇게 고정했겠구나) 

크기는 분절의 절반( 반지름이 절반이니 분절에 딱맞는 크기)로 초기화 했다고 함

opaity 1로 해주고 학습

appearance texture도 언급하는 걸보니, neural strand의 appearance texture deocoder도 가져왔나보다. 같이 학습.

coarse 때는 guide strands만

fine 때는 interpolation 한 뒤, 전체 다.


아 이게 이 소리였구나.

렌더링 결과 이미지에 대해서 SDS loss를 먹여서 diffusion model prior를 이용해 얼마나 이미지가 현실감있는지를 간접 평가한 것. 
LVMS를 안썼네? 그냥 COLMAP 썼다니. 

hair가 그냥 COLMAP 돌려도 복원이 되는구나 싶네.

반응형