VGGT vs Classical SfM and MVS
VGGT を「ただ強い depth model」と見ると、本質を取り違えます。重要なのは、従来の SfM / MVS pipeline が担っていた処理の大部分を、一つの learned function に置き換える点です。
従来 SfM / MVS の処理段階
Structure from Motion と Multi-View Stereo は、典型的には次のような多段 pipeline です。
各段階で異なるアルゴリズムが使われ、失敗するとその後の段階にも誤りが伝播します。
VGGT の処理
VGGT では、これが次のように圧縮されます。
つまり、feature matching、verification、camera registration、triangulation の多くを transformer の attention に内部化しています。
どう違うのか
| 観点 | Classical SfM / MVS | VGGT |
|---|---|---|
| 処理段階 | 多段 pipeline | 一回の feed-forward |
| 失敗の伝播 | 各段階で起こりうる | 学習された分布の外で発生 |
| 計算時間 | 大規模 scene で長い | 推論は高速、view 数に依存 |
| 精度 (良条件) | 非常に高い | 競争的だが、最終 BA に劣ることも |
| 精度 (弱 texture / sparse) | 失敗しやすい | prior に基づき頑健 |
| Metric scale | Stereo / sensor で確保 | Single view では原理的に困難 |
| 解釈性 | 各段階を分解できる | Black-box になりやすい |
| Fine-tuning | パラメータ調整 | Domain shift に再学習が必要 |
どちらを使うべきか
両者は対立するものではなく、状況に応じて使い分け、または組み合わせます。
- 撮影条件が良く、精度を最大化したい → 古典 SfM + MVS + BA
- View が少ない、textureless、初期化が難しい → VGGT
- VGGT の出力を初期値にして、後段で BA や dense MVS を回す → ハイブリッド
実際、近年の neural reconstruction pipeline では、**「VGGT で粗く取り、古典最適化で締める」**という構成が現実的な選択肢になりつつあります。
数式で見る古典 pipeline と feed-forward 推論の対比
古典 SfM / MVS では、observation を順番に幾何的に処理して中間量を得ます。
各段階の objective は明示的に書けます。たとえば BA は次の通りです。
VGGT などの feed-forward 系は、これらの中間量を学習された写像 に置き換えます。
この式の気持ちは、「明示的な最適化の積み重ねを、ひとつの学習された関数に圧縮する」というものです。利点は、初期化失敗が起きにくく、計算が一定時間で済むことです。一方で、ill-conditioned な scene や training 分布から外れる scene では、出力が信頼できないことがあります。そのため、VGGT 系の出力は古典 BA や MVS の初期値として使う hybrid 構成がよく取られます。
関連ページ
主なソース
- VGGT paper: https://arxiv.org/abs/2503.11651
- COLMAP documentation: https://colmap.readthedocs.io/en/stable/