Skip to main content

VGGT in 3D Reconstruction Pipelines

VGGT は単体でも geometry を出力できますが、実用上は他の component と組み合わせることが多いです。ここでは、代表的な組み合わせをまとめます。

NeRF / 3D Gaussian Splatting の初期化​

NeRF や 3D Gaussian Splatting は、accurate な camera pose を前提とします。通常は COLMAP などで pose を推定しますが、view が少ない場合や弱 texture の場合には失敗しがちです。

VGGT は、こうした難しい条件でも camera pose と depth を出してくれるため、初期化に向いています。

Depth prior を加えると、特に sparse view 設定で formation が安定しやすくなります。

SLAM との関係​

SLAM は real-time な online system ですが、VGGT のような heavy な model は frame ごとに動かすには重いです。代わりに、

  • 初期 frame で VGGT を一度走らせて map を初期化する
  • Loop closure 後の global refinement で使う
  • Keyframe をまとめて再推定する

といった 戦略的な使い方が現実的です。

Dense reconstruction の後処理​

VGGT の point map は dense point cloud に近いですが、そのままでは triangle mesh ほど整った表現ではありません。実用 pipeline では、

のように、古典的な Point Clouds, Meshes, and TSDF 系の処理と組み合わせます。

Foundation model 同士の組み合わせ​

近年は、複数の vision foundation model を組み合わせる pipeline が増えています。

これらを統合することで、editable で robust な 3D scene を構築できます。

数式で見る VGGT 初期化 + BA refinement​

VGGT を 3D reconstruction の初期化として使う場合、最終的な camera と 3D 点は古典的な BA で refine することが多いです。VGGT が出した (R^i0,t^i0,X^j0)(\hat{\mathbf{R}}_i^0,\hat{\mathbf{t}}_i^0,\hat{\mathbf{X}}_j^0) を初期値として、次の objective を最小化します。

min⁡{Ri,ti},{Xj}∑(i,j)∈Oρ∥uij−π(Ki(RiXj+ti))∥2\min_{\{\mathbf{R}_i,\mathbf{t}_i\},\{\mathbf{X}_j\}} \sum_{(i,j)\in\mathcal{O}}\rho\left\|\mathbf{u}_{ij}-\pi(\mathbf{K}_i(\mathbf{R}_i\mathbf{X}_j+\mathbf{t}_i))\right\|^2

VGGT の出力には予測の信頼度 cij∈[0,1]c_{ij}\in[0,1] が付くため、その値を観測重みとして objective に組み込めます。

min⁡{Ri,ti},{Xj}∑(i,j)∈Ocij ρ∥uij−π(Ki(RiXj+ti))∥2\min_{\{\mathbf{R}_i,\mathbf{t}_i\},\{\mathbf{X}_j\}} \sum_{(i,j)\in\mathcal{O}}c_{ij}\,\rho\left\|\mathbf{u}_{ij}-\pi(\mathbf{K}_i(\mathbf{R}_i\mathbf{X}_j+\mathbf{t}_i))\right\|^2

この式の気持ちは、「学習された prior は強いが完全ではないので、観測としての画像点と幾何的整合性で最後に明示的に最適化し、信頼度の高い対応に重みを置く」というものです。Hybrid 構成では、VGGT の汎用性と BA の精度の両方を活かせます。

関連ページ​

主なソース​