deep daiv.
← Newsletter

#15 사진이 살아 있다! NeRF

날짜
2023년 11월 22일
에디터
배니
위클리 딥 다이브 #152023년 11월 22일

사진이 살아 있다! NeRF

지난해 컴퓨터 비전 분야의 트렌드로 새롭게 떠오른 모델이 있습니다. 바로 2020년 ECCV에서 발표된 NeRF입니다. NeRF는 여러 각도에서 촬영한 물체의 사진을 3D로 재구성합니다. 다시 말하면, 2D 이미지를 3D 모델로 변환하는 것입니다. 아래의 영상을 보면 이해가 더 쉬울 것입니다.

위 영상은 티라노사우르스와 열대식물을 여러 시점에서 촬영하여 NeRF로 3D 변환한 결과물입니다. 사진인 줄 알았던 티라노사우르스의 전시물이 실제로 촬영하고 있는 듯이 움직입니다. 오른쪽의 열대 식물도 디테일한 부분까지 자연스럽게 보입니다.

NeRF는 최근 들어 더욱 주목 받고 있습니다. 점차 성능이 개선되면서 다양한 분야에 활용할 수 있다는 가능성이 보였기 때문인데요, 이번 아티클에서는 NeRF의 원리를 알아봅시다.


NeRF의 원리

NeRF 논문의 제목은 <Representing Scenes as Neural Radiance Fields for View Synthesis> 입니다. 제목에서 알 수 있듯이 NeRF는 Neural Radiance Fields의 줄임말입니다. NeRF 수행하는 작업은 View Synthesis(시점 합성) 입니다. 다양한 각도에서 촬영된 물체 이미지를 합성하여 3D로 재구성하는 것이 NeRF 모델의 핵심입니다.

출처: NeRF, Mildenhall (2020)

NeRF 모델은 3D 좌표(x, y, z)와 카메라의 위치와 방향(θ, φ)을 입력값으로 받아 그리고 컬러(RGB)와 밀도(\sigma)를 출력합니다. 아직 조금 어렵게 느껴지신다고요? 조금 더 자세하게 설명해보겠습니다.

인간이 물체를 인지하는 과정을 생각해봅시다. 인간은 3차원 세상에서 살고 있지만, 눈은 세상을 연속된 이미지(2D)로 보고 인식합니다. 하지만 살면서 크게 불편함을 느끼지 않습니다. 왜냐하면 눈으로 보고 있는 대상들이 3차원이라는 전제로 지각하기 때문입니다. 대상을 바라볼 때 거리감과 깊이감을 자동적으로 인식한다는 뜻입니다. 사실 이 또한 눈 두 개의 시점으로 대상의 거리감을 파악하는 것입니다.

NeRF도 마찬가지입니다. 여러 시점에서 촬영한 이미지를 비교하면 대상을 3D로 구현할 수 있습니다. 그래서 고정된 카메라 위치와 방향이 입력되면 그 시점에서 바라본 이미지를 구현하기 위해 3D 좌표에 색상과 밀도를 계산하여 입힙니다. 이렇게 색상을 입힌 3D 좌표들을 다른 시점에서 봅시다. 다른 시점에서 촬영된 이미지에 맞게 색상과 밀도를 다시 한번 계산합니다. 이런 과정을 반복하여 모든 시점에서 촬영된 이미지와 부합하는 3D 모델을 만들어냅니다. 인간이 물체를 인식하는 것처럼요. 이후에 3D 좌표를 볼륨 렌더링(Volume Rendering)하면 앞서 본 것과 같은 결과물이 탄생하게 되는 것입니다.

카메라 위치와 방향은 구면좌표계의 (θ, φ)에 따라 정해집니다.
카메라 위치와 방향은 구면좌표계의 (θ, φ)에 따라 정해집니다.
출처: PNG EGG

이제 원리를 이해했으니 입력값 변수에 대해 살펴봅시다. 가상의 공간 안에 3D 좌표 변수는 (x, y, z)로 입력됩니다.

그럼 카메라의 위치와 방향을 어떻게 두 개의 변수(θ, φ)로 표현할 수 있을까요? 여기서는 구면좌표계를 따릅니다. 반지름을 제외하면 두 변수만으로도 카메라의 위치를 특정할 수 있습니다.

출력값 변수는 색상(RGB)과 밀도(\sigma)입니다. 색상은 쉽게 이해할 수 있을 것입니다. 밀도는 3D로 렌더링하는 과정에서 중요한 역할을 합니다. 밀도가 낮을수록 투명하게 보이고, 높을수록 뚜렷하게 보입니다.

여기서 중요한 것은 어떻게 함수 F_{\Theta}를 정의하느냐는 것입니다. 저자들은 여기에 딥러닝을 도입합니다. 그리고 가장 기본적인 모델 중 하나인 MLP(Multi-Layer Perceptron, 다층 퍼셉트론)으로 이 문제를 해결합니다.

이렇게 뛰어난 성능을 내는 NeRF이지만 그만큼 개선해야 할 부분도 많이 있었습니다. 우선, 입력 데이터도 충분히 많이 필요합니다. 원 논문에서는 100장의 이미지로 렌더링했습니다. 하지만 현실적으로 이만큼 많은 사진을 찍기는 어려울 것입니다. 게다가, 3D 렌더링을 한 번 실행하기 위한 시간이 오래 걸립니다. 후속 연구에서는 이런 점들을 보완하는 데 중점을 두었습니다. 대표적인 개선 사항들은 다음과 같습니다.

결국 다양한 분야에서 더 정확하고, 빠르고, 가벼운 모델을 만들어 내는 것이 목표입니다. 기본 NeRF 모델을 획기적으로 개선한 다른 모델들에 대해서 소개합니다.

Instant NeRF

Instant NeRF는 2022년 초, 엔비디아(NVIDIA)에서 발표한 모델입니다. 당시 기준으로 무려 1000배 이상 빠른 속도로 학습할 수 있다고 하여 화제가 되었습니다. 게다가 블로그에 따르면, 렌더링 속도는 수십 밀리초 안쪽으로 실시간에 가까운 속도로 구현이 가능합니다.

기존 NeRF 모델 학습에 시간이 오래 걸린 이유는 모든 좌표에 대해 MLP 연산을 해야 했기 때문입니다. NVIDIA 연구진은 이 시간을 획기적으로 줄이기 위한 방법으로 Multiresolution Hash Encoding을 제안합니다. 복잡한 내용을 담고 있지만, 핵심은 입력 데이터를 고차원으로 매핑하여 연산 처리 속도가 훨씬 빨라졌고, 결과적으로 학습 속도가 개선되었다는 것입니다.

NeRF 모델 개선했다기보다는 NVIDIA GPU에서 빠르게 학습되도록 입력값을 매핑한 것이기 때문에, NeRF뿐만 아니라 초고해상도(Gigapixel) 이미지, SDF 3D Reconstruction 등 다른 신경망 모델에도 활용할 수 있다는 점이 특징입니다.

pixelNeRF

왼쪽은 PixelNeRF, 오른쪽은 NeRF 모델의 결과물
왼쪽은 PixelNeRF, 오른쪽은 NeRF 모델의 결과물
출처: https://alexyu.net/pixelnerf/

앞서 말씀드린 것처럼 일반적으로 단순한 물체를 3D로 생성하는 데 필요한 이미지는 약 20-30장 정도입니다. 일상생활에서 촬영하기에는 많은 이미지입니다.

하지만 pixelNeRF는 단 1-3장만으로도 렌더링할 수 있습니다. 물론 결과물의 퀄리티는 살짝 떨어지지만 그래도 발전 가능성을 보여주었다고 할 수 있습니다.

일반적으로 이미지 데이터를 처리하는 경우 이미지의 특성을 파악하기 위해 CNN 계열의 모델을 활용하는 경우가 많습니다. 하지만 NeRF 모델은 CNN이 아닌 MLP만으로 계산하는데요, pixelNeRF는 적은 이미지에서 특징(Feature)을 추론해야 하는 만큼 다시 CNN을 도입합니다. 이렇게 CNN 인코딩된 정보가 NeRF 모델을 거쳐 3D 렌더링됩니다.

PixelNeRF 모델의 아키텍처
PixelNeRF 모델의 아키텍처
출처: pixelNeRF (Yu, 2021)

LRM

그리고 지난 11월 초, 단 한 장의 이미지로 5초만에 고품질의 3D 메쉬로 렌더링하는 모델이 제안됐습니다. 바로 LRM인데요. 아래의 영상을 먼저 살펴보세요.

LRM은 Large Reconstruction Model의 약자로 5M개의 파라미터의 트랜스포머 기반 아키텍처를 채택하여 직접적으로 NeRF를 예측한다는 특징이 있습니다. LRM은 DINO로 이미지를 인코딩하고 Cross-Attention을 통해 3D Triplane Representation으로 이미지 특성을 투사합니다. 이후 MLP를 활용하여 볼륨 렌더링을 위한 점의 색상과 밀도를 예측합니다. 그 결과 한 장의 이미지만으로도 매우 빠르게 3D 메쉬를 얻을 수 있게 된 것입니다.


📰 AI NEWS

MS, Copilot 공개

OpenAI의 CEO, 샘 올트먼 해고

YouTube, 생성형 AI 사용 창작물에 대해 공개하도록 규정

유튜브는 창작자들이 사용한 생성형 AI에 대해 공개하도록 요구하는 새로운 규정 도입을 준비하고 있습니다. 이를 준수하지 않을 경우 채널 정지의 위험이 있다고 밝혔습니다.


📩 딥 다이브 소식

[다만사]

여러분은 좋아하는 일을 하고 있나요? ‘업’을 선택할 때 재미를 고려하는 사람이 얼마나 될까요. 늘상 재미와 행복을 좇아온 사람이더라도, 이 두 가지가 마치 양립할 수 없는 것처럼 느껴질 수도 있습니다. 그렇기에 일하는 재미를 느낀다는 건 어쩌면 큰 행운일지도 모르죠.

‘데이터’라는 바다에 풍덩 뛰어드는 순간 넓고 넓은 세계를 경험할 수 있습니다. 그리고 때로는 체리 피커(cherry picker)처럼 내 입맛에 맞는 것만 쏙쏙 골라 먹기도 하는데요. 오늘은 AI, 데이터 분석, 데이터 시각화 등 여러 분야를 경험해 보며 재미있는 업을 찾아가고 있는 김지후를 만났습니다.

함께 읽기