はじめに
3D Gaussian Splatting(3DGS)は高速・高品質なレンダリングで一気に広まりましたが、金属や光沢のある物体(反射物体) は今でも苦手分野です。
本記事では、この課題に2D Gaussian Splatting(2DGS)ベースで取り組んだ CVPR 2025 の論文 GS-2DGS を解説します。
論文:Jinguang Tong, Xuesong Li, Fahira Afzal Maken, Sundaram Muthu, Lars Petersson, Chuong Nguyen, Hongdong Li. "GS-2DGS: Geometrically Supervised 2DGS for Reflective Object Reconstruction", CVPR 2025.
コード:https://github.com/hirotong/GS2DGS
本記事は論文の内容を筆者が要約・解説したものです。図表は論文を参照してください。
TL;DR
- 反射物体は「見る角度で色が変わる」ため、多視点の一貫性を前提とする従来の再構成が破綻しやすい
- GS-2DGS は
- 単眼の基盤モデル(Marigold / Depth Pro)が予測した法線・深度で「形」を教師付け
- ガウシアンに材質(アルベド・金属度・粗さ)を持たせ、物理ベースレンダリング(PBR)+学習可能な環境マップで「反射」を表現
- ディファードシェーディングで、ピクセルごとに1回だけ正しい法線で反射計算
- 結果:ガウシアン系手法の中で再構成・リライティングともに最良、SDF系(NeRO)に迫る精度を約0.7時間(NeROは12時間)で達成
背景:なぜ反射物体は難しいのか
反射面の見た目は 表面の性質(形状・材質) と 周囲の照明 の掛け算で決まります。観測できるのは結果の色だけなので、どちらが原因かを切り分けられない、いわゆる不良設定問題です。
既存手法はおおまかに次のように分かれます。
| 系統 | 代表手法 | 強み | 弱み |
|---|---|---|---|
| SDF系 | NeRO, TensoSDF | 滑らかで高品質なメッシュ | 学習が数時間〜半日、過平滑化 |
| GS+形状制約 | 2DGS, PGSR, GSDF | 形がきれい・速い | 反射を考慮していない |
| GS+PBR | GaussianShader, GS-IR, R3DG | リライティング可能 | 形状がノイジー |
GS-2DGS は「形状制約」と「反射のモデル化」の両方を同時に扱うのが狙いです。ただし単純に両者を足すだけでは不十分で、追加の手がかりとして基盤モデルを使う、というのが本論文の発想です。
手法の全体像
ざっくり言うと、
- 2DGSでシーンを表現し、各ガウシアンに PBR パラメータを追加
- 深度・法線・材質を Gバッファ にラスタライズ
- 基盤モデルの深度・法線で Gバッファの形を教師付け
- Gバッファ+環境マップから PBR で画像を作り、実写と比較
という流れです。
1. ベースは2DGS
2DGS は3Dの楕円体ではなく、向きを持った平面の円盤(サーフェル) でシーンを表します。各円盤は中心 $\mathbf{x}$、2本の接ベクトル $\mathbf{t}_u, \mathbf{t}_v$、スケール $(s_u, s_v)$ を持ちます。
平面なので法線が接ベクトルの外積で一意に決まるのが大きな利点です。
\mathbf{n} = \mathbf{t}_u \times \mathbf{t}_v
3DGSでは「一番薄い軸を法線とみなす」近似が必要でしたが、2DGSではその必要がありません。法線と深度は、色と同じくアルファブレンディングでピクセルごとにレンダリングできます。
2. 基盤モデルで「形」を教える
ここが本論文の核心です。
- 法線推定:Marigold(拡散モデルベース、Martin Garciaらのファインチューン版)
- 深度推定:Depth Pro
これらは画像1枚から形を推定します。多視点の色の一致を使わず、大量データで学んだ「物の形の知識」から推定するため、表面がギラギラ反射していても形をそこそこ正しく当てられるのがポイントです。
よくある誤解:基盤モデルが推定するのは**反射(見た目)ではなく形(深度・法線)**です。反射はこのあとのPBRで別に扱います。
この予測を疑似正解として、2DGSがレンダリングした法線・深度に損失をかけます。
法線損失(L1+コサイン)
\mathcal{L}_\text{n} = \left\| \hat{N} - \tilde{N} \right\|_1 + \left( 1 - \hat{N}^T \tilde{N} \right)
深度損失(スケール不変)
\mathcal{L}_\text{d} = \left\| (\omega \hat{D} + b) - \tilde{D} \right\|^2
単眼深度はスケールとシフトが不定なので、スケール $\omega$ とシフト $b$ を最小二乗で合わせてから比較します(MiDaS と同じ考え方)。
3. PBRで「反射」を表現する
通常のGSは各ガウシアンの色を球面調和関数(SH)で持ちますが、鋭い鏡面反射はSHでは表しきれません。そこで各ガウシアンに
- アルベド $\mathbf{a}$
- 金属度 $m$
- 粗さ $\rho$
を持たせ、Cook-Torrance BRDF でレンダリング方程式を解きます。
f_r = \underbrace{(1 - m) \frac{\mathbf{a}}{\pi}}_{\text{diffuse}} + \underbrace{\frac{DFG}{4 (\omega_i \cdot \mathbf{n}) (\omega_o \cdot \mathbf{n})}}_{\text{specular}}
照明は学習可能なHDRキューブマップで表現します。拡散項は事前計算してテクスチャ化し、鏡面項は UE4 でおなじみの split-sum 近似で軽量化しています。
つまり「反射=材質 × 照明 × 法線」と分解して、実写とのRGB誤差から材質と照明を同時に推定するわけです。ここで2.の法線の精度が効いてきます。
4. ディファードシェーディング
PBRの計算をどの段階で行うかの工夫です。
| フォワード | ディファード(本手法) | |
|---|---|---|
| 手順 | ガウシアンごとに反射計算 → 色をブレンド | 法線・深度・材質を先にブレンド(Gバッファ)→ ピクセルごとに1回だけ反射計算 |
| 問題点 | 向きのバラバラなガウシアンの反射が混ざる/重い | ― |
| 効果 | ― | 正しい表面位置・法線で計算でき、環境照明の推定が改善 |
ゲームエンジンでおなじみの手法ですが、GSへは Ye et al.(3DGS with Deferred Reflection, SIGGRAPH 2024)が先に導入しており、本手法もそれを取り入れています。
5. 損失と学習スケジュール
\mathcal{L} = \mathcal{L}_\text{GS} + \lambda_\text{n}\mathcal{L}_\text{n} + \lambda_\text{d}\mathcal{L}_\text{d} + \lambda_\text{light}\mathcal{L}_\text{light} + \lambda_\text{pbr}\mathcal{L}_\text{pbr}
- $\mathcal{L}_\text{GS}$:2DGSの元の損失(RGB+法線一貫性)
- $\mathcal{L}_\text{light}$:環境光が極端に色付かないようにする正則化(NeRO由来)
- $\mathcal{L}_\text{pbr}$:色が滑らかな領域では材質も滑らかに、という正則化(R3DG由来)
学習は2段階です。
- Stage 1:2DGS+幾何損失のみ($\lambda_\text{n}=0.5,\ \lambda_\text{d}=0.05$)で 30,000 iter
- Stage 2:PBRを有効化し、形状・材質・環境照明をまとめて 10,000 step
いきなり全部を最適化すると不安定なので、先に形を固めてから見た目を詰める構成になっています。実験は RTX 4090 1枚です。
実験結果
データセットは合成の Glossy Blender(NeRO、8物体)と実写の Stanford-ORB(14物体)。
形状精度(Glossy Blender, Chamfer距離↓ 平均)
| 手法 | 系統 | Chamfer↓ | 学習時間 |
|---|---|---|---|
| NeRO | SDF | 0.0042 | 12 h |
| TensoSDF | SDF | 0.0106 | 6 h |
| GShader | GS | 0.0169 | 0.5 h |
| GS-IR | GS | 0.0553 | 0.5 h |
| R3DG | GS | 0.0303 | 1 h |
| GS-2DGS | GS | 0.0068 | 0.7 h |
GS系では断トツ、NeROには僅差で届かないものの学習時間は約1/17です。定性的にも、SDF系がベルの底など見えない領域を膨らませてしまうのに対し、本手法はきれいに抜けている点や、馬のたてがみのような細部を残せる点がアピールされています(逆に表面の滑らかさはSDF系に劣る)。
Stanford-ORBでも平均 0.0047 で、比較したGS系手法(最良でもR3DGの0.0070)を上回っています。
リライティング(Glossy Blender, 平均)
| 手法 | PSNR↑ | SSIM↑ | FPS |
|---|---|---|---|
| GShader | 14.96 | 0.8108 | 50 |
| GS-IR | 17.11 | 0.8113 | 214 |
| R3DG | 19.19 | 0.8366 | 1.5 |
| GS-2DGS | 19.56 | 0.8557 | 160 |
R3DGより高品質で、しかも約100倍高速にレンダリングできます。
アブレーション
| 構成 | Chamfer↓ | PSNR↑ |
|---|---|---|
| 2DGS | 0.0481 | 26.23 |
| +基盤モデルの幾何教師 | 0.0084 | 25.52 |
| +PBR | 0.0074 | 25.86 |
| +ディファードシェーディング | 0.0068 | 26.76 |
- 形状精度の改善はほぼ基盤モデルの教師によるもの(0.0481 → 0.0084)
- 幾何教師だけだと見た目の自由度が減り PSNR は一度下がる
- PBR とディファードシェーディングで見た目が回復・向上
「形は基盤モデル、見た目はPBR+ディファード」という役割分担がはっきり出ている結果です。
所感
- 基盤モデルを「幾何の事前知識」として差し込むという発想はシンプルで汎用性が高く、反射物体以外(テクスチャの少ない壁、透明物体など)にも応用できそうです
- 一方で、基盤モデルの予測が外れるケース(強い映り込みで形を誤認するなど)では、その誤りをそのまま教えてしまうリスクがあります。単眼推定の信頼度で重み付けするなどの拡張は考えられそうです
- 著者らも結論で触れているように、SDF系との差はガウシアンに滑らかさの制約がないことに起因しており、速度と精度の両立が今後の課題です
- 2DGSは法線が明確に定義できるので、PBRやディファードシェーディングとの相性が良いことがよくわかる論文でした
参考
- GS-2DGS 論文(CVPR 2025 Open Access)/コード:https://github.com/hirotong/GS2DGS
- Huang et al., "2D Gaussian Splatting for Geometrically Accurate Radiance Fields", SIGGRAPH 2024
- Ye et al., "3D Gaussian Splatting with Deferred Reflection", SIGGRAPH 2024
- Liu et al., "NeRO: Neural Geometry and BRDF Reconstruction of Reflective Objects from Multiview Images", TOG 2023
- Ke et al., "Repurposing Diffusion-Based Image Generators for Monocular Depth Estimation" (Marigold), CVPR 2024
- Bochkovskii et al., "Depth Pro: Sharp Monocular Metric Depth in Less Than a Second", 2024