4 min to read
Neural Radiance Fields
Tech blog

Neural Radiance Fields
오늘 RebuilderAI R&D팀에서 소개할 기술은 요즘 Novel view synthesis 분야에서 많은 인기를 끌고 있는 Neural Radiance Fields(NeRF) 입니다.
Novel view synthesis란 새로운 시점(viewpoint)에서 보여지는 이미지를 rendering하는 것을 말합니다. 가상 / 증강 현실, 메타버스에 대한 관심이 높아짐에 따라 view synthesis에 대한 관심, 연구도 함께 집중되고 있으며, NeRF는 특히 많은 관심을 받아 다양한 후속 연구들이 쏟아져 나오고 있습니다.
그럼, 지금부터 NeRF란 기술이 생소하시거나 궁금하신 분들을 위해 NeRF가 어떤 것인지, 어떤 과정으로 동작하는지에 대해 소개를 하도록 하겠습니다.
1. Differentiable rendering
Differentiable rendering이란, 아래 그림 1과 같이 컴퓨터 그래픽스에서의 rendering 프로세스를 기반으로 scene 파라미터를 통해 생성한 이미지로부터 gradient를 계산하여 최적화하는 프로세스입니다. (여기서 scene 파라미터란, 형상(geometry), 재질(material), 빛(light), 카메라(camera) 등 장면을 설명할 수 있는 파라미터)
그림 1) Differentiable renderer 최적화 과정
이 프로세스를 통해서 scene 파라미터와 2D 이미지 사이의 관계를 모델링할 수 있고, 다양한 컴퓨터 그래픽스에서의 inverse rendering을 비롯한 다양한 문제들을 해결할 수 있습니다. 특히, 아래 그림 2와 같이 이미지를 neural network의 입력으로 사용해 differentiable rendering을 활용하는 방법은 최근 3차원 관련 분야에서 많이 쓰이고 있습니다.
그림 2) 이미지 기반 Differentiable rendering 최적화 과정
2. Neural Radiance Fields 란?
그림 3) NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
NeRF는 2020년 ECCV에서 Mildenhall 등에 의해 처음 소개 되었습니다. NeRF의 풀네임은 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis로, view synthesis를 위해 scene을 Neural Radiance Field로 표현하는 방법을 제안하였습니다. NeRF는 일반적인 딥러닝에의 training 방법과 달리 대량의 데이터셋을 사용하지 않고, 하나의 scene에 대해 다양한 시점에서 촬영한 이미지 셋과 카메라 파라미터를 가지고 학습하여 한 scene에 대해 모델링하게 됩니다. 또한, 이미지를 사용하지만 이미지 자체가 딥러닝 네트워크의 입력으로 들어가지 않고, 좌표를 기반으로 하여 계산된 ray를 입력으로 사용하게 됩니다. 따라서 학습된 NeRF 네트워크는 이미지 좌표와 카메라 파라미터를 통해 계산한 ray에 대한 color와, density를 예측하고 volume rendering을 통해 새로운 시점에서의 이미지를 rendering 할 수 있게 됩니다.
지금부터, 입력이 어떻게 들어가고 NeRF를 어떻게 학습하는지 간단하게 설명드리도록 하겠습니다.
Ray 생성
앞서 말씀드린 것처럼, 이미지 좌표와 카메라 파라미터를 사용해 ray를 생성하여 학습을 위한 입력으로 사용합니다. Ray란, 카메라에서 3차원 공간 상의 한 물체의 한 점까지 날아갈 때 생기는 직선을 말합니다. Ray는 카메라의 원점(origin)과 방향(viewing direction)이 정해지면 다음과 같이 표현할 수 있습니다.
식 1) Ray r, 여기서 o는 카메라 원점, d는 카메라가 바라보는 방향, t는 카메라로부터 물체의 한 점까지의 거리를 의미합니다.
식 2) Point samping
Ray r을 계산한 뒤에, 3차원 공간에서 나아가는 r에서의 3차원 Point들을 Sampling 합니다. Point sampling은 tlr 식을 통해 Sampling되고, 여기서 t_n과 t_f는 Voxel의 가장 가까운 거리와 가장 먼 거리를 나타내는 변수입니다. Sampling을 통해 계산한 3D point (x, y, z)와 viewing direction (2D)를 MLP의 입력으로 넣게 됩니다.
Positional encoding
Optimize MLP
그림 4) MLP architecture
여기서 학습되는 MLP는 간단하게 말해서, 입력으로 들어간 3D point와 viewing direction을 Color와 Density로 맵핑하는 함수입니다. 3D point는 먼저 8층의 Fully-connected layer(256 channels, + ReLU activation function)를 통과해 Density와 256차원의 Feature vector를 출력합니다. 이 Feature vector는 Viewing direction과 합쳐져 하나의 추가 Fully-connected layer(128 channels, + ReLU activation function)을 통과해 View-dependent한 Color를 예측합니다(그림 4)).
Volume rendering
각 3D point에서 예측한 Color와 Density는 Volume rendering을 통해 최종 Color로 계산될 수 있습니다. Volume rendering은 아래 식으로 표현할 수 있습니다(Reference: Max et al. Optical models for direct volume rendering).
식 3) Volume rendering equation
3. NeRF의 한계
NeRF는 View synthesis 분야에서 많은 인기를 끌고 또 높은 성능을 보였지만 몇몇 한계점이 존재합니다.
1) 긴 학습시간
2) 다양한 시점에서 촬영한 많은 이미지들
3) 3D reconstruction에는 상대적으로 부적합
한 Scene을 최적화하기 위해서는 상당히 많은 수의 이미지와 이에 대응하는 카메라 파라미터가 필요하며, 또 긴 학습시간이 필요합니다. 이 문제를 해결하기 위한 다양한 연구들이 쏟아지고 있으며 몇 시간씩 걸리는 학습시간을 분 단위로 단축시키거나, 100여장의 이미지를 10장 이하의 이미지로 학습시키는 방법 등이 최근에 소개되고 있습니다. 아래 그림은 NVIDIA에서 소개한 Instant-NGP이며, NeRF의 속도를 5분 이내로 단축시켰습니다. 또한, DS-NeRF는 Depth 정보를 활용해 아주 적은 수의 이미지만을 가지고 View synthesis 할 수 있도록 하는 방법을 제시하였습니다.
앞서 말씀드린 것처럼, NeRF는 상대적으로 3D reconstruction에서의 성능이 부족합니다. IDR, MVSDF, NeuS와 같이 3D reconstruction을 위한 방법에 비해 3D 복원 성능이 떨어지는 것을 확인할 수 있습니다(그림 6).