저자: Ben Mildenhall
소속: UC Berkeley
학회: ECCV 2020 Best Paper
인용 수: 3094
Baseline
- Volume density: 3차원에서 각 지점에 대한 opacity or transparency (투명도 혹은 불투명도) 색상의 밝기 정도로 보자.
++ 자세히 파고 들어가면, 해당 지점에서 물체가 차지하는 정도이다. 따라서 3D Modeling에서 물체의 보는 각도에 따른 시각적인 특성, 굴절, 반사 그림자 등을 모사하는데 중요한 역할을 한다.
- emitted radiance: RGB값.
- Volume scene function: 모든 3D 픽셀 공간에 volume density and color 할당하는 것 이다.
- Volume rendering: 3차원 이미지 데이터를 바탕으로 2D에 Projection 한 것.
- volume rendering is naturally differentiable: volume rendering을 성공적으로 수행하기 위해, volume density를 찾기 위해 sampling 혹은 interpolation과 같은 과정을 필요로 하며, 이 과정에서 수학적으로 미분이 가능하다는 것을 의미한다.
Abstract
- Complex scnce(3D)를 통합하는 새로운 view를 제시하는 부분에서 기본&연속적인 volume scene function을 최적화하여 SOTA를 달성하였다.
- 5개의 입력(x,y,z & θ, ϕ)과 간단한 Fully-connected Network를 사용하여 입력 위치에 대한 volume density와 emitted radiance 값을 예측한다.
++ x,y,z는 우리가 보고싶은 물체의 지점, 좌표 시스템에서의 위치이다. (아래 Figure 참조), θ, ϕ는 viewing direction이다.
- volume rendering은 naturally differentiable하므로, 수식을 통해 x,y,z, θ, ϕ만 가지고 우리가 원하는 3D 표현이 가능하다.
++ 특정 방향에서의 이미지는 θ, ϕ는 COLMAP이라는 라이브러리를 활용하여 알아내며, θ, ϕ를 기준으로 한 x,y,z는 이미지에 반영되어있게 된다. 즉 입력 2D 이미지는 정답과 같은 역할을 하며 2D 입력 이미지만 가지고 3D 표현이 가능하다.
- NERF를 통해 어떻게 복잡한 3D 장면을 최적화 했는지 보여줄 것이다.
1. Introduction
- 주요 관점 (Figure 참조)
1. 3D Point를 생성하기 위해 Camera Ray를 이동시키며 다양한 view로 물체를 투과시킵니다.
2. 1의 Point와 2D로 보이는 이미지를 활용하여 Network의 input으로 넣어 output의 value와 density를 예측합니다.
3. Classical volume rendering방식을 사용하여 color와 density를 2D 이미지로 구성합니다. (C)
- classical volume rendering방식은 naturally differentialbe 하므로, 같은 시점에서 관측된 이미지와 예측된 이미지의 차이를 Gradient Descent Algorithm을 통해 해결하면 된다.
- 다양한 View에서 Error를 Miniminze하는 과정은 모델이 일정한 high volume density와 정확한 color를 예측할 수 있게 만들며, 이는 사실적인 scene을 포함하게 만든다. (복잡한 Real-world geometry를 표현 가능하다)
- NERF를 최적화하는 과정은, 높은 해상도 이미지를 필요로 하지 않는다. 그 이휴는 이미지 해상도가 높아질수록 우리는 더 많은 양의 광선을 필요로 하며, 이는 우리의 모델이 수렴하기 어렵게 만든다.
- 따라서 위의 문제를 해결하기 위해 5개의 입력과 출력이미지를 고주파로 만들어주는 Positional Encoding을 사용했다.
++ hierarchical sampling방식을 사용하여 기존의 방법보다 더 적은수의 sample로도 고주파 scene 표현이 가능하다.
- NERF는 고해상도 이미지에서 복잡한 scene 모델링의 prohibitive storage costs of discretized voxel grids 문제 해결.
Contribution.
- 복잡한 형상(물체)를 연속적인 scene로 rendering할 때, 5D neural raiance field를 MLP model을 사용해 해결하였다.
- classical volume rendering 방법이 미분 가능하다는 점을 바탕으로, hierarchical 샘플링 방식을 활용하여 RGB 표현을 최적화 하는데 사용한다.
- Positional Encoding 방식을 사용하여 5D 좌표를 고차원 공간에 mapping할 수 있게 만들어주며, 이는 성공적으로 NERF의 최적화가 가능하게 하여 고화질 scene을 만들 수 있게 해준다.
++ NERF는 질적 및 양적으로 SOTA의 view를 능가하며, CNN 기반의 방식만큼 정확한 표현이 가능함을 보여준다.
2. Related work
- pass
3. Neural Radiance Field Scene Representation
- 아래의 이미지가 NERF의 전체적인 요약이라고 보면된다.
(a) 5D (3D (x,y,z) + 2D (θ,ϕ)) 입력을 입력을 모델에 넣는다.
(b) 해당 위치의 RGB값과 σ값인 volume density를 예측한다.
(c) volume rendering기술을 활용하여 이미지를 합성한다.
(d) rendering 방법이 미분 가능하다는 점을 바탕으로 (c)에서 통합된 값과 ground truth의 값을 Loss로 활용한다.
- 아래의 그림을 참고하여 모델을 보았을 때, 지속적인 multi-view 학습을 통해 volume density σ는 방향에 관계없이 독립적이게 되며, RGB 값은 방향 및 물체의 위치까지 영향을 받아 값을 예측하게 된다. 이는 어떠한 방향에서 바라보더라도 RGB값은 비슷하게 유지되게 하며, 위치에 따른 빛의 밝기는 일정하게 되도록 한다.
- 모델의 구조 또한 아래와 같다. 8개의 FCN을 통과하며, 각 256 layer는 output = 256, ReLU 사용, channel 수는 256이다.
(channel 수: input output 차원이 256 으로 해석)
- 초반의 r(x)는 Positional Encoding 값을 넣어주는 과정이며, 마지막은 direction 정보에 Positional encoding을 더해 σ값을 예측한다.
- 주황색 화살표는 Activation function이 존재하지 않는 layer이다.
- 마지막 layer의 점선 화살표는 sigmoid 이며, RGB가 255개의 pixel로 이루어져 있으므로 128x2 -1 (0 2개) 하면 255개라서 128을 사용한다.
- DeepSDF architeture와 비슷하며 layer는 8개, 중간에 5번째 layer에서 다시 값을 넣어주는 skip connection이 존재한다.
4. Volume Rendering with Radiance Fields
- 카메라 ray r에 대한 기대 색상 C(r)은 아래와 같이 정의할 수 있다.
- 카메라 위치 및 각도에 대한 물체의 기대 색상을 구하기 위해 t_near부터 t_far까지 적분을 통해 색을 누적한다. 하지만 실제로 우리가 구하고 싶은 것은 t 위치의 색상이므로, t_near부터 t 위주로 볼 예정이다.
- 카메라 ray r은 o + td로 정의할 수 있다. o는 시작점이며, d는 방향 vector이다.
- σ(r(t))는 volume density값으로 t 지점에서 물체가 어느정도의 밀도를 가지고 있는지 0부터 1사이로 나타낸다.
- σ(r(t))c(r(t), d)는 카메라 광선 r에서의 각 지점 t의 volume density값(σ(r(t)))과 물체를 예측한 색을 반영한 값이다.
- 여기에 dt를 반영함으로써 특정 지점에서의 색을 예측 가능하게 한다.
- 그리고 T(t)는 exp를 활용한 수식으로 변환이 가능한데, 우리가 dt에서의 volume density와 color를 예측한 것과 비슷하게, t_near부터 t까지 volume density(σ)를 r(s)라는 임의의 시점에 대해 ds를 곱해 해당 부분의 밀도를 구한다.
- 또한 밑의 exp그래프는 값이 작을수록 양수를, 클수록 0에 수렴하는데, volume density가 낮을수록 뒤의 있는 물체를 더 잘 표현하겠다라는 의미가 된다.
- 위의 C(r)을 바탕으로 실제 모델이 만들어내는 C_hat값을 수식으로 나타내면 아래와 같다.
- δ를 사용하여 적분 기호를 없애주었으며, Alpha composing(투명도 반영 기술)을 사용하여 기존의 σ값을 1-exp(-σ)로 바꿔주었다. 이는 C(r)에서 T(t)를 정의하기 위해 exp() 함수를 쓴 것처럼 volume density를 반영해주기 위해 exp를 사용했다
- 파란색 동그라미를 주황색에 반영 할 때, 앞에 물체가 얼마나 있는지 (T(t)), 파란색 원을 얼마나 반영할지 (1-exp(-σδ)),
ci는 예측한 색이다.
5. Optimizing a Neural Radiance Field
- 기존에 설명한 방식만으로는 위의 사진과 같이 디테일한 부분의 정확도가 떨어지며, SOTA를 달성할 수 없어서, 아래와 같은 기술을 추가하였다.
5.1 Positional encoding
- Rahaman의 논문에 의하면, Deep Network는 낮은 주파수를 학습하는데 치우쳐져 있다고 주장한다.
https://proceedings.mlr.press/v97/rahaman19a.html 나중에 읽어봐야지.
- 또한 더 높은 차원 공간의 입력을 집어 넣으면 네트워크가 고주파 특성을 포함하는 것이 가능함을 보였다.
- 따라서 아래와 같이 mapping function γ를 사용하여 ℝ → ℝ^{2L} 크기의 High dimension에 mapping을 시도한다.
5.2 Hierarchical volume sampling
- 기존에 소개한 uniform 분포의 NERF sampling방식은 비효율적이다. free space와 occluded region은 이미지를 렌더링하는데 기여를 하지 않기 때문이다.
- 따라서 하나의 네트워크만 가지고 구현하는 것이 아닌, 동시에 "coarse" and "fine" 한 2개의 모델을 동시에 최적화한다.
- "Coarse" 모델은 위에 정의한 Equation 2의 수식의 분포를 사용하여, 실제 모델이 예측하는 C_hat을 근사하는데 사용된다.
- 이는 위와 같이 hat_C_c로 만들어지며, 이 weight를 바탕으로 fine Network의 sampling을 진행합니다.
- 따라서 아래와 같이 Nc + Nf와 같이 샘플링 되며, Nc는 전체적인 이미지를, Nf는 구체적인 부분을 학습할 수 있습니다.
5.3 Implementation details
- R은 배치 내에서의 각 ray를 의미한다.
- C(r)은 실제 정답 값, C_hat_c는 coarse volume predicted. C_hat_f는 fine volume predicted이다.
- 배치 Ray는 4096개, Nc = 64, Nf = 128, Adam optimier에 5 x 10 ** -4 Learning rate와 5 x 10**-5의 decay를 사용했다.