Author: Jihwa Lee
Team: Autonomous Driving Team @ CAI Lab
Date: 2023/01/24
출처: https://arxiv.org/pdf/2210.00379v1.pdf
NeRF: Neural Radiance Field in 3D Vision, A Comprehensive Review 리뷰 (1)
https://jhrobotics.tistory.com/90
[3D Reconstruction] NeRF: Neural Radiance Field in 3D Vision, A Comprehensive Review 리뷰 (1)
Author: Jihwa Lee Team: Autonomous Driving Team @ CAI Lab Date: 2023/01/18 출처: https://arxiv.org/pdf/2210.00379v1.pdf 더보기 리뷰를 하기에 앞서 원래 Instant-ngp를 먼저 보려고 하였으나, 앞부분만 간단히 읽어본 결과 NeRF
jhrobotics.tistory.com
2.2 Neural Radiance Field(NeRF) Theory
NeRF는 *novel view synthesis를 위해 2020년 Mildenhall et al.에 의해 처음 제안되었다.
Novel view synthesis란?
특정 몇 개의 시점의 이미지들로부터 주어지지 않은 시점의 모습을 Continuous하게 형성하는 기술
NeRF는 복잡한 장면들을 매우 사진과 같이 view synthesis를 해냈고 이 분야에서 많은 관심을 받았다.
NeRF 모델은 3차원 장면들을 neural network를 통해 추정한 radiance field로 표현했다.
여기서 radiance field는 장면의 모든 방향의 모든 point의 color와 volume density를 의미한다.
Radiance field를 수식으로 나타내면 아래와 같다.
$$F(\textbf{x},\Theta ,\phi ) \underset{}{\rightarrow}(c,\sigma )$$
여기서 $\textbf{x}$는 장면 속의 좌표값으로 $\textbf{x}=(x,y,z)$라고 정의할 수 있다.
$(\Theta , \phi)$는 azimuthal과 polar viewing angles을 의미한다. 이는 3D Cartesian unit vector로 표현되기도 한다.
$c$는 $c= (r,g,b)$라고 정의할 수 있고 $\sigma$는 volume density를 의미한다.
앞서 살펴본 5D function은 하나 혹은 더 많은 Multi-Layer Perceptron(MLP)에 의해 추론된다.
Baseline NeRF model에서는 MLP는 two-stage로 구성되어있다.
- first stage : input $\textbf{x}$를 통해서 volume density인 $\sigma$와 output으로 feature vector를 도출
- second stage : input으로 first stage output인 feature vector를 viewing direction $d$와 concat해서 output으로 $c$를 도출
NeRF를 처음 제안한 Mildenhall은 $\sigma$ MLP와 $c$ MLP를 같은 neural network의 두 개의 branch로 구성하였으나, 많은 다른 저자들이 두 개의 분리된 MLP로 구현을 고려하였다.
NeRF model을 이용한 novel view synthesis는 거의 모두 아래 과정을 따른다.
- (a) : 이미지 속의 모든 pixel은 synthesized되기 위해 장면들을 카메라 ray를 통해 sampling point를 만든다.
- (b) : 각각의 sampling point에 대해 viewing direction과 sampling location을 이용해 local color와 density를 추출한다.(이는 NeRF MLP를 통해 계산된다.)
- (c) : color와 density를 통해 이미지를 생성하기 위해 volume rendering를 사용한다.
조금 더 자세히 살펴보면, 주어진 volume density와 color function, volume rendering은 아무 camera ray $r(t) = o+td$($o$: camera position, $d$: viewing direction)의 $C(r)$를 얻기 위해 사용된다.
$$C(r)=\int_{t1}^{t2}T(t)\cdot \sigma (r(t))\cdot c(r(t),d)\cdot dt$$
위 식에서 $T(t)$는 누적투과율(accumulated transmittance)로 $t1$부터 $t$까지 객체를 통과하며 누적된 투과율을 뜻한다.
이를 다른 말로 표현하면 $t1$부터 $t$구간에 camera ray가 객체와 접촉하지 않을 확률이라 할 수 있다.
$T(t)$를 식으로 나타내면 아래와 같다.
$$T(t)=exp(-\int_{t1}^{t}\sigma (r(u))\cdot du)$$
Novel view는 camera ray $C(r)$을 통한 to-be-synthesized 이미지로 부터 rendering 된다.
Original NeRF와 대부분의 추가 NeRF 방법에서 rendering을 할 때 non-deterministic stratified sampling approach를 이용하였다.
*non-deterministic **stratified sampling approach 모든 cloud point를 사용하여 rendering하면 비효율적이기 때문에(배경에 해당하는 cloud point도 존재하기 때문) cloud point를 뽑아 사용하게 되는데 이를 뽑는 과정에서 사용하게 된다.
*non-deterministic은 불규칙한 값을 가진다는 의미이고, **stratified sampling approach는 정해진 범위에서 하나씩 point cloud를 뽑아 어떤 point cloud가 큰 volume density를 가지고 있는지 확인하여 뽑는 과정에서 사용된다.
NeRF MLP(s)를 통해 volume density 값을 확인할 수 있다.
모든 pixel에서는 square error photometric loss를 사용하여 MLP 파라미터를 최적화시킨다.
$$L = \sum_{r\in R}\left\|\hat{C}(r)-C_{gt}(r) \right\|_2^2$$
$C_{gt}(r)$은 training 이미지의 ground truth color이며 $r$과 관련되어 있다.
R은 ray들의 batch이며 to-be-synthesized image와 관련이 있다.
NeRF model들은 positional encoding을 사용하곤 한다. 이는 rendered view에서 세세한 디테일을 더욱 향상시킨다.
Transformer에서 사용되는 positional encoding은 연속적으로 입력되는 데이터를 병렬처리 할 때 순서를 기억하기 위하기 위해 사용되지만,
NeRF에서 positional encoding을 사용하는 이유는 sin과 cos을 이용하여 Fourier Feature를 추가하기 위한 용도로 사용한다.
Frequency 도메인에서의 Feature를 low frequency 부터 high frequency 까지 추가하여 이미지 생성 시 그 특성을 반영함으로써 고화질의 이미지가 정교하게 생성되는 것을 이용하기 위함이다.
NeRF의 깊은 개념까지 살펴보진 못하였다.
이 review 논문을 다 읽고 다음으로 기본 NeRF 논문을 읽으며 기본 NeRF 모델의 개념을 익혀보는 시간을 가질 예정이다.