Neural Rendering 개발 이야기 #1 공간의 기록
공간을 3차원으로 기록하고 다시 시각화할 수 있는 기술 개발 과정
2023년 8월 10일 Jae / Hyowon

1부. 공간의 기록

 오늘의집 XR팀은 최신 AI, XR 기술을 활용하여 새로운 유저 경험을 제공하기 위한 연구 개발을 진행하고 있습니다.  ‘공간’이라는 개념은  3차원적인 것이지만, 지금까지 오늘의집에서는 대부분 2차원적인 ‘사진’을 통해서만 기록되고 공유되어 왔습니다. 이번 편에서는 이러한 문제를 혁신하기 위해 진행 중인 Neural Rendering 연구에 대한 소개와 개발 과정을 설명드리고자 합니다. 분량이 길어 공간을 ‘기록’하는 부분과 ‘시각화’하는 부분을 각각 1부, 2부로 나누었습니다.

Neural Rendering이란?

  Neural Rendering 또는 Neural Radiance Fields (NeRF)이라고도 불리는 이 기술을 이해하기 위해서는 3차원 데이터로부터 2차원 이미지를 생성하는 렌더링 기법에 대한 이해가 필요합니다. 가장 널리 사용되는 렌더링 방식은 메쉬(mesh) 기반의 방식인데요. 메쉬는 면(face), 꼭짓점(vertex), 간선(edge)으로 물체의 표면을 모델링합니다. 메쉬 기반의 렌더링은 이러한 요소들이 카메라에 보이는(visible)지 여부를 판단한 후, 래스터화(rasterization)라는 기법을 통해 2차원 이미지로 그려내는데요. 이 과정이 미분가능(differentiable)한 수식으로 표현되지 않아 머신러닝 기술을 적용하기 어려운 한계가 있습니다.

  반면 NeRF에서 활용하는 렌더링 기법은 볼륨 렌더링(volume rendering) 방식인데요. 그 원리는 흔히 병원에서 사용하는 MRI나 CT 촬영 장비의 원리와 유사합니다. 해당 장비들은 특정 파장의 빛을 투과시켜 측정되는 값을 그 경로 상의 ‘투과율’이 누적된 값으로 표현하고, 이를 역으로 활용하여 신체 내부의 구조를 추정해내는 방식인데요. 이와 유사하게 NeRF는 일반 카메라로 촬영한 이미지를 공간 상의 색과 밀도가 누적된 결과로 표현하고, 이를 역으로 활용하여 공간의 모습을 추정하는 기술입니다.

  NeRF라는 기술의 논문[1]은 2020년 ECCV라는 저명한 학회에서 처음 소개되었는데요. 동작 방식은 우선 ray marching이라는 과정을 통해 카메라의 각 픽셀에 대응되는 3차원 ray를 만들고, 그 경로를 따라 공간 상의 임의의 지점들을 샘플링(sampling) 합니다. 그리고 샘플링한 각 점의 ‘좌표’와 ‘방향’을 인공신경망(neural network)에 입력하여 해당 지점의 ‘색’과 ‘밀도’를 추론하도록 하는데요. 이 값들을 ray 상 순서에 따라 다시 누적함으로써 픽셀의 색을 계산하며, 그 값이 원래 관찰된 픽셀의 색과 같아지게 하는 방향으로 파라미터 업데이트를 진행합니다. 이러한 작업을 모든 픽셀에 대해 여러 차례 수행하는 것이 NeRF의 학습 과정이며, 이를 통해 인공신경망이 공간 상의 임의의 좌표와 방향에 대한 ‘색’과 ‘밀도’를 추론할 수 있게 됩니다.

▲ NeRF[1]의 볼륨 렌더링 방식

최근의 Neural Rendering 연구

  저희 XR팀은 ‘공간을 3차원으로 기록할 수 있는 최적의 기술’을 목표로 많은 Neural Rendering 기술들을 학습하고 실제 활용해보고 있는데요.  실험을 넘어 추후 구체화된 서비스까지 계획하고 있기에 빠른 학습 속도를 우선으로 삼고 있습니다. 

  이런 관점에서 한 장면의 학습에만 24시간 이상이 걸리는 원 NeRF 논문의 신경망 사용 방식은 사용하지 않았어요. 대상이 되는 공간을 하나의 블랙박스처럼 두고 인공신경망(neural network)으로 하여금 해당 공간 상의 모든 지점을 표현하게 하는 암시적인(implicit) 방식을 사용하기 때문에 크고 무거운 신경망을 사용할 수 밖에 없는 것이죠.

  이 단점을 해소하기 위해 나온 방식이 명시적인(explicit) Neural Rendering 방식입니다. 대상이 되는 3D 공간을 작은 복셀(voxel) 단위로 나누고, 각 꼭지점 위치에 정보를 명시적으로 저장하는 특징(feature) 벡터를 할당하는 방식인데요. 인공신경망이 이 특징 벡터를 해당 지점의 색과 밀도로 변환해주는 디코더(decoder) 같은 역할만 수행하기 때문에, 가볍고 빨라질 수 있는 것이 최대 장점입니다.

▲ Plenoxels[2] 논문의 복셀 기반의 명시적인 Neural Rendering 방식

▲ Instant-NGP[4] 논문의 해시 인코딩(hash encoding) 기반의 Neural Rendering 방식

  이러한 명시적인 Neural Rendering 방식 중 대표적인 예가 Plenoxels[2], DVGO[3], 그리고 Instant-NGP[4] 입니다. 그 중에서도 2022년 SIGGRAPH 베스트 페이퍼로 선정되었던 Instant Neural Graphics Primitives (Instant-NGP) 논문이 제일 업계에 영향력이 있었는데요. 기존에는 몇 시간이 걸리던 장면을 단지 몇 분 만에 학습하고 정확도 면에서도 뛰어난 결과를 보여주었기 때문입니다. 그 비결은 Instant-NGP에서 차용하는 다중 해상도 해시 인코딩(multi-resolution hash encoding) 방식에 있는데요. 공간을 균일한 간격으로 나누어 특징 벡터를 배치하는 기존의 관념에서 벗어나, 여러 개의 레벨을 나누고 각 레벨 별로 다른 간격과 해시 테이블을 이용하여 특징 벡터의 일부분을 표현함으로써 높은 메모리 활용도와 빠른 속도를 달성할 수 있었습니다.

실내 환경에서의 챌린지들

  저희가 실제로 실험을 해보니 Instant-NGP 방식을 기반으로 하였을 때 속도는 확보할 수 있었지만 실내 공간을 기록하는데에 있어서는 여러 한계점들이 있었는데요. 특히 다음 두 가지 문제들이 아쉽게 느껴졌습니다.

  1. 비-정방형 실내 구조 표현에 대한 비효율성
  2. 빛 반사가 일어나는 물체의 표현

  먼저, Instant-NGP는 기본적으로 정육면체의 공간을 가정하고 학습을 진행하기 때문에 다양한 실내 공간의 구조를 처리하는데 어려움이 있습니다. 물론 공간을 다 포함하도록 정육면체를 크게 잡을 수도 있지만 그에 따라 해상도가 낮아져 결과에 디테일이 떨어지는 현상이 발생합니다.

  또 실내 공간에는 빛 반사가 일어나는 물체가 많은데, 그러한 물체들이 다소 이질감이 드는 모습으로 표현되는 문제가 있습니다. 반사라는 현상이 볼륨 렌더링의 원리와 상충하는 현상이다보니, 해당 위치 주변이 뿌옇게 흐려진 형태로 표현되거나 후방으로 뚤려있는 형태로 표현되는 것을 빈번하게 볼 수 있습니다.

시도 방법

  저희는 앞서 나온 문제점들을 극복하고자 최신 논문 2편의 아이디어를 차용하여 하나의 모델을 만드는 방법을 고안했습니다.

▲ F2-NeRF[5] 논문의 옥트리를 이용한 공간 세분화 기반의 Neural Rendering 방식

  첫번째로 차용한 아이디어는 F2-NeRF[5] 논문의 옥트리(octree) 기반의 공간 세분화(space subdivision) 입니다. 기존에 있던 Instant-NGP에서 발전한 방식인 F2-NeRF에서는 카메라가 볼 수 있는 공간을 옥트리로 표현하는데요. 카메라의 궤적(trajectory)을 바탕으로 공간을 분할하고, 각 분할된 공간 내에서는 개별적인 원근 뒤틀기(perspective warping) 변환을 통해 압축적인 표현이 가능하게 만들었습니다. 마지막으로 각 공간이 서로 다른 해시 함수를 사용하게 함으로써 제한된 메모리의 해시 테이블을 최대한 활용할 수 있게 하는 방식인데요. 저희는 이 방식을 차용함으로써 비정방형의 실내 공간에 대한 표현력 향상을 도모하였습니다.

▲ MS-NeRF[6] 논문의 다중 공간 기반의 Neural Rendering 방식

  다음으로는 빛 반사가 일어나는 물체를 더욱 사실적으로 표현하기 위해 MS-NeRF[6]라는 논문에서 소개된 다중 공간(multi-space) 표현 방식을 차용하였습니다. 간단히 설명하면 한 공간을 여러 개의 겹쳐진 공간으로 모델링하는 방식인데요. 실제 물체들은 한 공간에, 그리고 반사된 물체의 상들은 다른 공간에서 학습되도록 유도하며 각 공간이 얼마만큼씩의 비율로 혼합되어 보이는지를 같이 학습해주는 방식입니다.

  이 두 가지 아이디어를 합치는 작업에는 몇 가지 고려할 사항이 있었는데요. 우선 학습 속도를 고려하여 위해 명시적인 Neural Rendering 방식인 F2-NeRF를 기반으로 하고, MS-NeRF에서 소개된 다중 공간 개념을 도입하고자 하였습니다. 그에 따라 사용하려는 다중 공간의 차원만큼 F2-NeRF에서 사용하는 특징 벡터의 깊이를 추가적으로 늘려주었습니다. 또 볼륨 렌더링 과정에 있어서 F2-NeRF는 각 지점에서 신경망을 먼저 거친 후 색 공간(color space)에서 값을 누적하지만 MS-NeRF는 특징 공간(feature space)에서 값을 먼저 누적한 후 신경망을 거쳐 색으로 변환하는 차이가 있었는데요. 두 방식을 모두 구현해본 결과, 색 공간에서 누적하는 것이 더 좋은 결과를 보여 해당 방식을 채택하였습니다.

결과

  결과 공유에 앞서 저희는 F2-NeRF 논문에서 사용된 Appearance embedding이라는 기법을 학습 과정에서 중도 제외하는 드롭아웃(dropout)을 추가하여 실험을 진행했다는 점을 알려드리려고 합니다. Appearance embedding은 NeRF in the Wild[7]라는 논문에서 소개된 기법으로, 카메라마다 다른 색 반응 특성이나 촬영 시기에 따른 조명 환경의 차이 등을 각 이미지의 고유한 특성으로 종속시켜, 전체적인 복원 결과의 안정성을 도모하는 장치라고 할 수 있는데요. 저희가 대상으로 하고 있는 실내 환경에서는 조명 조건이 일정하고 카메라 또한 한 대라는 가정이 있기 때문에, 해당 기법이 전체적인 원본의 색감을 유지하지 못하게 하는 부작용이 있었습니다. 다만 학습 초반에는 수렴에 도움이 되는 것으로 나타나, 학습이 50% 정도 완료된 지점에서 드롭아웃을 수행하게 되었습니다.

  실험에는 서로 다른 실내 환경에서 모바일로 촬영한 5가지의 영상을 사용하였는데요. 각 영상들의 프레임을 일부 비율만큼 제외한 상태로 학습한 후, 제외된 프레임들의 시점에서 렌더링한 결과를 실제와 비교하여 그 품질을 측정하였습니다. 결과 표에서 알 수 있듯이, 베이스라인인 F2-NeRF에서 appearance embedding을 드롭아웃했을 때 결과의 색감이 원본과 유사하게 돌아오면서 수치적인 결과의 상승이 있었으며, 더 나아가 저희의 결과에서는 다중 공간 사용으로 인한 물체 표현의 개선 효과로 품질이 더욱 향상되는 것을 확인할 수 있었습니다. 

  아래는 각 장면들을 저희 방식을 이용하여 임의의 궤적으로 렌더링한 결과들입니다. 이 중 피아노와 램프 씬에 대해서는 베이스라인과의 정성적인 비교를 할 수 있는 뷰어를 아래에 삽입하였습니다. 결과적으로 저희 방식이 피아노의 표면이나 램프의 스탠드 부분에서 반사되는 빛을 더 자연스럽게 표현하는 것을 확인할 수 있습니다.

References

[1] B. Mildenhall, P. P. Srinivasan, M. Tancik, J. T. Barron, R. Ramamoorthi, and R. Ng, “Nerf: Representing scenes as neural radiance fields for view synthesis,” ECCV, 2020

[2] A. Yu, S. Fridovich-Keil, M. Tancik, Q. Chen, B. Recht, and A. Kanazawa, “Plenoxels: Radiance fields without neural networks,” CVPR, 2022

[3] C. Sun, M. Sun, and H.-T. Chen, “Direct voxel grid optimization: Super-fast convergence for radiance fields reconstruction,” CVPR, 2022

[4] T. Müller, A. Evans, C. Schied, and A. Keller, “Instant neural graphics primitives with a multiresolution hash encoding,” ACM Trans. Graph., vol. 41, no. 4, pp. 102:1–102:15, Jul. 2022

[5] P. Wang, Y. Liu, Z. Chen, L. Liu, Z. Liu, T. Komura, C. Theobalt, and W. Wang. “F2-nerf: Fast neural radiance field training with free camera trajectories.” CVPR, 2023

[6]  Z. Yin, J. Qiu, M. Cheng, and B. Ren. “Multi-space neural radiance fields,” CVPR 2023

[7] R. Martin-Brualla, N. Radwan, M. S. M. Sajjadi, J. T. Barron, A. Dosovitskiy, and D. Duckworth. “NeRF in the wild: Neural Radiance Fields for Unconstrained Photo Collections,” CVPR, 2021

오늘의집에서 당신을 찾고 있습니다!
Engineering Manager, ApplicationsSenior Technical Program ManagerSenior Software Engineer, BackendSoftware Engineer, BackendSenior Software Engineer, FrontendSoftware Engineer, FrontendSenior Software Engineer, AndroidSoftware Engineer, AndroidSenior Software Engineer, Machine LearningSoftware Engineer, Machine LearningSenior Software Engineer, Machine Learning, Extended RealitySenior Software Engineer, Vision ML
목록으로 돌아가기