본문 바로가기
NeRF

[논문 리뷰] Mip-NeRF 360 (CVPR 2022) : Anti-Aliasing 연구2

by xoft 2023. 4. 22.

Mip-NeRF 360: Unbounded Anti-Aliased Neural Radiance Fields, Jonathan T. Barron, CVPR 2022

 

기존 NeRF는 학습 데이터와 비슷한 Direction, Distance에서 새로운 View로 합성을 했었습니다. 이를 Bounded Scene이라고 합니다. 학습 데이터의 Direction, Distance와 전혀 무관하게, 어떤 Direction이든 어떤 Distance이든 새로운 View가 주어진다면 Unbounded Scene이 됩니다. Mip-NeRF 글 에서 NeRF의 Aliasing현상에 대해 사례를 들어 설명했었습니다.

 

Unbounded Scene에 대해 새로운 View에서 이미지를 생성하게 될 경우, 가깝거나 먼 물체의 불균형한 detail과 scale로 인해 blur가 생기거나 low-resolution으로 랜더링 되고 학습이 느리게 되었습니다. 또한 적은 학습 이미지들로 large scene을 reconstruction하는 것은 모호성을 갖기 때문에 artifacts가 발생했었습니다.

 

Mip-NeRF 360에서는 Unbounded Scene과 물체를 주변으로 360도 rotating하면서 사물을 찍는 360도 Scene에서 아래 3가지 기법을 통해 높은 해상도로 랜더링을 하게됩니다.

  • Non-linear scene parametrization
  • Online Distillation
  • Novel Distortion-based Regularizer

위 3가지 방법에 대해서 상세히 다뤄보겠습니다.

 

 

 

이전 NeRF 모델들의 문제점

Mip-NeRF를 포함한 NeRF 모델들들이 Unbounded Scene을 realistic하게 랜더링하지 못한 이유에 대해서 3가지를 언급하고 있습니다.

  • Parameterization : Bounded 영역 내에서만 3D coordinate에 대해서 Query 할 수 있도록 모델링 되었습니다.
  • Efficiency : 크고 detail한 scene을 위해 MLP capacity가 커져야 합니다. 그럼 학습시에 연산량이 많아집니다.
  • Ambiguity : unbounded scene의 물체는 어떤 거리에서든 적은 수의 ray로부터 observed 되어지게 때문에 어떤 형태로든 Ambiguity가 발생합니다.

 

각 문제점들을 Mip-NeRF 360에서 어떻게 접근하여 Solution을 도출 하였는지에 대해 언급되었습니다. 해당 파트에 대해서는 글을 요약하지 않고 단순히 번역하였기 때문에 글이 약간 지루 할 수 있습니다. Skip하고 바로 알고리즘 파트를 읽으셔도 됩니다.

이전 NeRF모델의 문제점 상세 읽기 더보기↓

더보기

Parameterization

최초 NeRF(글 바로가기)에서는 360도 Scene에서 background에 mask를 씌워 날려버린 후 3D Euclidean space에서 직접적으로 parameterize하였고, front-facing scene에서는 projection에 대한 geometry 일관성을 유지하기 위해 -1~1사이의 cube로 Normalization (NDC = Normalized Device Coordinates)을 통해 parametrize하였습니다. 

학습시 물체가 카메라 가까이에 있으면 많은 Detail한 정보를 반영해야 하고, 반대로 물체가 카메라에서 멀리 떨어져 있으면 적은 정보만 반영해야 합니다. 이상적인 parameterization(매개 변수화)에서는 카메라와 가까이에 있는 물체에는 더 많은 capacity를 할당하고, 카메라와 먼 물체에는 더 적은 capacity가 할당되어야 합니다.

이를 고려하여 NeRF++에서는 멀리있는 object에대해서는 추가적인 network를 사용하였고, DONeRF에서는 origin(초점)을 따라 멀리 있는 points들을 축소시키는 space-warping procedure를 제안했었습니다.

Mip-NeRF 360에서는 이러한 연구들로 Mip-NeRF를 확장시켜 point가 아닌 volume에 대해서 smooth parameterization를 적용하였고, Unbounded scene를 위한 Mip-NeRF 360만의 parameterzation을 추가로 사용했습니다.

 

 

Efficiency

Unbounded Scene의 경우 더 큰 영역과 detail을 요구하기 때문에 기존 NeRF MLP보다 더 큰 네트워크로 구성되어져야 합니다. NeRF in the Wild 연구에서는 최초 NeRF의 MLP hidden unit을 2배 증가시키고, evaluation을 8배 증가하여서, 40배 더 느렸습니다. Mip-NeRF 360저자는 Coarse sampling 후 Fine Sampling을 하게 되면, Coarse Sampling은 최종 랜더링에 기여를 주지 않기 때문에 wasteful 단계로 생각했습니다.

Mip-NeRF 360 에서는 기존 NeRF MLP 이외에 추가로 Proposal MLP를 추가하였습니다. color가 아닌 volumetric density를 prediction하고, NeRF MLP의 입력값으로 들어갈 point를 resampling하는데 사용했습니다. Proposal MLP는 입력 이미지로 supervised learning되지 않고, NeRF MLP로 생성된 weight의 histogram값을 갖고 supervised learning하였습니다. 이러한 설계를 통해 큰 NeRF MLP가 Evaluation 되어지는 시간은 줄고, 작은 Proposal MLP를 Evaluation하는데 시간이 많아지게 했습니다. 결과적으로 Mip-NeRF보다 15배 큰 capacity를 가지지만 연산시간은 2배만 증가하였습니다.

논문에서는 Proposal MLP를 학습하는 과정에 Online Distillation을 사용했습니다. 일반적으로 Distillation은 학습된 large network를 갖고 small network를 학습 시킬 때를 부르는 용어이지만  여기에서는 NeRF MLP에 의해 예측한 output 구조가 Proposal MLP로 Distill 되었기 때문에, Online Distillation이라고 합니다.

NeRV, DONeRF, TermiNeRF, NeRF in Detail 연구들에서 비슷한 방법으로 사용되었으며, Mip-NeRF 360의 proposer network는 300% 학습 속도 향상이 있었습니다. 몇몇 연구에서 학습된 NeRF를 빠르게 랜더 할 수 있는 포맷으로 distill 또는 bake시도가 있었지만, 학습 속도 향상은 못했습니다. octrees, bounding volume hierarchies 같은 데이터 구조는 랜더링시에 잘 적용되었지만 priori knowledge로 접근하기 때문에 알려지지 않은 scene의 geometry에 대해 자연스러운 generalization이 되지 않았습니다.

 

 

Ambiguity

기존 NeRF에서는 학습 이미지의 view와 유사한 novel view에 한해서만 좋은 성능을 보입니다. NeRF는 camera 앞에 있는 plane에 이미지를 생성할 수 있습니다. 기존 NeRF에서는 density를 0 또는 무한대로 만들기 위해 random Gaussian Noise를 넣었고, 이를 통해 반투명 density가 생기지 않게 함으로써 floater(부유물=잡음)를 줄였습니다. density에 대한 robust loss 또는 surface의 smoothness penalty와 같은 regularizer가 제안되었지만, unbounded scene 문제가 아닌 slow rendering 과 non-smooth surface와 같은 문제로 다루어졌습니다. 이러한 기존 연구들은 최초 NeRF의 point sampling을 위해 설계되었지만, Mip-NeRF 360에서는 Mip-NeRF ray 위에 정의된 continuous weight를 대상으로 설계되었습니다.

-> 이 부분은 깔끔한 해석이 안됬습니다. Ambiguity는 어떻게든 발생이 되고, 이를 줄이기 위해 regularization이 사용되어졌다 정도로만 이해하고 넘어가겠습니다. 

 

 

 

 

 

알고리즘

논문에서는 서술하고 있는 방식은 아래와 같습니다.

  • Non-linear scene parametrization
  • Online Distillation
  • Novel Distortion-based Regularizer

저는 아래 질문에 답하면서 설명해보겠습니다.

  • MLP의 입력값을 어떻게 Encoding하였는가? -> Non-linear scene parametrization
  • Ray에서 의미있는 Voxel Points를 어떻게 샘플링하였는가? -> Non-linear scene parametrization
  • MLP를 어떻게 설계하였는가? -> Online Distillation  /  Novel Distortion-based Regularizer

NeRF와 Mip-NeRF, Mip-NeRF 360 을 비교해보겠습니다.

 

 

 

 

 

MLP의 입력값을 어떻게 Encoding하였는가?

NeRF는 Positional Encoding(PE)방법을 사용했습니다. Ray위의 Point에 대해 입력값을 그대로(x,y,z)를 Network에 넣어주기엔, 입력 feature 차원이 너무 적으므로 feature의 크기를 증가시키기 위해 사용되었습니다. 아래는 NeRF논문에서 표기한 방법입니다.

이를 Mip-NeRF 논문에서 아래와 같이 표현하였습니다.

 

 

Mip-NeRF는 Integerated Positional Encoding(IPE)를 사용했었습니다. NeRF에서 point에 대해 sampling을 하기 때문에 (비슷한 거리에서 촬영한 영상들로 구성된) fixed-scale만 고려되고 multi-scale가 고려되지 못합니다. multi-scale이 고려되는 mipmap의 아이디어를 차용하여, Ray위의 Point를 Positional Encoding하지 않고 conical frustum(원뿔 절단체)를 approximation하는 Gaussian 확률 밀도 함수를 Encoding함수로 정의하여 사용했습니다.

아래는 Mip-NeRF에서 표기한 식이고

동일한 수식인 아래식은 Mip-NeRF 360 논문에서 표기한 식입니다.

 

 

Mip-NeRF 360에서는 Unbound Scene에서 Normalized기법을 사용하여 Mip-NeRF의 성능을 개선합니다. 함수를 설명한 후에 의미를 보겠습니다. Mip-NeRF의 IPE(=Integerated Positional Encoding)을 아래식으로 normalize합니다. 

샘플링된 points가 IPE를 통해 Encoding되고, 그 Encoding된 값이 위식의 x로 들어가게 됩니다. contract함수로 되어 있는데 압축의 의미를 가진다고 생각하면 될 것 같습니다.

위 그림은 contract함수를 적용 하였을 때 Visualization한 이미지입니다. 실제로 3D 형태이지만, 설명하기 위해 2D로 그려졌습니다. 회색점과 회색 화살표는 NeRF의 PE에 대해 contract를 적용하였을 경우를 표시합니다. 회색 타원형이 IPE를 나타내고, 빨간색 타원이 IPE에 contract함수에 적용 하였을 때를 나타냅니다. gaussian 분포를 갖기 때문에 타원형으로 표시됩니다. -1~1사이의 값은 회색 타원과 빨간타원이 동일한 것을 볼 수 있고, 회색 타원은 범위 제한없이 커지는 반면, 빨간 타원은 거리가 2안으로 모두 normalized되는 것을 볼 수 있습니다.

 

이제 의미를 보겠습니다. 회색 타원의 경우 카메라에서 멀리 떨어질 수록 point들의 간격이 계속 커지는 것을 볼 수 있습니다. Train/Test 데이터셋 모두 유사한 View Direction을 가지는 경우에는 문제 없지만, Test 데이터셋이 Train 데이터셋과 전혀 다른 View Direction을 가질 경우, 타원의 크기가 균등해 지지 않기 때문에 Encoding되는 값(Parameterization)이 일정하지 않음을 볼 수 있습니다. 이를 일정하게 만들기 위해, 멀리 떨어진 point들은 distance가 아닌 disparity를 기준으로 균등하게 배치 할 수 있다는 NDC(=Normalized Device Coordinates) motivation을 차용하여, 위의 contract함수가 설계되었습니다.

 

 

 

 

Ray에서 의미있는 Voxel Points를 어떻게 샘플링하였는가?

NeRF는 Ray에서 중복되지 않도록 균일하게 구간(bin)을 나누고 각 구간 내에서 랜덤하게 1개의 좌표를 선택하는 Stratified Sampling방식으로 Coarse Sampling을 1차 진행합니다. Sampling한 points들로 MLP를 통과 시킨 후에 Volume Rendering 기본 공식을 통해 Ray위의 point들의 Alpha composition값(=불투명도값)인 w를 계산한 후, w를 확률 밀도 함수(pdf)로 만들고, 해당 확률 분포로 Random Sampling을 하는 Fine Sampling이 2차적으로 수행됩니다.

Mip-NeRF에서는 NeRF와 동일하게 Coarse Sampling와 Fine Sampling가 진행됩니다. Ray위의 이전/이후 point들 중에 큰 w값으로 사용하여 Smooth하는 효과만 다릅니다. 

Mip-NeRF 360에서는 World 좌표계에 존재하는 Points를 Normalized된 contracted space인 s-space로 이동시키고, 이 s-space 위에서 균등하게 sampling을 하게 됩니다. s-space는 camera의 near, far와 Alpha composition w의 크기에 따라 변형되는 공간입니다.

NeRF는 front-facing Scene에서 NDC를 사용하였고, NDC에서 inverse depth인 disparity값으로 t-space에서 균등 간격으로 샘플링하여 사용했었습니다. Mip-NeRF에서도 disparity값으로 균등하게 샘플링하기 위해, t-space를 normalized된 s-space로 변환합니다.

tn은 카메라좌표계에서 카메라로부터 near한 t points, tf는 카메라로부터 far한 points에 해당합니다. g(x) = 1/x로써 inverse depth로 설계됩니다. 이렇게 설계할 경우 (Mip-NeRF의 coarse sampling에 해당하는) proposal sampling에서는 disparity를 통해 균등간격으로 샘플링 된 후에, (Mip-NeRF의 fine sampling에 해당하는) NeRF sampling에서는 w의 pdf값으로 랜덤 샘플링하게 됩니다.

 

 

 

 

MLP를 어떻게 설계하였는가?

NeRF는 coarse network와 fine network(파란색)가 분리되어 있고, corase network를 통과한 결과값에 대해 volume density, color값을 계산하고, 이를 Volume Rendering기본 공식을 사용하여 Alpha Composition값인 weight를 계산합니다. 그 weight값을 확률 밀도 분포로 사용(분홍색)해서 랜덤 샘플링한 것이 fine sampling값이고, fine sampling 좌표를 fine network에 넣어 똑같이 volume density, color값을 구합니다. 그렇게 구한 volume density와 color값을 ray summation(초록색)하여 pixel에 대한 color값을 계산합니다.

 

Mip-NeRF는 coarse network와 fine network가 같은 parameter를 사용하고, 다른 것은 NeRF와 동일합니다.

 

Mip-NeRF 360은 corase network 대신에 proposal network를 사용합니다. proposal network는 color값은 출력하지 않고 volume density값만 출력합니다. volume density를 통해 weight를 계산하고, 이를 확률밀도 함수로하여 샘플링해서 fine network에 해당하는 NeRF network를 통과합니다. NeRF network는 기존 방법과 동일하게 GT pixel color값으로 Loss를 구해서 network parameter가 학습됩니다. 위의 노란박스에서 Lrecon에 해당합니다.

proposal network는 이전 방법들과 다르게, NeRF network의 입출력 값으로 Distillation합니다. NeRF network가 큰 parameter를 가진 Teacher가 되고, proposal network는 적은 수의 parameter를 가진 Student가 됩니다. proposal network를 학습에 사용되는 Loss가 위에 표시된 Lprop이며, Lprop는 출력값의 차이만 계산 한 후에 NeRF Network의 parameter는 stop gradient가 적용되어 학습되지 않습니다. 아래는 Lprop수식입니다.

햇이 붙은 것이 proposal network의 입출력 값에 해당합니다. Student가 Teacher보다 출력 값이 작아지도록 Loss가 설계되어집니다. proposal network는 샘플링 단계에서 surface가 어디쯤인지를 가이드해주는 역할을 하기 때문에, 정확하지 않아도 됩니다.

이러한 proposal network는 2단계로 구성됩니다. 위의 Prop.1과 NeRF 글자 사이에 ...이라고 표시된 것을 볼 수 있습니다. 아래는 train진행이 됨에 따라 NeRF, Proposal 1, Proposal2 의 weight값을 비교한 그림입니다.

 

 

Mip-NeRF 360에서는 추가적으로 Regularization Loss가 설계 됩니다. small disconnected 영역, blurry cloud으로 나타나는 "floater"(3D잡음)과 카메라와 물체가 가까워질 때 반투명의 cloud로써 나타나는 "background collapse"를 제거하기 위해 Regularization Loss인 Ldist가 사용됩니다. ray위의 샘플링된 모든 2개 점에 대해서, 아래 Loss를 계산합니다.

첫번째 term은 s-space에서 interval midpoints의 weighted distance를 최소화하고, 두번째 term은 각 interval의 weighted size를 최소화합니다. 아래 그림은 위 수식의 효과를 시각화한 것인데, surface인 중간 영역의 weight를 최대화시키고, width를 줄여서, surface가 아닌 영역의 artifact를 제거시킵니다.  

 아래 depth map을 보면 Ldist를 적용할 경우와 아닐 경우의 실험결과를 볼 수 있습니다. [33]은 최초 NeRF논문을 언급합니다.

Mip-NeRF 360은 최종적으로 아래 Loss로 설계 됩니다. 

 

 

 

Evaluation

camera exposure setting이 고정되고, lighting variation이 최소화되고, 물체 움직이 없는 9개 Scene에 대해 평가하였습니다. 평가지표에 대해서는  PSNR/SSIM/LPIPS 글에 소개해두었습니다.

NeRF++는 Unbounded Scene을 위해 inside, outside로 구분하여 2개의 MLP로 사용한 연구입니다. DONeRF는 logarithmically-spaced sampling을 하고 다른 contraction을 사용한 연구입니다. Mip-NeRF를 포함하여 NeRF base연구들이며 성능이 Mip-NeRF 360보다 낮음을 볼 수 있습니다. Stable View  Synthesis는 sfm로 생성된 proxy geometry를 조합한 MLP를 사용한 연구이며, Deep Blending, Point-Based Neural Rendering 연구를 포함하여 NeRF를 사용하지 않았습니다. Stable View Synthesis(SVS)의 LPIPS성능이 높은 것을 볼 수 있는데, NeRF는 pixel Loss를 minimize하는 반면 SVS는 LPIPS Loss를 minimize하기 때문에 성능이 높습니다. 학습 시간 관점에서 mip-NeRF, NeRF++의 네트워크 크기를 비슷하게 맞췄을 때, Mip-NeRF 360이 3배이상 빠른 것을 볼 수 있습니다.

 

 

 

 

Ablation Study

A) Lprop를 제거하였을 때 큰 성능하락이 있었습니다. Proposal MLP를 학습시키지 않았다는 것은 surface인 곳을 샘플링하지 않았다는 의미이기 때문에, 당연한 결과라고 생각됩니다.

B) floater를 줄여주는 Ldist만을 제거하였을 경우, 좋은 평가수치를 보였습니다. 평가수치로는 높지만 실제 눈으로보면 Artifacts가 많을 것이라 생각됩니다.

C) 최초 NeRF에서는 Gaussian Noise를 넣어줘서 floater를 줄였었습니다. floater를 줄이기 위해 Ldist대신에 Gaussian Noise를 적용 했을 경우의 결과입니다. 

D) Proposal MLP를 제거 하였을 경우, 성능하락은 미미하지만 훈련시간이 대폭 늘어나게 됩니다.

E) Proposal MLP를 제거하고 Mip-NeRF와 같이 Corase network를 사용하여 학습할 경우 입니다.

F) NeRF MLP의 parameter를 줄였을 때 성능 하락이 발생하지만, 훈련시간과 모델 크기는 줄어들게 됩니다.

E) Mip-NeRF의 IPE를 사용하지 않고 NeRF의 PE를 사용할 경우에 퀄리티가 약간 줄게됩니다.

H) Contraction을 사용하지 않을 경우도 약간의 성능 하락이 발생합니다.

I) s-space로 표현할 때, g(x)를 1/x가 아닌 log(x)를 사용할 경우의 결과입니다.

 

 

 

 

Limitation

Unbounded Scene에 대해서 상당한 성능 개선이 있었지만 완벽하지 않습니다. 1) 자전거 spoke(휠에 창살)와 입사귀의 입맥와 같이 가느다란 사물에 대해서는 detail한 특징을 잡아내지 못하게 됩니다. 2) 카메라가 Scene의 중심으로부터 멀리어질 경우 퀄리티가 줄어들게 됩니다. 3) 학습시간이 여전히 오래 소요됩니다.

 

 

 

Closing..

여러 논문에서 많이 인용되지만 NeRF, Mip-NeRF 기본 개념이 확실히 잡혀 있지 않으면 읽기 어려운 논문이었네요. 읽는데 상당한 시간이 걸렸습니다. NeRF의 특성을 확실히 이해하는데 도움이 되는 논문이지 않을까 합니다. NeRF의 기본개념을 다지기 위한 후속 논문으로 Zip-NeRF (CVPR2023) 연구도 읽어보길 추천합니다. Mip-NeRF, Mip-NeRF 360, Zip-NeRF 셋다 구글에서 같은 저자가 썼네요.

댓글