Paper/3D vision

Neural Fields as Learnable Kernels for 3D Reconstruction

침닦는수건 2023. 10. 19. 20:02
반응형

내 맘대로 Introduction

2023.10.18 - [Reading/Paper] - Neural Splines: Fitting 3D Surfaces with Infinitely-Wide Neural Networks

 

이전 글에서 소개한 논문의 확장판이다. 이전 논문이 2겹의 MLP+ReLU로 설계한 mapping function을 갖고 kernel method를 적용하면, poisson reconsturction처럼 PCD to Mesh를 학습 없이 변환할 수 있다는 내용이었는데 비슷하다.

 

차이점이라 함은 2겹이 MLP+ReLU 네트워크가 다루는 입력이 이전에는 point xyz 3차원 정보 뿐이었다면 이제는 point xyz + point feature 를 다루도록 확장한 것이 차이점이다. point feature는 애초에 존재하는 것이 아니기 때문에 앞단에 point feature를 뽑아주는 네트워크를 사전학습한 뒤 붙여서 사용했다. 

 

간단히 말하면 point feature를 추가 활용하는 Neural Spline이다. 

 

메모하며 읽기


Nerual spline에서 사용하는 mapping function, kernel이 딥러닝을 활용해서 디자인한 것이 아니라는 점을 짚고, 

NKF는 딥러닝 정보를 활용해서 이들을 개선해보겠다는 점이다. 주의할 점은 mapping function 자체의 파라미터를 어떤 loss로 학습을 시켜서 찾겠다는 것이 아니라 mapping function이 딥러닝 feature를 같이 쓸 수 있도록 변경했다는 것이다. 

learned kernel이 담는 의미가 이미 학습 완료된 feature를 포함한다는 뜻이다.
neural spline recap이다. 

수식(1)과 같이 minimize 수식을 세우고 f를 모르더라도 kernel method를 이용해 문제를 풀 수 있음이 기본 전제였다. 

f를 다루지 않는게 보통 kernel method지만 여기선 f와 kernel을 잘 MLP+ReLU 함수로 설계해서 푼다. 

NKF에서는 이 포맷을 그대로 사용하며, 입력 point는 pcd point들과 주변점들(normal 방향으로 +- eps만큼 움직인 위치)으로 정의하고 출력 label +eps, -eps로 지정한 뒤 문제를 푼다.

잘된다고 하는 Neural spline을 왜 굳이 point feature를 써서 확장할 생각을 했느냐? 

neural spline이 나름 수학적으로 모델링을 잘했지만, inductive bias가 부족한 측면이 있다. 여기서 inductive bias는 대충 surface에서 떨어진 영역을 다루는 능력이라고 해석하면 될 것 같다.

eigenvalue를 억제하는 식이 제안되어 있지만 point가 sparse할 경우 방법이 없다는 것이 NKF 저자들의 지적이다. 

그래서 결론이 point feature를 사용해서 sparse point의 경우에도 활용할 정보가 충분하도록 만드는 방법이었던 것 같다.

진짜 변한 점은 앞에 point xyz만 쓰는 것이 아니라 ConvOCCnet, PointNet 붙여서 point feature 뽑아주고 같이 입력으로 넣어주는 것이다. 

augmented point cloud X'가 의미하는 것이 point + feature이다. 

주의 S라는 notation이 설명이 안되어있는데 맥락 상 surfcae에 위치한 point 개수를 의미한다. 

+eps, -eps로 움직인 point가 주 집합이기 때문에 크기가 2S다.

먼저 point가 속한 공간을 voxel로 나누고 한 칸 한 칸에 PointNet을 이용해 feature를 채운다.

그리고 3D U-net으로 한 번 가공해준뒤 ConvOCCnet처럼 최종 feature를 뽑아낸다음 사용한다.
여기서 핵심은 point feature extractor 전체가 잘 학습이 되어있어야 하는데 이는 3D mesh 데이터들을 이용해서 사전학습할 수 있다. 

surface가 이미 있으므로 무작위로 point+, point-를 뽑아서 사용할 수 있고 출력은 inside, outside 맞추도록 학습시킨다. 

추가로 surface point에서는 sdf가 0이 되도록 가이드 하면서 사전학습 뺑뺑이를 돌려둔다.

이후 과정은 kernel ridge regression으로 주어진 point xyz, feature에 딱맞는 mapping function 파라미터를 찾아내는 것인데, 

여기서 point feuture마다 가중치를 계산하는 모듈을 선택적으로 넣을 수 있다고 한다. 이렇게 가중치가 있으면 weighted kernel ridge regression이 가능하기 때문!




이 가중치 계산 모듈은 사전학습 시에 나온 point feature를 이용해서 학습하는데 surface에 있는 point feuture의 가중치가 높도록 설정할 것 같다. 

학습 디테일이 안나와있어 추정해본 건데 이 방법 밖에 없을 것 같다.
반응형