Paper/3D vision

NeAT: Learning Neural Implicit Surfaces with Arbitrary Topologies from Multi-view Images

침닦는수건 2023. 7. 10. 15:32
반응형

내 맘대로 Introduction

기존 3D surface recontruction 알고리즘이 SDF를 사용하기 때문에 내부, 외부 구분이 확실한 물체 복원에 특화된 형태였다. 실제 물체는 항상 watertight 형태가 아니라 내부, 외부 구분이 어려운 마스크나 옷, 뚫린 구조물 등이 많은데 이를 커버하는 것이 목적인 논문이다. 

 

SDF 를 그대로 사용하되 validty 확률을 평가하는 부분이 추가되어있고, SDF의 부호를 조정하는 부분이 추가되었다. SDF 부호를 조정하는 부분은 SDF to volume density 수식에 해당하는 부분인데 조정 시에 수식이 유지해야 할 unbiased weight나 occlusion-aware 성질을 그대로 보존하는 것이 핵심이다. 

 

메모하며 읽기

 
컨셉은 그림과 같이 SDF, f 함수를 학습시키는 것은 이전 논문들과 동일한데 validity probability, V가 새로 추가되어 masking을 해주는 개념이다.

voxel-wise 단순히 곱하는 개념으로 하면 값이 0으로 되어버리니 곱하는 건 아니고 NaN 값으로 바꾸어버리는 NaN masking을 취해준다.
overview인데 보니 validty net을 그냥 추가했다가 전부인 것 같기도 하다. 별 것없다. 그냥 MLP 3개 있다. 

validity 0.5 이하는 전부 NaN 처리 해버렸다는 내용.




NeAT renderer는 2 step으로 구성된다. SDF to volume density, volume density to weight 이다. 

먼저 SDF to volume density인데, NeuS랑 기본적으론 똑같다. 하지만 outside/inside 구분이 확실해야하는 NeuS 문제 정의 상 water tight 물체가 아닐 경우 문제가 발생하여 SDF 부호 조정을 위한 수정이 필요하다.

문제라고 함은, 내부 표면의 normal 방향이 표면에서 튕겨져 나오는 방향으로 정렬되어 있어야 렌더링이 가능한데 NeuS 형태를 그대로 하면 내부 표면의 normal이 내부로 파고들어가는 방향으로 정렬되어 있어 위 그림처럼 back view 렌더링이 실패한다.

그래서 표면의 normal을 보고 무조건 카메라 방향으로 수정하는 식으로 조정을 해준다고 한다. 수식 상에선 sign(view direction, normal)을 추가해주는 식이다.



volume density에서 weight function을 구하는 식은 NeuS와 같다.  NeuS 포맷을 유지했기 때문에 unbiased weight, occlusion-aware 같은 성질이 유지된다.

integral을 sampling point에 대한 sigma로 대체하는 것은 당연한 내용이다.
validty probablity는 SDF를 masking 용도로 쓰이기도 하지만 color rendering할 때도 쓰인다.

이 경우, 0~1 그대로 volumen density에 곱해지는 것은 말이 되기 때문에 그냥 곱해진다.



그림처럼 surface가 아닌 곳에서 SDF 추정값으로 인해 volumen density가 나올 지언정, validity가 0으로 곱해져서 무효화한다.
loss는 color, mask, eikonal을 기본으로 깔고 가며,

surface point 라면 validity probability 1, 아니라면 0을 주는 loss,

불필요한 surfcae( noise cloud 같은) 를 억제하기 위해 validity probabilty regularization이 추가된다.


반응형