상세 컨텐츠

본문 제목

[Paper review] Point-NeRF: Point-based Neural Radiance Fields

Paper review

by 최끝장1234 2022. 3. 13. 17:09

본문

오늘 리뷰하고자 하는 논문은 엄청 따끈따끈한 최신 논문이다. 2022년 3월, 며칠전에 올라온 논문인데, 주제는 3D Reconstuction을 위한 NeRF의 확장판 모델이라고 생각하면 된다. 이 논문을 선택한 이유는 모델이름이 Point-NeRF라는 점에서 어떤식으로 Point라는 개념을 이용해서, NeRF에 적용했는지 궁금했고 현재 Computer Vision 분야의 많은 사람들의 반응도 뜨거운 논문이기 때문이다. 

 

본격적으로 논문을 리뷰를 하기에 앞서 3D Reconstruction 분야에서 대표적인 method들에 간단하게 요약하자면,

NeRF는 High quality의 view 생성 가능하지만, scene마다 Optimization에 소요되는 시간이 너무 길고, General 한 모델이 아니라는 치명적인 한계를 가지고 있었다. 

그리고 Deep multi-view stereo methodsNeRF보다는 빠른 속도를 가지고 있지만, quality 면에서 뒤쳐진다는 것을 확인할 수 있다. 

Point-NeRF는 논문의 초록에서 다음과 같이 소개된다.

Point-NeRF은 위 두 방법을 combine한 모델로써, neural 3D point cloud라는 개념을 활용한 모델이다.

 

여기서 neural 3D point cloud라는 것은 무엇일까? 어떤식으로 두 방법을 Combine 했을까? 이제 본격적으로 구조와 방법론을 하나씩 파헤쳐보면서 이에 대해 설명해 보겠다.

 

논문 그림 참조

 

위 그림은 Point-NeRF의 구조를 전체적으로 요약한 것이다. 그림에서 볼 수 있듯이 모델의 구조적인 측면은 크게 두 부분으로 나눌 수 있다.

 

(a) Neural Point를 Generation하는 부분

(b) (a)에 표현한 point 기반으로 한 volume rendering 과정

 

먼저 (a) 에 대해서 설명을 해보겠다.

 

논문에서 Neural point cloud는 다음과 같은 식으로 표현된다.

 

논문 참조

 

pi는 point i의 location을 나타내고, fineural feature vector를 나타내는 것으로 local scene content를 encode하는 벡터이다. riscale confidence로 0~1사이의 값을 가지고 point가 얼마나 scene의 surface에 가까이 있는지 나타내는 값이다.

이 값들은 input으로 여러 view의 이미지를 받은 후 다음과 같은 방식으로 구해진다.

 

 

 

첫번째 식부터 자세히 설명하면, Gp,r은 3D CNN으로, 논문에서는 MVSNet-based Network를 사용했다. MVSNet은 Multi-view reconstruction and rendering 방법 중 하나로, input으로 multi-view를 받아서 결과물로써 point-cloud가 나온다고 한다. 논문에서는 이러한 MVSNet을 활용해 pi와 ri를 구한다. (참고로 위 식에서 I는 이미지이고, 파이는 특정 view에 대응하는 카메라 파라미터이다.) 

fi는 두번째 식을 통해 계산되는데, 여기서 Gf는 2D CNN이고, 논문에서는 VGG network를 사용한다. 3번의 downsampling의 결과물들을 종합하는 방식으로 fi를 계산한다.(multi-scale) 이러한 과정은 특정 view에서 이미지에 대한 feature를 뽑아냄으로써, 이를 첫번째 식을 통해 도출한 특정 view에서 바라본 scene의 point-cloud에 반영하는 것으로 해석할 수 있다.

 

다음으로 (b)에 대해서 설명을 해보겠다.

 

Point-NeRF는 1. 을 통해 scene의 3차원 좌표에 대한 Neural point를 generation한 다음, 이를 기반으로 sampling된 point의 volume density, color를 추론하여 radiance field를 찾는다. 이후 Volume-Rendering 과정은 동일하다.

결국 핵심Neural point들을 활용해, ray상의 samping 된 점의 density, color 값을 찾는 것이다.

 

Point-NeRF는 이를 추론하기 위해서, sampling된 점 주변의 반경 R이내의 K개의 neural points를 이용한다.

이 원리가 이 모델이 기존 NeRF보다 더 좋은 성능을 가져올 수 있었던 이유이다.

먼저 color값은 다음과 같은 과정으로 추론한다.

 

fi, pi는 앞서 설명 참조
ri 역시 앞서 설명 참조
d는 viewing direction

 

첫번째 식을 통해 K개의 Neural point에 대해서 specific neural scene feature라고 하는 f i,x 에 대해서 각각 추론한다.

그리고 두번째 식을 통해 K개의 feature를 조합하여, single feature, fx로 나타낸다. 여기서 흥미로운 점은 점마다 일종의 가중치를 부여하여, sampling된 점과 가까운 점들이 더 잘 반영되도록 한다는 점이다. 

마지막으로 세번째 식으로 통해 sampling된 점에 대한 color값을 추론한다.

참고로 위 식에서 F, R는 모두 MLP이다.

 

density값은 다음과 같이 추론된다.

 

 

color를 구하는 식과 거의 비슷하다. T는 MLP.

 

지금까지 Point-NeRF의 구조를 알아보았다. 구조를 잘 이해했다면, 모델이 어떤식으로 작동이 되는지 감이 잡힐 것이다. 다만, 언뜻보면 기존 NeRF보다 Point generation 과정도 추가되었고, 크게 시간적으로 단축될만한 요소가 보이지 않는다. 

NeRF의 치명적인 한계인 시간에 대한 부분을 구조에서 어떻게 개선했는지 찾기 힘든 것이다. Point-NeRF이 쓰는 Training과 Optimization 방법론을 알아야 이를 이해할 수 있기에, 이에 대해 알아볼 필요가 있다.

 

Point-NeRF의 시간단축은 Training과 Optimization 방법론에 숨어있다.

 

우리가 Point-NeRF를 어떤 특정 scene에 대해 적용한다고 가정하면, 다음과 같은 과정으로 진행된다.

 

논문 참조

 

  1. 여러 scene에 대해서 훈련을 통해 미리 모델의 전체적인 구조를 pretrain한다. (위 그림에서 붉은 색 화살표) 이를 통해 모델은 어떠한 새로운 scene이 들어와도, Neural point를 개략적으로 잘 만들게 된다. 여기서 사용되는 loss는 일반적인 rendering loss이다. (이 과정은 본격적으로 특정 scene에 적용하기전 수행하는 사전작업이다.)
  2. 다음으로 우리가 적용하고자하는 특정 scene에 대해서 fine tuning한다. (위에서 파란색 화살표) 이 단계에서는 총 두가지의 loss가 사용되는 하나는 rendering loss이고, 다른 하나는 sparse loss 로써, Neural point의 ri(point confidence)값을 0 또는 1로 보내는 loss를 사용한다. (즉 애매한 point를 제거하는 것)
  3. 추가적으로 Neural point generation이 잘 안되는 경우를 개선하기 위해서, Point pruning과 Point growing 방법을 특정 iteration 마다 반복함으로써, 이를 보완했다. (자세한 방법은 논문 참고)

결국 위에서 1.을 통해 pretrain된 Point-NeRF만 있으면, 특정 scene에 대해서 fine-tuning 과정을 통해 쉽고, 빠르게 활용할 수 있다는 점이다. 이게 Point-NeRF가 기존 NeRF보다 scene에 대해서 Optimization time이 훨씬 빠른 이유이다.

마지막으로 Point-NeRF의 결과를 살펴보면,

 

 

성능은 거의 SOTA를 달성했고, scene optimization에 소요되는 시간은 훨씬 줄었다는 것을 확인할 수 있다. 

 

이번 논문을 리뷰하면서 이제 기존 NeRF의 한계점을 보완할 수 있는 General 한 모델이 나왔다는 것을 알 수 있었고, 앞으로는 나오는 모델들은 시간적으로도, 성능적으로도 NeRF의 단점을 보완할 수 있는 모델이 나오겠구나하는 것을 느꼈다. 다시한번 연구를 통해 Computer Vision 분야가 계속 발전한다는 것을 느꼈다. 불과 2020년도에 NeRF가 나왔는데 말이다.

 

아래는 위 논문주소이다. 참고바란다.

https://arxiv.org/abs/2201.08845

 

Point-NeRF: Point-based Neural Radiance Fields

Volumetric neural rendering methods like NeRF generate high-quality view synthesis results but are optimized per-scene leading to prohibitive reconstruction time. On the other hand, deep multi-view stereo methods can quickly reconstruct scene geometry via

arxiv.org

 

관련글 더보기

댓글 영역