3D Gaussian Splatting
- 다른 이름: 3DGS, Gaussian Splatting, Gaussian splats, Gaussian radiance field
- 카테고리: Sensing › 3D maps & reconstruction
- 태그: scene-representation, 3d-reconstruction, rendering, slam, computer-vision, simulation
3D 환경을 색이 있는 반투명 가우시안 덩어리의 큰 집합으로 모델링하는 장면 표현으로, 사진으로부터 최적화할 수 있고 실시간으로 사실적으로 렌더링할 수 있다.
정의
3D 가우시안 스플래팅(3D Gaussian Splatting, 3DGS)은 3D 장면을 재구성하고 렌더링하는 방법으로, Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler, George Drettakis가 SIGGRAPH 2023에서 발표했다. 장면은 3D 가우시안의 집합으로 표현되며, 각 가우시안은 위치, 크기와 방향을 정하는 공분산, 불투명도, 그리고 구면 조화 계수로 저장되는 시점 의존 색상을 가진다. 이미지를 렌더링할 때는 가우시안을 이미지 평면에 투영하고 깊이 순으로 정렬한 뒤 앞에서 뒤로 블렌딩하는데, 이 과정을 스플래팅(splatting)이라고 한다.
이 표현은 카메라 자세가 알려진 사진으로부터 학습된다. 카메라 자세는 보통 COLMAP 같은 SfM(structure-from-motion) 소프트웨어로 구하며, 이 소프트웨어는 가우시안을 초기화하는 데 쓰이는 희소 포인트 클라우드도 제공한다. 래스터라이저가 미분 가능하므로, 모든 가우시안의 파라미터를 경사 하강법으로 최적화하여 렌더링된 이미지와 실제 이미지의 차이를 줄일 수 있다. 학습 중에는 재구성이 부족한 영역에 가우시안을 추가하고, 너무 큰 가우시안은 분할하며, 거의 투명해진 가우시안은 제거한다.
카메라 광선을 따라 질의되는 신경망에 장면을 저장하는 신경 방사 필드(NeRF)과 비교하면, 가우시안 스플래팅은 레이 마칭 대신 빠른 타일 기반 래스터화로 렌더링되는 명시적 표현이다. 그 결과 높은 해상도에서 실시간 렌더링과 더 빠른 학습이 가능하지만, 한 장면에 매우 많은 수의 가우시안이 들어갈 수 있으므로 메모리 사용량이 더 크다. 가우시안이 명시적이기 때문에 이동, 편집, 물체에 부착, 삭제가 가능하며, 이는 암시적 신경망으로는 더 어렵다.
로봇공학은 3DGS를 여러 방식으로 사용한다. 지도 표현으로서는 카메라를 추적하면서 동시에 사실적인 지도를 만드는 고밀도 SLAM 시스템을 지원한다. 시뮬레이션 자산으로서는 재구성된 실제 장면을 물리 시뮬레이터와 짝지어, 시각 정책을 실제 배치 환경의 사실적인 이미지로 학습하거나 테스트할 수 있다. 한계로는 반사되거나 투명한 표면, 렌더링된 외관이 시사하는 것보다 덜 정밀한 기하 형상, 그리고 장면을 카메라로 충분히 촬영해야 한다는 점이 있다.
중요한 이유
3DGS는 실제 장소의 사실적인 재구성을 실시간으로 렌더링할 수 있을 만큼 빠르게 만들었다. 덕분에 로봇은 사실적인 지도를 만들 수 있고, 팀은 실제 방을 스캔한 결과를 시각 학습 데이터로 바꿀 수 있다. 3DGS는 비전 기반 로봇 학습에서 실제 환경과 시뮬레이션을 잇는 널리 쓰이는 다리가 되었다.
주요 응용
- 사실적인 시뮬레이션 — 시각 정책의 학습과 테스트를 위해 사실적인 카메라 뷰를 렌더링
- 고밀도 SLAM — 카메라 자세를 추적하면서 사실적인 지도를 구축
- 디지털 트윈 — 계획과 점검을 위해 실제 작업 공간, 공장, 주택을 재구성
- 드론 내비게이션 — 비전 기반 비행을 위한 사실적인 시각 환경 제공
- 장면 편집 — 물체를 삽입, 이동, 제거하여 다양한 학습 장면을 생성
실제 사례
팀은 보통 로봇 작업 공간의 동영상이나 사진 묶음을 촬영하고, COLMAP 또는 비슷한 도구로 카메라 자세를 추정한 뒤, 원저자의 코드나 Nerfstudio의 splatfacto 같은 오픈소스 구현으로 가우시안 스플래팅 모델을 학습시킨다. 학습된 장면은 어느 시점에서든 렌더링할 수 있으므로, 로봇의 온보드 카메라와 일치하는 가상 카메라를 배치해 학습 이미지를 생성하거나, 스플랫을 물리 시뮬레이터의 충돌 형상과 정렬해 시뮬레이션 속 로봇이 움직이면서 사실적인 뷰를 보도록 한다. 지도 작성에는 RGB-D 또는 단안 카메라를 쓰는 가우시안 스플래팅 SLAM 시스템을 사용하며, 렌더링된 이미지는 정확해 보여도 실제 형상은 부정확할 수 있으므로 기하 형상을 깊이 센서와 대조해 검증한다.
흔한 오해
- 가우시안 스플래팅은 신경망이다 — 최적화된 프리미티브의 명시적 집합이며, 렌더링하는 데 신경망이 필요하지 않다
- 사실적인 렌더링은 정확한 기하 형상을 뜻한다 — 외관은 정확해도 깊이와 표면은 부정확할 수 있으므로, 기하 형상은 별도로 검증해야 한다
- 3DGS가 물리 시뮬레이션을 대체한다 — 3DGS는 외관과 렌더링을 담당하며, 접촉과 동역학에는 여전히 물리 엔진과 충돌 형상이 필요하다
- 아무 사진 묶음으로나 작동한다 — 충분한 시점 커버리지와 정확한 카메라 자세가 필요하며, 반사되거나 투명하거나 움직이는 대상에는 취약하다
알아야 할 사람
- 지도와 장면 표현을 구축하는 인식 엔지니어
- 비전 기반 정책을 학습시키는 로봇 학습 연구자
- 사실적인 환경을 만드는 시뮬레이션 엔지니어
- 드론 내비게이션 개발자
관련 기술
- 신경 방사 필드(Neural Radiance Fields, NeRF)
- SfM(Structure from Motion, COLMAP)
- SLAM
- 미분 가능 렌더링(Differentiable Rendering)
- 포인트 클라우드(Point Cloud)
- Nerfstudio
관련 용어
관련 프로젝트
- GENESIS: World's fastest physics engine: 43M FPS for embodied AI learning
- LeRobot: HuggingFace ML library for real-world robotics in PyTorch
- LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
- PyBullet: Python physics simulator for robotics and RL research with fast CPU-based simulation
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
동영상
- 3D Gaussian Splatting - Why Graphics Will Never Be The Same: IndividualKex
- 3D Gaussian Splatting! - Computerphile: Computerphile