Skip to main content

Gaussian Splatting Overview

3D Gaussian Splatting (3DGS) は、scene を多数の 3D Gaussian primitive で表し、differentiable rasterization によって real-time に novel view rendering を行う手法です。SIGGRAPH 2023 で登場して以来、爆発的に派生研究が出ています。NeRF 系と並ぶ neural rendering の二大潮流の一つです。

なぜ広まったのか

NeRF は高品質ですが、

  • Training が遅い
  • Rendering が遅い (volume rendering)
  • Editing しにくい

という弱点がありました。3DGS は、

  • 数十分〜数時間で training できる
  • Real-time rendering (60+ FPS) が可能
  • Explicit primitive なので editing しやすい

ため、研究と実用の両方で急速に広まりました。

派生研究の地図

派生目的
Mip-SplattingAnti-aliasing と scale 整合
2D Gaussian SplattingSurface reconstruction 向け
Scaffold-GSAnchor 上に Gaussian を生やして効率化
GS-LRMFew-view → Gaussian の feed-forward 化
Gaussian AvatarsPose-driven 人体 Gaussian
Dynamic / 4DGS時間方向への拡張
CompressionStorage / rendering bandwidth 削減

詳細ページ

ページ内容
3D Gaussian Splatting3DGS の primitive、rasterization、training
Mip-SplattingScale-aware filtering と anti-aliasing
2D Gaussian SplattingSurface reconstruction 向けの 2D primitive
Scaffold-GSAnchor + neural Gaussian decoder
GS-LRMFeed-forward な image-to-Gaussian model
Gaussian AvatarsPose-driven dynamic 人体

数式で見る Gaussian Splatting の基本表現

3D Gaussian Splatting では、scene を多数の Gaussian primitive の集合として表します。一つの Gaussian ii は、中心 μi\boldsymbol{\mu}_i、共分散 Σi\boldsymbol{\Sigma}_i、opacity αi\alpha_i、色または spherical harmonics 係数 ci\mathbf{c}_i を持ちます。

Gi(x)=exp(12(xμi)Σi1(xμi))G_i(\mathbf{x})=\exp\left(-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu}_i)^\top \boldsymbol{\Sigma}_i^{-1}(\mathbf{x}-\boldsymbol{\mu}_i)\right)

この式の気持ちは、「点そのものではなく、空間に広がりを持つ小さな楕円体を scene の部品として置く」ということです。共分散 Σi\boldsymbol{\Sigma}_i が大きい方向には Gaussian が広がり、小さい方向には薄くなります。

Rendering では、3D Gaussian を camera 画像平面へ射影し、depth 順に alpha compositing します。Pixel に届く色 C\mathbf{C} は、概念的には次のように書けます。

C=i=1NTiαici,Ti=j<i(1αj)\mathbf{C}=\sum_{i=1}^{N} T_i\alpha_i\mathbf{c}_i, \qquad T_i=\prod_{j<i}(1-\alpha_j)

ここで、TiT_i は Gaussian ii に到達するまでに前景の Gaussian に吸収されずに残っている透過率です。この式の気持ちは、「手前の半透明な Gaussian から順に色を足していき、奥の Gaussian ほど前景に遮られて寄与が小さくなる」というものです。NeRF の volume rendering と似ていますが、連続的な ray marching ではなく、明示的な Gaussian primitive を rasterize する点が大きく異なります。

関連ページ

主なソース