Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields 논문 리뷰

류동훈·2025년 2월 4일
0

논문: https://arxiv.org/abs/2103.13415

NeRF 논문을 공부한 후 NeRF 후속 논문 중 가장 대표적인 Mip-NeRF에 대해 리뷰하고자 합니다.

기존의 NeRF는 하나의 픽셀을 렌더링하기 위해서 하나의 ray을 사용합니다. 이렇게 하면 training 혹은 test time에서 사용된 sample들의 해상도 차이가 있는 경우에 렌더링 된 화면이 흐려지거나 aliasing이 생기는 현상이 불가피하게 나타난다고 합니다. 그리고 이 aliasing문제를 해결하기 위해 연속적인 해상도 상황를 고려한 Mip-NeRF를 고안해냈습니다.

Mip-NeRF에서는 ray 대신에 conical frustum(위의 그림처럼 원뿔대 모양)을 쏴서 aliasing, artifact 문제를 막고 fine detail을 잘 살릴 수 있었다고 합니다. 결과적으로 모델 사이즈는 절반으로 줄이고, 연산 속도는 7% 향상 됬으며, NeRF 대비 17% avg error가 주었으며, Mip-NeRF에서 새롭에 제시한 multiscale variant 세팅 기준으로 NeRF보다 60% 개선된 성능을 보였다고 합니다.

1. Introduction

NeRF는 샘플들에서 카메라와 관측 대상과의 거리가 어느정도 일정해야 잘 작동합니다. 만약 NeRF를 multiple resolution으로 구성된 데이터셋을 가지고 학습하게 되면 카메라와 대상과의 거리가 가까운 경우를 렌더링할 때는 흐려지고 먼 물체를 렌더링할 때는 aliasing artifact가 생긴다고 합니다. 이런 현상을 해결하기 위한 supersampling과 같은 해결책은 scene 하나를 학습하기 위해 몇 시간이 걸리는 NeRF의 특성상 굉장히 비효율적입니다.

SuperSampling은 컴퓨터 그래픽스에서 Anti-aliasing을 구현하는 고급 기법으로, 고해상도 렌더링 후 저해상도로 다운스케일링하여 화질을 개선합니다. 이 기술은 주로 게임과 3D 렌더링에서 계단 현상(Jaggies)을 줄이는 데 사용됩니다.
핵심 원리는 다음과 같습니다.

  • 고해상도 → 저해상도 변환 프로세스:
  1. GPU가 실제 출력 해상도(예: FHD)보다 높은 해상도(예: 4K)로 장면을 렌더링
  2. 픽셀 내부의 여러 서브픽셀 샘플 채집 및 평균화
  3. 종적으로 목표 해상도로 이미지 축소

저자들은 mipmapping이라는 방법에서 영감을 받아서 discrete한 여러 구간의 거리에 따라 픽셀의 크기(?)를 조절해주는 방법을 취합니다. 해당 방법은 MLP에 데이터가 통과되는 렌더링 이전에 발생하는 과정이며 그렇기 때문에 같은 카메라 위치+거리에서 렌더링을 반복적으로 해야하는 경우에는 mipmap을 한 번만 계산해 놓은 뒤 MLP를 통과할 때마다 가져다 쓰면 됩니다. 논문에서는 "prefiltered radiance field for a continuous space of scales"라고 방법론을 소개합니다. 여기서는 3차원인 conical frustum에 대한 positional encoding을 해주어야하기 때문에 3D Gaussian을 가지고 positional 인코딩을 진행하게 되고 이를 intergrated positional encoding(IPE)라고 부릅니다.

(a)을 보면 NeRF를 가지고 카메라를 뒤로 당긴 뒤 줌을 해서 찍은 사진을 입력으로 넣었을 때 일종의 계단 현상(Jaggies)이 일어나는 이미지가 만들어집니다. (b)를 보면 muliscale로 NeRF를 학습시키게 되면 이 현상이 어느정도 개선되지만 가까이서 찍은 사진의 질이 낮아지게 됩니다.
그리고 (c)를 보면 Mip-NeRF에서는 두 환경에서 모두 높은 정확도를 보이는 것을 확인할 수 있습니다.

3. Method

Mip-NeRF는 conical frustum 모양의 ray를 쏘면서 점 단위로 sampling을 하는 NeRF와는 다르게 거리에 따라 픽셀의 크기를 조정할 수 있게 합니다.

dnl 그림처럼 카메라가 멀리 있을 때(노란색)는 conical fructum의 직경이 커지고, 카메라가 가까이 있을 때(파란색)은 conical frustum의 직경이 작아집니다.
이를 통해 Mip-NeRFpixel 하나를 렌더링하여 거리 aware하게 장면을 학습할 수 있게 됩니다.

Cone Tracing and Positional Encoding

위에서 언급한 것처럼 MipNeRF에서는 ray가 아닌 cone방식으로 multivariate Gaussian을 사용하게 됩니다.

위 식을 통해 과 t0t_0t1t_1사이의 거리 상에 있는 F(x,)=1F(x, )=1임을 가정합니다. 여기서 r˙\dot{r}은 거리에 따라 parameterized 된 conical frustum의 반지름입니다.

그리고 위의 방식으로 positional encoding을 진행해주어야하는데, 분자 부분이 closed form solution이 아니기 때문에 계산하는데 문제가 발생할 수 있다고 합니다.
이를 해결하고자 conical frustum을 multivariate gaussian을 통해 효율적으로 근사하였고, 이를 integrated positional encoding(IPE)라고 부릅니다.


μt\mu_t는 Mean과 σt2\sigma_t^2는 coefficient입니다. Mean과 coefficient를 위의 식과 같이 계산하는 것이 수치적으로 안정적이라고 합니다.
이를 바탕으로 위의 내용을 바탕으로 종합한 식은 다음과 같습니다.


이 식은 위에서 정의한 Gaussian에 대해 positional encoding을 해주기 위한 과정입니다. 다음과 같이 reparameterization을 해주면 IPE을 하기 위한 closed form 형태가 완성됩니다.
이를 바탕으로 Linear transform의 covariance변수의 covariance의 linear transform과 같다는 사실을 착안하면 conical frustum의 mean과 variance를 구할 수 있습니다.


그리고 이를 바탕으로 IPE 식을 새롭게 나타낼 수 있습니다.



이렇게 설계하였을 때, NeRF의 Positional EncodingMipNeRF의 Integrated Positional Encoding을 비교하면서 적용한 효과를 비교하면 다음과 같습니다.

그림를 보면 Mip-NeRF고주파 영역에서 크기가 작아지는 것을 toy example로 보여주고 있습니다. 이를 통해 aliasing이 생기는 것을 막아준다고 합니다.

Architecture

NeRF에서는 Coarse Network, Fine Network가 각각 분리되어 있었습니다.

MipNeRF에서는 NeRF와 똑같은 개념으로 sampling을 하고 Network를 통과하지만, 2개의 Network가 같은 Weight를 공유합니다. 그 덕분에 한개의 Network를 사용하게 됩니다.

여기서 CC는 color를 출력하는 함수를 뜻하고, ΘΘ부분이 weight에 해당합니다. 또한 NeRF에서는 Coarse Sampling 64개, Fine Sampling 128개이었지만, MipNeRF에서는 Coarse Sampling 128개, Fine Sampling 128개로 두었습니다.

Coarse Network의 결과 Weight로 Fine Point를 Sampling할 때는 다음의 식과 같이 변형한 weight로 Inverse transform sampling 하였습니다.

wkw_k^{'} (Weight)는 특정 Point가 Surface일 확률을 나타내는 값인데, Ray위의 Point들에 대한 PDF(확률 밀도 함수)에서 Surface확률이 높은 Point들을 좀더 더 많이 샘플링하기 위해 사용하게 됩니다. MipNeRF에서는 이 Weight에서 이전point의 weight와 이후 weight의 max값을 취함으로써, 좀더 wide하고 smooth하게 fine 샘플링하게 합니다.

4. Results



이 표를 통해 MipNeRF는 모든 경우에서 NeRF보다 60%정도 좋은 성능을 보이는 것을 볼 수 있습니다. 시간도 약간 향상(약 7%)되었고, model크기도 작아진 것을(약 50%) 확인해 볼 수 있습니다. 특히 해상도가 줄었을 때, 성능차이가 크다는 것을 알 수 있습니다.


NeRF원문 그대로 데이터셋을 두고 다른 실험과 비교한 Test 결과입니다. MipNeRF는 평균 17%성능 향상되었습니다.


마지막으로 anti-aliasing 효과를 위해 sampling하는 갯수를 늘려 실험하였습니다.
MipNeRF가 전체적으로 NeRF보다 향상된 성능을 보이는 것을 알 수 있습니다.

마지막으로

NeRF의 후속 연구 중 첫번째로 MipNeRF에 대해 다뤄보았습니다. anti-aliasing 효과가 엄청나게 뚜렷하지는 않지만, 새로운 수학적 접근 방법을 통해 전체적인 성능 향상을 가져온다는 점이 매우 신기했습니다.

profile
AI를 좋아하고 공부하는 대학생

0개의 댓글