본문 바로가기
AI

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

by 구운밤이다 2021. 11. 8.
728x90
반응형

Abstract. Novel view synthesis ⇒ input:sparsely sampled 된 여러장 이미지 ⇒output input으로 주지 않았던 새로운 뷰에대한 이미지 합성. 복셀 cnn 처리 용이 큐브 인풋. 이용한 mlp로 파라미터화 된 연속 함수 xy 주고 rgb out 2차원. 3차원 좌표 기반 표현 어떻게? xyz가 물체 안일때 network 입력시 음수 밖일때 양수 piff 논문 ⇒ color 대략 복원. 3차원 좌표로 3d 장면 표현 불충분 ⇒ input xyztheta phi ⇒ out rgb, output density 물체가 볼륨 어떻게 차지하는지.

  • 그림 1: 입력 이미지 집합에서 장면의 연속적인 5D Nerf 표현(연속 위치에서 볼륨 밀도, 뷰 의존적 컬러)을 최적화하는 방법을 제시. 볼륨 렌더링의 기술을 사용하여 광선을 따라 이 장면 표현의 샘플을 쌓아 모든 뷰포인트에서 장면을 렌더링한다. 여기서는 반구에서 무작위로 캡처한 합성 드럼 장면의 100개 입력 뷰 세트를 시각화하고 최적화된 NeRF 표현에서 렌더링된 두 개의 새로운 뷰를 보여준다.

Introduction

연속 5D 장면 표현의 매개 변수를 직접 최적화하여 캡처된 이미지 집합의 렌더링 오류를 최소화함으로써 오랜 기간 지속된 뷰 합성 문제를 새로운 방식으로 해결한다. 공간의 각 지점(x,y,z)에서 각 방향(θ,φ)에서 방출되는 광도radiance를 출력하는 연속 5D 함수와 (x, y, z) 통과하는 ray에 의해 누적되는 광도를 제어하는 differential 불투명도처럼 작용하는 각 지점의 밀도로 정적 장면을 나타낸다. 이 방법은 단일 5D 좌표(x, y, z, θ, φ)에서 단일 볼륨 밀도와 뷰 의존 RGB 색상으로 회귀하여 이 함수를 나타내도록 Conv layer 없이 FCN(MLP)을 최적화한다. 특정 뷰포인트에서 이 신경 방사장(NeRF)을 렌더링하려면 1) 카메라 ray를 scene으로 이동하여 샘플링된 3D 포인트 집합을 생성하고, 2) 해당 2D viewing directions을 네트워크에 입력하여 컬러와 밀도의 출력 집합을 생성하고, 3) 고전적인 볼륨 렌더링 기술을 사용해 이러한 색상과 밀도를 2D 이미지로 쌓는다. 이 프로세스는 자연적으로 미분가능하기 때문에, 우리는 각 관찰된 이미지와 우리의 표현에서 제공된 해당 뷰 사이의 오류를 최소화하는데, 모델을 최적화하기 위해 경사 하강법을 사용할 수 있다. 여러 뷰에서 이 오류를 최소화하면 네트워크는 실제 기본 장면 콘텐츠를 포함하는 위치에 높은 볼륨 밀도와 정확한 컬러를 할당해 장면의 일관성 있는 모델을 예측할 수 있다.

복잡한 장면에 대해 Nerf 표현을 최적화하는 기본 구현은 고해상도 표현으로 수렴되지 않으며 카메라 레이당 필요한 샘플 수가 비효율적이다. 우리는 입력 5D 좌표를 MLP가 더 고주파(high-freq) 함수를 나타낼 수 있는 위치 인코딩으로 변환하여 이러한 문제를 해결하고, 이 고주파 장면 표현을 적절하게 샘플링하는 데 필요한 쿼리 수를 줄이는 계층적 샘플링 절차를 제안한다. 이 접근 방식은 볼륨 표현의 장점을 상속한다. 볼륨표현, 이 방법 둘 다 복잡한 실제 기하와 외관을 나타낼 수 있고 투영된 이미지를 사용한 경사 기반 최적화에 매우 적합. 또한, 고해상도의 복잡한 장면을 모델링할 때 이산화된 복셀 그리드의 공간 복잡도를 낮춘다.

Contributions

  • MLP 네트워크로 파라미터화되는 복잡한 기하와 재료를 가진 연속 장면을 5D Nerf로 표현하기 위한 접근.
  • 표준 RGB 이미지에서 이러한 표현을 최적화하기 위해 사용하는 고전 볼륨 렌더링 기술을 기반으로 한 미분가능한 렌더링 절차 제안. 여기에는 가시적인 장면 콘텐츠가 있는 공간에 MLP의 용량을 할당하는 계층적 샘플링 전략 포함.
  • 각 입력 5D 좌표를 고차원 공간에 매핑하기 위한 위치 인코딩은 고주파 장면 콘텐츠를 나타내도록 Nerf를 성공적으로 최적화하게 해준다.

이 논문은 자연 환경에서 캡처한 RGB 이미지에서 실제 물체와 장면의 고해상도 사실적 뷰를 렌더링할 수 있는 최초의 연속적인 신경 장면 표현Nerf을 제시한다.

2. Related work 생략

그림 2: nerf 장면 표현과 미분가능한 렌더링 절차. 카메라 광선(a)을 따라 5D 좌표(위치 및 보기 방향)를 샘플링하고 해당 위치를 MLP에 공급해 색상과 볼륨 밀도(b)를 생성하고 볼륨 렌더링 기술을 사용하여 이러한 값을 이미지(c)로 합성한다. 이 렌더링 기능은 미분할 수 있으므로 합성된 영상과 ground truth 관측 영상(d) 사이의 residual을 축소하여 장면 표현을 최적화할 수 있다.

3. Neural Radiance Field Scene Representation

입력이 3D 위치 x = (x,y,z) 및 2D 보기 방향 (θ,φ)이고 출력이 방출 컬러 c = (r,g,b) 및 볼륨 밀도 σ인 5D 벡터 값 함수로 연속 장면을 나타낸다. 실제로, 방향을 3D Cartesian 단위 벡터 d로 표현한다. MLP 네트워크 FΘ : (x, d) → (c, σ)을 사용하여 이 연속 5D 장면 표현을 근사하고 각 입력 5D 좌표에서 해당 볼륨 밀도, 방향 방출 컬러로 매핑하도록 가중치 Θ을 최적화한다. (network 안에 기억된 정보 neural radiance fields)

여기서 RGB 색상 c를 위치와 시야 방향의 함수로 모두 예측할 수 있도록 네트워크를 제한하여 볼륨 밀도σ를 예측하도록 함으로써 다중 뷰가 일관되게 만든다. 이를 위해 MLP FΘ는 먼저 8개의 FC 레이어(ReLU activations, layer당 256 채널)로 입력 3D 좌표 x를 처리하고 σ와 256차원 feature 벡터를 출력한다. 그런 다음 이 feature 벡터는 카메라 광선의 시야 방향과 연결되고, 뷰 의존 RGB 색상을 출력하는 하나의 FC layer(ReLU 활성화 및 128 채널 사용)로 전달된다. xyz만 먼저 통과 output density 먼저 통과 시켜 volume density 구하고, viewing direction 2개 합쳐 rgb 구함. 이유: non 람배르지안 효과: 보는 각도에 따라 상관없이 색, 반사율 동일. (논이니까 반대 - 대부분의 반사율 가진 물체들) - volume density 는 각도에 따라 상관 없어야함. ⇒ rgb는 보는 각도에 따라 다르므로 시야 방향 나중에 넣어줌. non-Lambertian 효과를 나타내기 위해 입력 뷰 방향을 사용하는 방법의 예 ⇒ 그림 3. 뷰 의존성 없이 훈련된 모델(x만 입력)은 규격 표현하기 어렵다 ⇒ 그림 4.

  • 그림3: 뷰에 따라 방출된 광도. 여기서 Ship 장면의 신경 표현을 볼 때 (a)와 (b)에서, 두 개의 서로 다른 카메라 위치에서 고정된 두 개의 3D 지점(하나는 배의 측면(주황색 inset), 다른 하나는 수면(파란색 inset))의 모습을 보여준다. 즉 보는 방향에 따라 RGB값 달라짐.

4. Volume Rendering with Radiance Fields

5D neural radiance field은 공간의 어떤 지점에서든 부피 밀도, directional emitted radiance로 장면을 나타낸다. 고전적인 볼륨 렌더링의 원리를 사용하여 장면을 통과하는 모든 광선의 컬러를 렌더링한다. 부피밀도 σ(x)는 x 위치의 극소입자infinitesimal particle에서 끝나는 광선의 미분 확률로 해석할 수 있다. tn과 tf를 갖는 카메라 광선 r(t) = o + td예상 색상 C(r)는 다음과 같다.

함수 T(t)는 tn에서 t까지 광선을 따라 누적된 투과율transmittance, 즉 광선이 다른 입자와 충돌하지 않고 tn에서 t로 이동할 확률을 나타낸다. 불투명한 물체 앞에 많으면 투과율 낮아짐. (얼마나 잘 보이는지. 2d로 투영했을때 해당 샘플된 점이 2d 좌표 색에 얼마나 기여하는지) 연속 Nerf에서 뷰를 렌더링하려면 원하는 가상 카메라의 각 픽셀을 통해 추적되는 카메라 광선에 대해 이 적분 C(r)를 추정해야 한다. c(r(t),d) = ray 지나가는 3d좌표의 색, σ(r(t)) = t 지점의 볼륨 밀도, particle들이 얼마나 차지하고 있는지 [0, 1]

직교법quadrature을 사용하여 이 적분을 수치적으로 추정. 일반적으로 이산화된 복셀 그리드를 렌더링하는 데 사용되는 deterministic 직교법은 MLP가 고정된 이산 위치 집합에서만 쿼리되기 때문에 표현의 해상도를 효과적으로 제한한다. 대신 [tn, tf]를 N개의 동일 간격의 빈으로 분할한 다음 각 빈 내에서 무작위로 샘플 하나를 추출하는 계층화stratified된 샘플링 방식을 사용한다. 모두 알수 없으므로 샘플링해 적분을 summation 근사

적분을 추정하기 위해 이산 샘플 세트를 사용하지만, 계층화된 샘플링은 최적화 과정에서 MLP가 연속적인 위치에서 평가되어서 연속 장면 표현을 나타낼 수 있다.

여기서 샘플링한 점들 사이 거리는 $$δ_i = t_{i+1} − t_i$$는 인접 표본 사이의 거리. $$(c_i,σ_i)$$ 값의 집합으로부터 $$\hat{C}(r)$$을 계산하기 위한 함수는 미분 가능하며 알파 값 αi = 1 − exp(−σiδi)인 전통적인 알파 합성으로 감소한다.

  • 그림 4: 전체 모델이 뷰에 의존적인 emitted radiance를 나타내고 고주파 위치 인코딩을 통해 입력 좌표를 전달함으로써 어떻게 이익을 얻는지 시각화한다. 뷰 종속성을 제거하면 모델이 Bulldozer tread에 반사를 재생성할 수 없다. 위치 인코딩을 제거하면 모델의 고주파 기하, 텍스처 표현 능력이 크게 저하되어 지나치게 매끄러운 모양이 된다.

5 Optimizing a Neural Radiance Field

이전 절 ⇒ 장면을 neural radiance field으로 모델링하고 이 표현에서 새로운 뷰를 렌더링하는 데 필요한 핵심 구성 요소를 설명. 그러나 이러한 구성요소는 최첨단 품질을 달성하기에 충분하지 않다. 고해상도 복잡한 장면을 나타낼 수 있도록 두 가지 개선 사항을 소개. 첫 번째는 고주파 함수를 나타내는 MLP를 지원하는 입력 좌표의 위치 인코딩이고, 두 번째는 이 고주파 표현을 효율적으로 샘플링할 수 있는 계층적 샘플링 절차이다.

5.1 Positional encoding

신경망이 범용 함수 근사치라는 사실에도 불구하고, 우리는 네트워크 FΘ이 xyzθφ 입력 좌표에서 직접 작동하면 색상과 기하학의 고주파 변동을 표현하는 데 성능이 떨어지는 렌더링이 발생한다는 것을 발견했다. 이는 심층 네트워크가 lower-freq 함수를 학습하는 것으로 편향되어 있다는 것. 또한 입력을 네트워크에 전달하기 전에 고주파 함수를 사용하여 고차원 공간에 매핑하면 고주파 variation을 포함하는 데이터에 잘 fit시킬 수 있다. (이파리, 에어컨 날 등 처음 저주파 함수 배우므로 표현 못함 ⇒ 다음 논문 fourier feature로 냄)

우리는 neural 장면 표현의 맥락에서 이를 활용하고, FΘ을 학습된 것과 그렇지 않은 것의 두 가지 함수인 FΘ = FΘ′ ◦ γ의 구성으로 재구성하면 성능이 크게 향상한다(그림 4와 표 2). 여기서 γ는 R에서 더 높은 차원의 공간 R2L로의 매핑이며, FΘ′는 여전히 단순히 정규 MLP이다. 인코딩 함수 γ:

함수 γ(·)는 x의 세 좌표 값 각각([-1, 1]로 정규화)과 Cartesian 시야 방향 단위 벡터 d의 세 구성 요소([-1, 1]에 생성)에 별도로 적용된다. 실험에서, γ(x)에 대해 L = 10, γ(d)에 대해 L = 4로 설정. Positional encoding 으로 차원 증가시킴 60: xyz를 20개로 증강 24: 세타 파이를 각각 (직각좌표계 사용)3d 좌표벡터 * 4 = 24

유사 매핑이 트랜스포머 아키텍처에서 사용되며, 위치 인코딩이라고 한다. 그러나 트랜스포머는 순서 개념이 없는 아키텍처에 대한 인풋으로 시퀀스에서 토큰의 이산적인 위치를 제공하는 다른 목적으로 사용한다. 대조적으로, 이러한 함수를 사용하여 연속 인풋 좌표를 더 높은 차원 공간에 매핑하여 MLP가 더 쉽게 더 높은 주파수 함수를 근사할 수 있도록 한다.

5.2 Hierarchical volume sampling

각 카메라 광선을 따라 N개의 쿼리 지점에서 Nerf 네트워크를 조밀하게 평가하는 렌더링 전략은 비효율적이다: 렌더링된 이미지에 기여하지 않는 free 공간과 가려진 영역은 여전히 반복적으로 샘플링됨. 볼륨 렌더링의 초기 작업에서 영감 얻고, 최종 렌더링에 대한 예상 효과에 비례하여 샘플을 할당하여 렌더링 효율성을 높이는 계층적 표현을 제안. 물체의 컬러가 있는 부분을 샘플링 하고 싶음

장면을 나타내기 위해 단일 네트워크를 사용하는 대신, 우리는 동시에 두 개의 네트워크(하나는 "coarse" 네트워크, 하나는 "fine" 네트워크)를 최적화한다. 먼저 계층화된 샘플링을 사용하여 Nc개 위치 세트를 샘플링하고 식 2와 3에 설명된 대로 이러한 위치에서 "coarse" 네트워크를 평가한다. ray 를 Nc개 빈으로 나눈다음 빈에서 샘플 하나씩 뽑음. 이 "coarse" 네트워크의 출력이 주어지면, 샘플이 볼륨의 관련 부분으로 bias되는 각 광선을 따라 더 많은 정보를 가진 포인트 샘플링을 생성한다. 이를 위해 먼저 식 3의 coarse 네트워크 Cˆ_c(r)에서 알파 합성 색상을 광선을 따라 샘플링된 모든 색 ci의 가중 합으로 다시 작성한다.

이러한 가중치를 $$\hat{w}_i = w_i/\Sigma_{j=1}^{N_c} w_j$$로 정규화하면 광선을 따라 piecewise-constant PDF가 생성된다. 가중치 분포에서 역변환 샘플링을 사용하여 이 분포에서 두 번째 Nf개 위치 세트를 샘플링하고, (가중치 분포가 높은 부분(color contribution 많이 하는 곳)에서 샘플링 많이함.) 첫 번째 및 두 번째 샘플 집합의 결합으로 "fine" 네트워크를 평가하고, 모든 Nc+Nf의 샘플로 식3을 사용해 Cˆf(r) ray의 최종 렌더링 색을 계산한다. 이 절차는 가시적인 콘텐츠를 포함할 것으로 예상되는 영역에 더 많은 샘플을 할당한다. 이것은 중요도 샘플링과 유사한 목표를 다루지만, 우리는 각 샘플을 전체 적분의 독립적인 확률적 추정치로 처리하는 대신 샘플링된 값을 전체 적분 도메인의 불균일 이산화로 사용한다.

5.3 Implementation details

각 장면에 대해 별도의 neural 연속 볼륨 표현 네트워크를 최적화한다. 이는 장면의 캡처된 RGB 이미지 데이터 세트, 해당 카메라 포즈와 고유 매개 변수, 장면 경계만 필요하다. 각 최적화 반복 시, 데이터셋의 모든 픽셀 집합에서 카메라 레이 배치를 무작위로 샘플링한 다음 5.2에 설명된 계층적 샘플링을 따라 coarse 네트워크에서 Nc 샘플, fine 네트워크에서 Nc + Nf 샘플을 쿼리한다. 그런 다음 4.에서 설명한 볼륨 렌더링 절차를 사용하여 두 샘플 집합의 각 ray 색상을 렌더링한다. loss는 단순하게 coarse 렌더링과 fine 렌더링 모두에 대해 렌더링된 픽셀 색상과 실제 픽셀 색 사이의 총 제곱 오차.

여기서 R은 각 배치의 ray 집합이고, C(r), Cˆc(r), Cˆf(r)는 각각 ground truth, coarse, fine 부피 예측 RGB 색이다. 최종 렌더링은 Cˆf(r)에서 나오지만, 우리는 Cˆc(r)의 손실 또한 최소화하여 coarse 네트워크의 가중치 분포에서도 fine 네트워크의 샘플을 할당하는 데 사용할 수 있다. 실험에서 4096개 ray의(인풋 뷰포인트 4096) 배치 크기를 사용하는데, 각각 coarse 볼륨의 Nc = 64 개 좌표와 fine volume의 Nf = 128개의 추가 좌표로 샘플링된다. 우리는 5 × 10-4에서 시작⇒ course 최적화 과정에서 5 × 10-5로 기하급수적으로 감소하는 학습 속도로 Adam optimizer를 사용한다(다른 Adam 하이퍼 파라미터는 기본값 β1 = 0.9, β2 = 0.999, ε = 10-7). 단일 씬에 대한 최적화는 일반적으로 단일 NVIDIA V100 GPU(약 1~2일)로 수렴하는 데 약 100~30만 번의 반복.

Ablation study

frequency너무 증가시키면 (이미지가 가진 주파수보다 크게) 크게 영향 못미친다. L = 10 일때 성능 제일 좋았음

728x90
반응형

댓글