はじめに
皆さんこんにちは!
今週のAKARI tech blogは、DX Solution 事業本部 Simulation チームの落合が担当します。
今回は、2025年のCVPRでもBEST PAPER AWARDを受賞し、画像からの三次元再構成タスクのブレイクスルーとなったVGGTを紹介します!
1年前の論文ですが、最近も派生手法の研究が盛んに発表されており(FastVGGT, IGGT, VGGT-SLAM 2.0, π3, LoGeR…)、重要度が増してきているのでその源流の論文を取り上げたいと思います。
VGGTとその改良手法のFastVGGTを動かしてみた結果も最後に載せているので是非見ていってください!
要点

これは何?
- VGGTは、1枚から数百枚の画像を入力し、シーンの3D情報(カメラの姿勢 & 位置 & 視野角、深度、3D点群、点の追跡)を一度に0.2秒から数秒で予測するニューラルネットワークです。
- 3D特有の複雑な設計を極力排除し、自然言語処理などで使われる標準的なトランスフォーマーをベースにした大規模モデル(1.2B)です。
達成したことは?
- 圧倒的な速度と精度: 従来必須だった時間のかかる後処理(最適化など)なしで当時のSOTA精度を達成しています。
- 優れた汎化性能: 未学習の未知のデータセットや、単一視点(画像1枚)からの再構成でも高い性能を発揮します。
Limitationは?
- 魚眼・パノラマ画像(カメラの歪みを出力できない)、極端なカメラの回転、および大きな変形を伴う動的シーン(非剛体変形)には現在対応していません。
- ただし、モデルの構造を変えずに追加学習(ファインチューニング)を行うだけで、これらの弱点には容易に対処できるという柔軟性を持っています。
そもそも三次元再構成のSfM, MVS, SLAMってどんなタスク?
VGGTがターゲットにしているのはSfMとMVSという二つの三次元再構成タスクで、VGGTはSfM→MVSを単一のフィードフォワードネットワークで一気通貫で処理します。
以下、代表的な三次元再構成タスクの分類です。

SfMとSLAMの大きな違いの一つは処理がリアルタイムかどうかにあります。SfMは最初からシーンの全ての画像が与えられますが、SLAMは画像を収集しながら3次元再構成するタスクです。
VGGTの衝撃: 後処理からの脱却
まずは既存手法との比較からしていきます。
既存手法 :
Colmapを代表とした伝統的な手法

- 特徴抽出、マッチング、三角測量、バンドル調整(BA)といった反復的な最適化プロセスを順番に行うため、計算コストが高く時間がかかります. (数分から画像枚数によっては数時間以上かかります)
DUST3R, MUST3Rなどの深層学習手法

- こちらはTransfomerを用いた手法ですが、ポイントマップの予測を主軸とし、カメラパラメータ等は後処理で計算するアプローチです。
提案手法 : VGGT
そして今回取り上げるVGGTについてです。

主な特徴としては以下の二点です。
- すべての3D情報を「1回の推論」で直接出力する(完全なフィードフォワード): 1枚から最大数百枚の画像を一度にネットワークに入力し、「カメラパラメータ(位置・向き・焦点距離)」「深度マップ」「3D点群(ポイントマップ)」「点の追跡(トラッキング)」というシーンの全3D属性を、同時に直接出力します。
- 約0.2秒の推論によるスピードと精度の両立 : これまで時間がかかっていた最適化プロセスを完全にスキップし、0.2秒の推論を行うだけで、最適化を経たDUSt3RやMASt3Rと同等以上の最先端の精度を実現します。
VGGTのアーキテクチャ
ここではVGGTのアーキテクチャについて簡単に解説していきます。

交互アテンション(Alternating-Attention) :
入力された複数の画像はまず、画像認識で強力な性能を持つDINOv2によってパッチ(小さなブロック)に分割され、「画像トークン」に変換されます。
このDINOv2でパッチ化された画像トークン群は、次にVGGTの心臓部であるTransformerへと送られます。
VGGTのTransformerは、複雑なクロスアテンション(画像同士を交差して比較する処理)を一切捨て、2種類のシンプルな「セルフアテンション」を交互に繰り返すという設計を採用しています。
- フレーム単位のセルフアテンション (Frame-wise Self-Attention)
- 役割: 「同じ画像の中」にあるトークン(パッチ)だけを見て処理します。
- 目的: その画像内に何が写っているかという、詳細な視覚的特徴を抽出します。
- グローバル・セルフアテンション (Global Self-Attention)
- 役割: 入力された「すべての画像」のすべてのトークンを同時に見て処理します。
- 目的: 異なる画像間でのピクセルの対応関係(マッチング)や、全体を通した空間の幾何学的な構造をネットワークに理解させます。
これをL=24層重ねています。
予測ヘッド(Prediction Heads):
抽出された特徴量トークンは、それぞれの役割を持つ専用ヘッドに送られ、シーンの3D情報を1回の推論で同時に出力します。
- カメラヘッド: 専用の「カメラトークン」を処理し、各画像のカメラの位置・向き(外部パラメータ)と視野角(内部パラメータ)を直接予測します。
- 密予測ヘッド (DPT): 「画像トークン」を高解像度な特徴量へ変換し、ピクセル単位の「深度マップ」および「ポイントマップ(3D点群)」を出力します。同時に予測の確からしさを示す不確実性マップも生成します。
- トラッキングヘッド: 密予測ヘッドから出力される高密度なトラッキング特徴量を利用し、指定したポイントの2D軌跡(他の画像との対応関係)を追跡・予測します。
理論上、カメラと深度が分かればポイントマップは計算可能ですが、VGGTはあえて同時に学習させます。重複する情報をマルチタスクで学習させることで、ネットワークの空間理解力が深まり、全体の予測精度が向上することが実験で示されています。
損失関数 :

カメラパラメータ、深度、ポイントマップ、トラッキングの損失を組み合わせたものを使っています。
(トラッキング損失だけは重みを調整して λ=0.05 をかけた記述があります。おそらくトラッキング損失が他の三つ比較して大きくなりがちで、学習がトラッキングに偏らないようにしていると考えられます。)
学習データ
屋外/屋内, 実世界/生成など多様なシーンで取得された、「カメラパラメータ」「深度」「3D点群」などの正解データを含むデータセットを利用しています。など多様なシーンで取得され、カメラパラメータ、深度、3D点群などの正解データを含むデータセットを学習に使用しています。
ちなみに学習は64基のA100 GPU で9日間回したようです。
主な使用データセット(計17種類以上)
- 実世界の多様なシーン: CO3Dv2, MegaDepth, ScanNet, Mapillary, DL3DV, WildRGB など
- 合成・シミュレーション環境: Kubric, Habitat, Replica, Virtual KITTI, Hyper-Sim, MVS-Synth など
3Dアノテーション(正解データ)の取得元
VGGTの学習に必要な「カメラパラメータ」「深度」「3D点群」などの正解データは、以下の複数の手法から取得されています。
- 直接のセンサーキャプチャ(LiDARやRGB-Dカメラなどによる計測)
- 合成エンジン(CGソフトウェアによる出力)
- SfM技術(COLMAPなどを用いた既存の3D復元結果)
データセットの一つ Co3Dv2 を覗いてみた

Amazon Mechanical Turk(AMT)を用いたクラウドソーシングによって収集された、屋外と屋内の両方のシーンを含むスマートフォンで撮影されたデータです。
50カテゴリ(食べ物・食器類、家具・家電・電子機器、乗り物・おもちゃ、日用品・スポーツ用品・屋外の物体など)、約19,000本の動画で構成されています。
カメラパラメータと深度などの取得にはColmapのSfMとMVSを利用しており、3Dアノテーションの品質担保のために、人間による目視評価と機械学習モデル(SVM)を組み合わせた手動の品質チェック(Human-in-the-loop)が行われています。

実験結果
H100 GPU 1基での推論結果についてです。
カメラ姿勢精度

- 対象データ
- CO3Dv2: 学習時に使用
- RealEstate10K: 学習時に未使用
- ランダムな10枚を選択して推論
- 既存手法より高速かつ高精度です。
- 後処理でBA(バンドル調整)をいれてさらに精度を上げることも可能です。
ポイントマップ精度

- 対象データ
- ETH3D: 学習時に未使用
- DUSt3RやMASt3Rは後処理に時間がかかっていますが、VGGTは後処理なしで高速かつ高精度です。
- VGGTはポイントマップ専用ヘッドの出力よりも、深度マップとカメラを組み合わせて計算した方が精度が良くなります。
点群精度

- 対象データ
- DTU: 学習時に未使用
- 既知カメラを必要とする既存のMVS手法に匹敵する精度を達成しています。
マッチング精度

- 対象データ
- ScanNet-1500: 学習時に未使用
- VGGTはマッチング特化ではないが、既存のマッチング専用モデルの性能を凌駕してしまっているのは面白いです。
議論
弱点 と 適応性の高さ
- 現状の弱点: 魚眼やパノラマ画像、極端なカメラの回転、大きく変形する物体(大幅な非剛体運動)の処理は現状では苦手としています。
- VGGTの強み: 既存の最適化手法は特殊なケースに対応するために大掛かりな再設計が必要になりますが、VGGTはターゲットデータでファインチューニング(微調整)するだけで容易に適応できる柔軟性を持っています。
実行時間と消費メモリ

- H100 (GPUメモリ 80GB)、画像解像度 は336 × 518 での結果です。画像解像度を上げたり、入力枚数を増やしたり、コンシューマ向けのNVIDIAのRTXシリーズのGPUなどで処理しようとするとメモリ使用量がボトルネックになってきます。
1枚の画像からでも3D化できる (Single-view)
- DUSt3R等は最低2枚の画像(ペア)が必要ですが、VGGTはアーキテクチャ上「1枚の画像入力」をネイティブにサポートしています。単一画像入力専用の学習をしていないにもかかわらず、1枚の画像から驚くほど高品質な3D再構成(深度・点群予測)が可能です。
実際に動かしてみた
弊社オフィスのエントランスでiPhoneで動画を撮影してVGGTを動かしてみました。

さらに、VGGTを再学習なしでメモリ効率化 & 高速化を達成したFastVGGTについても比較で動かしてみました。
実験条件
- GPU: L40s (VRAM 48GB)
- 画像サイズ: 1920x1080px (iPhone16proで撮影した動画から画像を切り出した)
- 画像枚数: 72枚
VGGT
まずはVGGTの結果です。
- 推論時間: 11.3 s
- 最大VRAM使用量 41.5 GB
深度の信頼度 1.5 以上の点を採用しました。 (最初は信頼度3.0以上でやりましたが0点になってしまったので、信頼度を下げて出力させました。)

FastVGGT
次にVGGTを再学習なしでメモリ効率化 & 高速化を達成したFastVGGTの結果です。
- 推論時間: 5.4 s
- 最大VRAM使用量: 5.6 GB
こちらは信頼度を下げることなく、深度の信頼度 3.0 以上の点を採用しました。

FastVGGTはメモリ効率化 & 高速化を達成しつつ信頼度の高い点を多く出力できていそうで、VGGT周りの進歩の速さを実感できました。
[参考] VGGTを再学習なしでメモリ効率化 & 高速化を達成したFastVGGT

- 推論に不要な中間出力を破棄してメモリ不足(OOM)を回避
- 3D再構成の基準となる重要トークンを保護しつつ冗長な情報を統合
- 既存のモデルに再学習を一切施すことなく大規模な画像の高速処理を実現
参考
[1] VGGT: Visual Geometry Grounded
[2] DUSt3R: Geometric 3D Vision Made Easy
[3] MUSt3R: Multi-view Network for Stereo 3DReconstruction
[4] Structure-from-Motion Revisited
[5] FastVGGT: Training-Free Acceleration of Visual Geometry Transformer
[6] Common Objects in 3D: Large-Scale Learning and Evaluation of Real-life 3D Category Reconstruction
We’re Hiring!
燈では、最新論文を社会実装するAIエンジニアを募集しております!
興味がある方は、ぜひカジュアル面談でお話しましょう!🔥