Abstract
이 논문은 Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng이 공동으로 진행한 연구에 관한 논문으로, 신경 방사성 필드(Neural Radiance Fields, NeRF)를 사용하여 3D 장면을 표현하고, 이를 바탕으로 높은 품질의 뷰 합성(view synthesis)을 달성하는 새로운 방법을 제시한다.
복잡한 장면의 새로운 시점을 합성하기 위해, 소수의 입력 뷰를 사용하여 연속적인 볼륨 장면 함수를 최적화함으로써 최첨단 결과를 달성하는 방법을 제시한다. 이 알고리즘은 장면을 Fully Connected(비컨볼루셔널) 깊은 네트워크를 사용하여 표현하며, 이 네트워크의 입력은 단일 연속적인 5D 좌표(공간 위치 (x, y, z) 및 시야 방향 (θ, φ))이고, 출력은 그 공간 위치에서의 체적 밀도와 시야 방향에 의존하는 방출 광도이다. 새로운 시점을 합성하기 위해, 카메라 광선을 따라 5D 좌표를 쿼리하고 클래식 볼륨 렌더링 기술을 사용하여 출력된 색상과 밀도를 이미지로 투영한다. 볼륨 렌더링이 자연스럽게 미분 가능하기 때문에, 우리 표현을 최적화하기 위해 필요한 유일한 입력은 알려진 카메라 포즈를 가진 일련의 이미지들이다. 이 논문에서 제시하는 기법은 복잡한 기하학과 외관을 가진 장면의 사실적인 새로운 시점을 렌더링하기 위해 신경 방사성 필드를 효과적으로 최적화하는 방법을 설명하며, 신경 렌더링과 시점 합성에 대한 이전 작업을 능가하는 결과를 보여준다.
Intro
캡처된 이미지 세트의 렌더링 오류를 최소화하기 위해 연속적인 5D 장면 표현의 매개변수를 직접 최적화하는 새로운 방식으로 오랫동안 해결하지 못한 뷰 합성 문제를 해결한다.
기본적으로 NeRF모델의 input과 output은 다음과 같다.
- 입력 데이터
- 다양한 각도에서 객체를 촬영한 이미지 (RGB + Mask의 4채널)
- 카메라 파라미터 (카메라 위치 + 각도)
- 출력 데이터 : 입력 이미지에 없던 새로운 view
정적 장면을 공간의 각 점(x, y, z)에서 각 방향(θ, φ)으로 방출되는 복사도와 각 점에서의 밀도(레이가 통과할 때 얼마나 많은 복사도가 축적되는지를 제어하는 차등 투명도 역할을 함)를 출력하는 연속적인 5D 함수로 표현한다. 이 함수를 표현하기 위해 싱글 5D 좌표(x, y, z, θ, φ)에서 싱글 부피 밀도와 뷰-의존적 RGB 색상으로 회귀하는 다층 퍼셉트론(MLP)이라고도 하는 깊은 전결합 신경망을 최적화한다. 특정 관점에서 이 신경 복사도 필드(NeRF)를 렌더링하기 위한 과정을 살펴보자.
1) 장면을 통해 카메라 레이를 진행시켜 3D 점의 샘플 세트를 생성
2) 이러한 점들과 해당하는 2D 시야 방향을 신경망에 입력으로 사용하여 출력 색상 및 밀도 세트를 생산
3) 이러한 색상 및 밀도를 2D 이미지로 축적하는 고전적인 볼륨 렌더링 기술을 사용
위 과정은 자연스럽게 미분 가능하기 때문에, 우리는 관측된 이미지와 우리 표현에서 렌더링된 해당 뷰 사이의 오류를 최소화함으로써 이 모델을 최적화할 수 있다. 복잡한 장면을 고해상도로 표현하는 기본 구현의 최적화는 충분히 수렴하지 않고, 카메라 레이당 필요한 샘플 수가 비효율적이라는 문제를 해결하기 위해, MLP가 높은 주파수 함수를 표현할 수 있도록 5D 입력 좌표를 위치 인코딩으로 변환하고, 이 고주파 장면 표현을 적절히 샘플링하기 위해 필요한 쿼리 수를 줄이는 계층적 샘플링 절차를 제안한다.
Architecture
NeRF의 아키텍처는 간단한 MLP 모델이다. 입력으로는 물체의 3D 위치와 물체가 바라보는 방향이 사용되고, MLP 결과로는 해당 좌표에서의 RGB 컬러값과 투명도의 역수라고 볼 수 있는 Density가 출력된다. 이러한 방식이 특정 각도에서 바라보는 특정 위치의 컬러값과 투명도를 예측해 주는 것이다.
- 입력
- Spatial location : 3D 공간 위치 정보 (x,y,z)
- Viewing diection : 물체가 바라보는 방향 (𝛳,𝜙)
- 출력
- RGB : 물체의 컬러값
- Density(𝜎) : 투명도의 역수인 밀도 값
MLP 입력단에서 x(위치 정보(x,y,z))가 입력되고 5번째 layer에서 한 번더 concat해서 입력된다. skip connection의 일종이라 볼 수 있다. 그리고 9번째 layer에서 density(𝜎)가 출력되고, 여기에 다시 d(방향 정보(𝛳,𝜙))가 입력되어 최종적으로 RGB 값이 출력된다. 이러한 방식을 사용하는 이유는 density의 경우 물체가 그 위치에 존재하는지에 대한 값이므로 물체를 바라보는 각도와 전혀 관계가 없으니 위치 정보만으로 예측하고, RGB 값의 경우 물체를 바라보는 각도에 따라 달라질 수 있기 때문에 마지막 layer에서 방향 정보를 추가하여 RGB를 예측하는 것이다.
Neural Radiance Field Scene Representation
NeRF의 전체적인 절차는 밑의 그림과 같이 4개의 절차로 이루어져있다.
a: input으로 다양한 각도의 2d image를 사용 input (x,y,z,θ,ϕ)∈R^5
b: mlp(FΘ)를 사용하여 color(RGB)와 density(σ)를 예측 , rendering 진행
c: volume rendering을 진행하여 3d rendering이미지를 생성
d: loss를 계산
Volume rendering
Nerf에서는 Ground Truth로 classic volume rendering C(r)를 사용한다. volume rendering으로 구하는 Expected Color C(r)은 다음과 같이 정의 된다.
notation
r(t)=o+td : camera ray
C(r) : expected rendering color
Ĉ(r) : predict volume rendering color
t_n : camera ray r(t)위의 관심있는 부분의 시작점
t_f : camera ray r(t)위의 관심있는 부분의 끝점
c : 객체의 color
σ : volume density
σ(r(t)) : density는 camera ray r(t)를 input으로 하는 function
T(t):장애물을 만나지 않고 t_n −> t로 갈 확률
camera ray r(t)=o+td 로 정의되는데, 여기서 o는 객체를 바라보는 시작점(카메라 렌즈로 생각하면 된다) d는 원점 o에서 바라본 방향 벡터를 의미한다. 결국 객체에 대하여 camera ray r(t)라는 값은 원점으로부터 바라본 벡터 d 위의 한 점을 의미한다. 그림을 보면 우리가 관심있는 영역(객체)t_n ~ t_f 의 범위에서 t라는 시점에서의 volume density와 color c를 계산할 수 있다. σ는 Uniform Density, Voxel-based Density, Signed Distance Field, Implicit Function등의 기법을 사용하여 계산가능 하고, 값은 [0,1]의 범위 값으로 나온다. 여기서 σ(r(t))는 t 시점에서 입자들이 3차원 공간에서 얼만큼 차지하고 있는지를 의미하며, c는 t시점에서 입자들이 만들어 내는 color를 의미한다. c와 σ를 알고 있다면 r(t)에서 바라본 rendering된 이미지의 Color C(r)를 알 수 있다는 식이 위에서 살펴본 integral식이다. 여기서 한가지 알아얄 할 것은 C(r)을 구하기 위해서 integral을 사용하는데, Neural network에서 contineous data를 다루기에는 Memory cost 문제와 계산 복잡도 문제가 생긴다. 이를 해결하기 위해서 Sampling을 사용하여 근사하는데 , 이를 그림으로 보면 다음과 같다.
위의 camera ray를 위에서 봤을 때의 그림이다.
1) t_n ~ t_f 의 연속 구간을 정한다.
2) N개로 sampling을 진행한다.
3) 각 시점 t_i 에 대해서 σ,c를 구한다.
4) sampling한 것들에 대해서 Ĉ(r)를 구한다.
sampling을 진행하였을 때의 volume rendeing expected color C(r)대신 새롭게 근사한 Ĉ(r)을 이용하게 되는데 Ĉ(r)는 integral이 아니라 를 이용하여 계산량이 자연스럽게 줄어든다.
continuous data의 경우 σ(r(t))를 사용하는데, sampling을 진행할 경우는 아래의 식을 사용하는 것을 볼 수 있다.
이 식은 Alpha compositing이라고 부른다. 이는 컴퓨터 그래픽스에서 불투명한 객체를 합성하는 기술로서, 객체의 불투명도를 고려하여 최종적인 색상을 계산하는 방법이다. δ는 다음과 같이 정의 된다. [ δ_i =t_(i+1) − t_i ] 즉, sampling의 사이의 간격을 의미한다.
T(t)는 σ값이 커질 수록 값이 작아진다. 즉, 아래와 같은 그림으로 이해할 수 있는데, T(t)는 바라보기를 원하는 시점 t_n ~ t까지 모든 density들의 합이었고, σ들이 크면 클 수록 T(t)는 작아졌다. 위에서 정의하기를 σ∈[0,1]이었다. 즉, density σ=0이면 카메라 시점으로 부터 t시점에서의 particle이 존재하지 않는 다는 뜻이고, σ=1이면 particle이 많다는 것을 의미한다. 즉, density σ가 크다는 것은 T(t) time step t 시점에서 장애물을 만날 확률 이 크다는 것을 의미한다.
Hierarchical volume sampling
ray 위에서 포인트를 어떻게 샘플링하는지도 성능에 영향을 끼치는데, 단순히 일정 간격으로 샘플링하는 경우에는 동일한 위치의 샘플 포인트만 학습하기 때문에 좋은 성능을 기대하기 어렵다. 때문에 일종의 랜덤 샘플링인 stratified sampling을 사용하여 각 bin 마다 일정 간격으로 샘플링을 하지만, bin 내에서는 랜덤하게 샘플 포인트를 생성한다.
구간 a,b를 uniform하게 samling을 진행하는 것이다. 그러나 논문에서 각 camera ray에 대해서 uniform하게 sampling하는 전략은 비효율적 이었다고 서술한다. free space(입자가 없는 부분)와 occluded regions(입자에 의해 완전히 가려져서 광선이 통과할 수 없는 부분)이 rendering에 도움을 주지 않기 때문인데, 이를 해결하고자 single network를 사용하는 것이 아니라 2개의 network를 최적화 하기로 결정한다. 2개의 네트워크를 각각 "coarse", "fine" network라고 부르는데, "coarse" network는 unifrom distribution을 사용하여 stratified sampling을 진행하여 전체 데이터의 분포를 학습하고, "fine" network는 Inverse transform sampling를 진행하여 각 ray에 대해서 편향된 분포를 학습한다.
우선 sampling할 객체의 pdf를 구한다. 구한 pdf를 바탕으로 CDF를 계산하고, Inverse transform을 진행(맨 오른쪽 그림). Uniform distribution ~ [0,1]를 사용하여 Inverse transform CDF에서 sampling을 진행하면 밑의 그림처럼 free space와 occluded regions를 고려하여 sampling을 진행한다. 구름의 뒤는 camera ray에서 보이지 않으므로 앞쪽에 sampling이 많이 된 것을 볼 수 있다.
View Dependence
논문에서는 Non-Lambertain effect를 주기 위해서 View Dependent를 사용한다. Lambertain이란 완전한 빛을 표면으로 반사하는 효과이며 보는 각도에 상관없이 반사율이 동일한 것을 의미한다. 그렇다면 그 반대인 Non-Lambertain effect이란 보는 관점에 따라 명암이 다른 것을 원하는 것인데, 이를 구현하기 위해 Network를 2-step으로 나누었다. 전체적인 모델 Ĉ(r)은 밑의 그림처럼 동작하는데, 하나씩 보면 아래와 같이 input으로 5D가 들어간다. x(x,y,z)는 좌표를 의미하는 데이터이고, d(θ,ϕ)는 카메라를 바라보는 관점을 설명한다.
이때 output은 c(r,g,b)와 σ를 output으로 나타내는데, 이를 풀어서 보면 다음과 같다.
color의 정보만을 사용하여 σ를 예측하고, 8-layer에서 view-direction을 사용하여 color를 예측한다. 여기서 최종 output이 128인 이유는 color가 0~256이기 때문에 -값을 포함하여 -128~128의 output을 나오게끔 유도한 것이다.(어짜피 sigmoid를 사용하면 -128~128 -> 0~1로 normalize된 0~256이 된다.)
이렇게 하는 이유는 어디서 바라보든(view-direction) 상관없이 x,y,z의 좌표만으로 density를 표현하기 위해서이다.
Positional Encoding
Positional Encoding은 high-frequency 정보를 잘 보존하기 위해 사용되는 방법이다. MLP 입력인 위치 정보와 방향 정보에 적용된다. 3차원인 위치 정보와 2차원인 방향 정보가 너무 저차원이기에 positional Encoding으로 고차원으로 임베딩시켜 MLP의 입력 데이터를 고차원화 시켜주는 것이다. (저차원 입력을 사용하면 결과가 low-frequency에 치중됨)
high-resolution(모서리같은 detail)을 진행하기 위해서 각 camera ray의 양을 늘려보았지만, 비효율적이라는 실험결과가 있었다고 한다. Positional encoding이란 개념은 Transformer에서도 확인할 수 있는데 NeRF의 Positional Endocing과 Transformer의 차이는 다음과 같다.
Transformer : 모델의 구조가 Attention 만을 사용하기에 no recurrence하고 no convolution구조를 가지고 있다. 이에 어떤 data가 들어오더라도 input에 대하여 순서를 주기 위해서 Positional encoding을 사용하였다.
NeRF: high-resolution(detail)을 표현하기 위해서 Positional encoding을 사용한다. input의 차원을 R−>R^(2L) 로 high-frequency로 변경하여 detail을 잘 표현할 수 있게 하는 것이 목적이다.
는 는 로 차원 임베딩을 진행한다.
여기서 로 2차원인데 인 이유는 를 Cartesian viewing direction unit vector로 구하기 때문인데, Cartesian 좌표계는 3차원으로 표현이 된다고 한다.
Positional encoding을 사용하였을 때 detail 을 잘 설명하는 것을 볼 수 있고, View dependence를 사용하지 않았을 때 빛의 광도 표현을 잘 못하는 것을 볼 수 있다.
Details
Loss function은 위에서 정의한 모델과 Hierarchical volume sampling에서 다뤘던 토대로 정의된다.
Coarse Network의 Rendering loss와 Fine Network의 Rendering loss의 합으로 정의되는 것을 볼 수 있다.
implementation detail
Nc = 64, Nf = 128, Adam optimizer
Learning rate: 5x10^-4
Decay: 5 x 10-5
R은 각 batch size마다 4096개의 ray를 사용했다고 한다.
평가 지표
PSNR(Peak Signal-to-Noise Ratio) : 두 이미지 간의 픽셀 오차가 적을 수록 PSNR값이 높다.
SSIM(Structural Similarity Index Map) : 두 이미지간의 상관계수를 Luminance(휘도), Contrast(대비), structural(구조) 총 3가지 측면에서 평가 -> 픽셀의 평균, 분산으로 평가 값이 높을 수록 유사도가 높다.
이때 PSNR의s, SSIM의 L은 0~1 또는 0~255의 범위를 가진다.
LPIPS(Learned Perceptual Image Patch similarity): vgg의 feature에 대해서 유사도를 비교한 것으로, 낮을수록 feature domain의 유사도가 비슷한 것을 의미한다.
Conclusion
3D graphics 분야에 NeRF가 꽤나 강력한 임팩트를 주고 있는 것 같다. 2023 CVPR에서는 2022년에 비해 radiance라는 단어의 사용이 80% 증가하고, NeRF의 경우 39% 증가했을 만큼 NeRF는 활발히 연구되고 있다. 특히 이젠 개념 증명을 넘어 veiw editing 이나 각종 application 연구가 진행되고 있다. 즉 NeRF가 이제 각종 서비스에 활용될만한 수준으로 발전하고 있다는 뜻이다. 이에 관해 지속적인 연구를 진행해보고 싶다.
'Drawing (AI) > Paper review' 카테고리의 다른 글
[논문 리뷰] DDPM (Denoising Diffusion Probabilistic Models) (2) | 2024.03.12 |
---|---|
[논문 리뷰] Auto-Encoding Variational Bayes(VAE) (0) | 2024.03.09 |
BERT(3) (0) | 2023.08.20 |
BERT(2) (0) | 2023.08.13 |
BERT(1) (0) | 2023.08.02 |