Paper/3D vision

Neural Splines: Fitting 3D Surfaces with Infinitely-Wide Neural Networks

침닦는수건 2023. 10. 18. 20:33
반응형

내 맘대로 Introduction

이 논문은 Poisson reconsturction 처럼 PCD가 주어졌을 때 position과 normal을 이용해서 SDF를 추정하여 mesh화 해주는 논문이다. 즉, poisson reconstruction의 상위 호환의 알고리즘이라고 할 수 있다. 

 

neural 이 붙어있어서 데이터로 때려박아서 학습시키는 것 같은 느낌을 주지만, neuron을 2개 사용했기 때문에 우리가 흔히 아는 neural 알고리즘과 다르다. 핵심은 kernel method를 기반으로 작성되어 있기 때문에 사실 상 classic한 방식에 가깝다.

 

내용의 핵심은, f(position, normal) -> sdf 에서의 f를 찾아내겠다는 것인데 f를 찾아내는 것이 만만치 않으니 kernel method를 사용해보겠다는 것이다. 냅다 딥러닝으로 풀 수도 있다만 GT를 마련하는 것도 문제고 trivial solution으로 수렴하는 것을 막을 방법이 딱히 없기 때문에 이를 효과적으로 풀기 위해 수학적 요소를 가미하여 kernel method로 푼 것 같다. 

 

f가 neural network인 것은 맞는데 kernel method를 쓰려면 몇가지 theorem을 만족하는 형태의 f로 디자인해야 하므로 2겹의 ReLU 기반 network로 제한해서 디자인했다.

 

neural network 구조만 사용하고 kernel method로 푼 것이기 때문에 학습은 없다. 

 

주의. 논문이 엄청 어려워서 스킵하면서 읽어야 한다.

 

메모하며 읽기

먼저 kernel method가 뭔지 짚어보면, 우리가 비선형 분류 문제를 풀 때 input space가 non-linear 하다면 linear feature space로 mapping해준 뒤, feature space에서 선형 분류하는 식으로 풀 수 있다. 

근데 여기서 문제는 mapping fucntion Φ를 찾는 것이 사실상 불가능에 가까울 뿐더러 찾는다 한들 연산량이 폭발적으로 늘어날 수 밖에 없다는 것이다. 
그래서 그 대안으로 나온 방법이 kernel method다. 위의 mercer's theorem에 기반을 하고 있다.

mapping function을 찾는 것은 어렵지만 mapping function 간 내적을 의미하는 kernel이라는 개념을 정의하고, 특정 조건을 만족하는 kernel을 디자인한다면 이제 대응되는 mappin function은 형태는 모르지만 일단 존재하긴 한다는 이론이다. 쉬운 말로 kernel을 일단 특정 조건에 맞추어서 아무렇게나 디자인하면 이에 맞는 mappin function이 일단 존재하긴 한다는 것이다. 

여기까지는 그래서 뭐?라고 여전히 쓸모 없다고 생각할 수 있다만.
보통 우리가 푸는 minimize 문제의 수식을 쭉 전개하다 보면 굳이 mapping function을 모르더라도, kernel만 알고도 풀 수 있는 경우가 생기기 때문에 유용하다. 전개해보면 중간에 feature space X 간 내적 X.T X가 등장하는데 이게 kernel이기 때문에 그냥 문제를 풀 수가 있다. X가 어떻게 mapping된 space인지 모르나 그냥 내적만 정의 되어있으면 풀 수 있는 것이다. 얻고자 하는 theta는 얻을 수 있다. 
이 논문은 위의 개념을 차용해서 point cloud마다 sdf를 추정하는 문제를 다음과 같이 정의한 다음 푼 것이다.

input space (xyz, normal) 을 feature space로 보낸 뒤(mapping by f), 어떤 SDF 값을 갖는지 분류하고 싶은 상황이다

분류 문제니까 kernel method 쓸 수 있고 mapping function f 모르지만 풀 수 있긴 하겠다는 전제로 시작한 것이다. 

다만 보통 kernel을 먼저 정의하는데 여기선 맘대로 kernel을 정의하면 문제가 잘 안풀릴 수 있으므로 되도록 mapping function와 kernel 둘 다 심혈을 기울여서 디자인해서 풀어본 것이다. 
kernel method를 쓰려면 mapping function f와 동시에 minimize 수식을 세워야 하는데 minimize 수식은 SDF 분류 결과가 주어진 point에서는 0이 나올 것(zero level set이니까), SDF gradient가 normal과 같을 것. 두 가지를 반영해서 디자인했다. 

그 다음은 kernel을 디자인해야 하는데, kernel을 디자인하기도 어려우니 일단 역으로 이번엔 mapping function f를 먼저 디자인했다. 

mapping function이 neural network면 효과가 뛰어날 것이라는 기대와 함께 kernel 계산이 쉽다는 이유로 neuron으로 구성된 2개의 층의 MLP + ReLU로 구성했다.

여러번 쌓을 수도 있지만 단 2번만 쌓고 심지어 그 중 첫번째 layer는 weight를 고정해서 사실 상 1겹의 MLP가 모든 mapping을 커버하도록 했는데, 

그 이유는 이렇게 디자인해야 위에 세운 minimize 수식이 convex해서 수렴한다는 것을 보장할 수 있기 때문이다. kernel method에서는 minimize 수식이 convex하다는 보장이 있어야 한다.

직관적 이유를 돕기 위해 mapping function이 1차식이면 minimize 수식은 2차식이 되는데, 2차식은 convex하다는 것을 알 수 있다. 

말이 설명하면서도 어려운데 그냥,

mapping fucntion MLP로 만들었고 kernel method 사용하려고 이것저것 constraint를 반영하도록 변형하다보니 2겹의 MLP+ReLU + 첫번째 layer weight 고정 이라는 결론을 얻었다.

그럼 이때 유일하게 변할 수 있는 네트워크의 하이퍼 파라미터는 단 한개 남은 layer에 사용된 neuron, 즉, node 수다.

따라서 node수를 1024 이런 수준이 아니라 50k이런 식으로 썼다고 한다.

참고로 고정된 첫번째 layer weight는 초기화된 값을 그대로 고정해서 사용한다.

초기화 방법에 따라서 각각 전체 mapping function, kernel이 만들어내는 결과가 cubic spline과 비슷해지거나 하는데 큰 차이는 없고 cubic spline과 비슷해진다고 한다.
cubic spline이랑 왜 비슷해지는지 1차원 예시로 설명해주는 것인데 잘 모르겠다. 

minimize 수식에서 1차 layer weight를 uniform distrubution에서 뽑은 것으로 고정하고 쭉 정리해보면 수식(10)과 같이 cubic spline interpolation 수식과 비슷해진다는 것을 보고 주장하는 것 같다.


pcd noise에 취약할 수 있는데 이것은 kernel method 특성 상 kernel의 가장 작은 eigenvalue를 의도적으로 낮춰주므로써 완화할 수 있다. 




이해도 못했을 뿐더러, 분석에 해당하는 내용이라서 사실 몰라도 되는 것 같다. 왜 poisson reconsturction도 kernel method를 쓴 것으로 볼 수 있는지 관점을 해설하는 내용이다.


구현 디테일인데, minimize 수식을 kernel method로 푸는 과정을 kernel ridge regression이라 부르는데 이걸 어떤 library로 풀었는지를 설명한 내용과

모든 pcd point를 다 쓰면 너무 연산이 많이 깨문에 subsampling을 어떻게 해서 point를 선별하여 사용했는지 설명한다.

이렇게 결과적으로 풀고 나면 mapping function f의 MLP들이 갖고 있는 weight, bias값들이 찾아지는데 그러면 

f(position, nomal)와 같이 통과시켜서 sdf를 얻어내면 된다.



반응형