NeRF: 공간 재현을 위한 뷰 합성 방법

NeRF: 공간 재현을 위한 뷰 합성 방법

“Neural Radiance Fields (NeRF)”

NeRF는 "Neural Radiance Fields"의 약자로, 3D 장면을 생성하고 렌더링하기 위한 신경망 기반의 컴퓨터 비전 기술입니다. NeRF는 실제 세계의 3D 장면을 모델링하고 새로운 시점에서 장면을 볼 수 있도록 하는 것이 주요 목표입니다.

물체나 사람을 360도 돌려가며 다양한 각도에서 관측하려면 2D 이미지 대신 3D 렌더링이 필요합니다. 이러한 3D 렌더링 기술은 일반적으로 컬러로 입혀진 메쉬, 포인트 클라우드 또는 복셀로 이루어진 3D 모델을 사용하여 구현됩니다. SFM(Structure From Motion) 기술을 활용하면 실제 세계 객체를 3D 재구성하여 3D 모델을 생성할 수 있습니다.

NeRF(Neural Radiance Fields) 역시 비슷한 기술이지만, 객체의 3D 모델을 생성하는 것이 아니라 객체를 바라보는 모든 시점의 장면을 생성하는 Novel View Synthesis 기술입니다. 다시 말해, 특정 객체나 장면을 여러 시점에서 관찰한 결과로부터 촬영하지 않은 각도의 뷰를 생성하여 3D 렌더링된 것처럼 보여주는 기술입니다. 또한 NeRF는 새로운 뷰를 생성할 때 MLP(Multi-Layer Perceptron) 네트워크를 사용하여 결과를 생성하므로 3D 형상 정보를 미리 저장하고 보여주는 전통적인 방식과는 다릅니다.

따라서 NeRF는 다른 3D 렌더링 방식과 비교했을 때 몇 가지 장점을 가지고 있습니다. 먼저 NeRF는 연속적인 공간 표현을 사용하기 때문에 뷰 이동이 자연스럽습니다. 또한 3D 모델 정보를 사용하여 광선과 물체 간의 관계를 계산하여 렌더링하는 기존 방법과 비교하여 저장 공간 부담이 적습니다. 특히 NeRF는 컬러 값뿐만 아니라 볼륨 밀도까지 추정하므로 더 현실적인 렌더링 결과를 제공합니다.

NeRF는 컴퓨터비전, 그래픽스 분야에서 굉장히 활발히 연구되고 있는 분야로 컴퓨터비전 학회인 CVPR에서는 2022년 대비 2023년 radiance라는 단어의 사용이 80%, NeRF는 39%나 증가했다고 합니다. 타임즈는 2022년 최고의 발명품을 NVIDIA의 Instant NeRF로 선정하기도 했습니다. 

이러한 NeRF는 가상 현실(VR), 콘텐츠 생성, 게임 개발 및 시각 효과(VFX) 분야에서 사용되며, 실제 장면을 모델링하고 새로운 뷰를 생성하는 데 활용됩니다. 또한 문화유산 보존, 의료, 공간 탐사 및 로봇학, 부동산 산업 등에도 활용되고 있습니다. NeRF는 현실 세계의 3D 정보를 캡처하고 생성하는 데 사용될 수 있는 다양한 분야에서 혁신적인 기술로 자리 잡고 있으며, 미래에는 더 많은 응용 분야에서 사용될 것으로 예상됩니다.


NeRF 간단 설명

NeRF 전체적인 흐름 (출처: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 논문)

NeRF의 전체적인 흐름은 다양한 각도에서 촬영된 이미지와 해당 이미지의 카메라 파라미터를 NeRF 모델에 입력하면, 특정 연산을 통해 새로운 뷰를 출력해 주는 것입니다.

NeRF의 입출력과 아키텍처

NeRF 입출력 (출처: https://www.matthewtancik.com/nerf)

NeRF의 아키텍처는 사실 크게 설명할 것이 없을 만큼 간단한 MLP 모델입니다. 입력으로는 물체의 3D 위치와 물체가 향하는 방향이 사용되며, MLP 모델의 결과로는 해당 좌표에서의 RGB 컬러 값과 투명도의 역수로 볼 수 있는 Density가 출력됩니다. 이런 방식을 통해 NeRF는 특정 각도에서 특정 위치의 컬러 값과 투명도를 예측합니다. 

위 수식의 입력에서 x, y, z는 3D 공간의 위치 정보를 의미하고, 𝛳,𝜙는 물체가 바라보는 방향 정보를 의미합니다. 출력 부분의 RGB는 컬러 정보이고,  𝜎는 투명도의 역수인 밀도 값입니다.

NeRF 아키텍처 (MLP) (출처: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 논문)

NeRF의 아키텍처는 MLP(다층 퍼셉트론)로 간단하게 구성되어 있습니다. 입력은 물체의 3D 위치(x, y, z)가 되고, 입력단에서부터 5번째 레이어까지는 이 위치 정보가 전달됩니다. 그런 다음, 5번째 레이어에서 한 번 더 해당 위치 정보가 합쳐지는데, 이것은 일종의 스킵 연결(skip connection)로 생각할 수 있습니다. 그리고 9번째 레이어에서는 밀도(Density, 𝜎)가 출력되며, 이 값에 방향 정보(d, 𝛳, 𝜙)가 다시 입력으로 들어가서 최종적으로 RGB 값이 출력됩니다. 이러한 방식을 사용하는 이유는 밀도(Density) 값은 물체의 위치와 관련이 있으므로 물체를 바라보는 각도와 무관하게 위치 정보만으로 예측할 수 있기 때문입니다. 반면 RGB 값은 물체를 바라보는 각도에 따라 달라질 수 있으므로 마지막 레이어에서 방향 정보를 추가하여 RGB 값을 예측하는 것입니다.

이 모델 구조는 간단하면서도 효과적인 방식으로 물체를 모델링합니다.

NeRF의 학습 방법

NeRF는 지도학습(supervised learning) 방식을 사용하기 때문에 학습에 정답 데이터(Ground Truth, GT)가 필요합니다. 이미지 입력은 여러 시점에서의 객체를 나타내므로 이미 가지고 있는 뷰를 예측하도록 모델을 학습시키고, 예측값과 실제 값 사이의 손실을 계산하여 학습이 진행됩니다.

볼륨 렌더링

NeRF의 볼륨 렌더링 (출처: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 논문)

이제 새롭게 생성하고자 하는 가상의 뷰의 카메라 중심으로부터 물체로 향하는 광선(ray)을 발사하고, 이 광선 상에서 여러 점들을 샘플링합니다(아래 그림 (a)에서 검은색 점들). 그런 다음, MLP 모델을 사용하여 각 좌표에서의 RGB 컬러와 밀도(Density) 값을 예측합니다. 이때, 물체가 없는 위치에서는 밀도가 낮게 나오고, 물체가 있는 위치에서는 밀도가 높게 나올 것입니다. 이렇게 샘플링된 광선 상의 모든 점들의 RGB와 밀도 값을 다시 원하는 뷰로 투영(projection)하고, 특정 연산을 통해 적절한 최종 컬러 값을 계산합니다. 이 과정에서 광선이 처음 만나는 객체에 더 많은 가중치가 부여됩니다.

최적화 방법 : Positional Encoding & Hierarchical Sampling

이에 추가적으로 NeRF를 최적화하기 위해 두 가지 방법이 사용됩니다.

첫 번째로, 위치 정보와 방향 정보에 적용되는 Positional Encoding이 있습니다. 이 방법은 MLP의 입력인 위치 정보와 방향 정보에 적용되어, 고주파(high-frequency) 정보를 더 잘 보존하기 위해 사용됩니다. 3차원 위치 정보와 2차원 방향 정보는 원래 저차원이기 때문에, Positional Encoding을 통해 이 입력 데이터를 고차원으로 임베딩하여 MLP가 더 다양한 정보를 활용할 수 있도록 합니다. (저차원 입력을 사용하면 결과가 낮은 주파수(low-frequency)에 치우치는 경향이 있습니다)

두 번째로는 Hierarchical Sampling 기술이 있습니다. 광선 상에서 포인트를 어떻게 샘플링하는지는 성능에 큰 영향을 미칩니다. 균일한 간격으로 포인트를 샘플링하는 경우, 동일한 위치의 샘플 포인트만 학습되어 좋은 성능을 얻기 어려울 수 있습니다. 따라서 Hierarchical Sampling은 일종의 계층적 샘플링 방법으로, 각 구간(bin)에서는 일정한 간격으로 포인트를 샘플링하되, 각 구간 내에서는 랜덤하게 포인트를 생성합니다. 또한, coarse 샘플링 단계 이후 fine 샘플링 과정에서는 density가 높은 지점에서 더 많은 샘플링을 수행하여 추가 학습을 진행합니다.

NeRF의 발전

2020년 초기 NeRF의 경우 학습에만 1일 이상이 소요되고, 새로운 이미지 1장을 렌더링하는 데 30초 정도 소요되었기에 느린 속도가 큰 단점이었습니다. 또한 많은 뷰의 입력 데이터가 필요하고 하나의 물체의 하나의 모델이 필요하거나 물체가 움직이지 않아야하고 다양한 카메라 파라미터가 필요한 등의 다양한 제약 사항이 있었습니다. 때문에 실질적으로 다양한 곳에 활용되기 힘들었습니다.

하지만 2023년 현시점을 기준으로는 NeRF와 관련된 연구 분야에서는 상당한 발전이 이루어졌습니다. 먼저, 학습 및 렌더링 속도를 크게 개선한 'Instant NeRF'와 같은 연구들이 등장했습니다. 또한, 대량의 입력 데이터가 필요한 단점을 극복하기 위한 연구와 여러 객체에 일반화할 수 있는 모델을 개발한 연구들도 공개되었습니다. 특히, 다양한 환경과 움직이는 물체에 적용 가능한 'NeRF in the Wild'라는 구글의 논문도 주목받았습니다.

이러한 발전은 초기에는 간단한 MLP 모델만을 사용하던 NeRF를 다양한 딥러닝 기법과 영상학적 기술을 결합하여 이루어진 것입니다. NeRF는 활용 가능성이 높아서 앞으로도 AI 연구 및 다양한 응용 분야에서 계속해서 혁신과 발전이 예상됩니다.






이야기와 글쓰기를 좋아하는 컴퓨터비전 엔지니어 콤파스입니다.

* 슈퍼브 블로그의 외부 기고 콘텐츠는 외부 전문가가 작성한 글로 운영 가이드라인에 따라 작성됩니다. 슈퍼브 블로그에서는 독자분들이 AI에 대한 소식을 더 쉽고 간편하게 이해하실 수 있도록 유용한 팁과 정보를 제공하고 있습니다.