amap-cvlab/ABot-Recon

Streaming 3D reconstruction from only video input: Revisiting Local Context for Long-Horizon Streaming 3D Reconstruction

ABot‑Recon – 固定ローカルコンテキストによるストリーミング 3‑D 再構築

一言で言うと: ABot‑Recon は、長いビデオストリームから高密度の 3‑D マップを構築し、常に最新の 12 フレームのみを参照し、重い長距離メモリを回避します。


プロジェクトの機能

  • タスク – RGB 画像のシーケンス(例:ドライブレコーダーのビデオ)を入力として、以下を出力します:
    1. 各フレームのカメラポーズ(軌跡)。
    2. 各フレームのローカル点群(そのフレームの座標系で表現)。
    3. オプションのグローバル点群(推定ポーズでローカル点群を結合して取得)。
  • 主要なアイデア – 各タイムステップでモデルは:
    1. 前の 11 フレームのキー・バリュー特徴をキャッシュします。
    2. 現在のフレームのポイントマップを予測します。
    3. 現在のフレームと前のフレームの間の相対ポーズを予測します。
    4. 相対ポーズを合成して、グローバル軌跡を継続的に更新します。
  • モデルは成長する状態を保存しないため、ビデオの長さに関係なく推論コストは一定です。軽量なモーション・ビジュアル回転リファイナーとポーズ認識損失により、数千フレームにわたってドリフトを低く抑えます。
  • オプションのループクロージャ – ビデオが場所を再訪する場合、別のモジュール(DINOv2‑SALAD 記述子を使用)がループ候補を検出し、ポーズグラフ制約を追加し、軌跡を精緻化できます。

クイックスタート

# 1️⃣ クリーンな conda 環境を作成(Python ≥3.10)
conda create -n abot-recon python=3.11 -y
conda activate abot-recon

# 2️⃣ PyTorch 2.5.1 + CUDA 12.1 とパッケージ自体をインストール
pip install torch==2.5.1 torchvision==0.20.1 \
    --index-url https://download.pytorch.org/whl/cu121
pip install -e .

# 3️⃣ (オプション)FlashInfer と cuRoPE で高速化
pip install flashinfer-python
cd abot_recon/modeling/pi3/models/curope && pip install ninja && python setup.py build_ext --inplace

デモを実行(ループクロージャなし)

python demo.py \
  --image-dir examples/images \
  --output-dir outputs/demo \
  --attention-backend auto \
  --no-loop-closure

このコマンドは順序付けられた画像を読み取り、モデルを通してストリーミングし、以下を書き出します:

  • camera_poses.npy(軌跡)
  • local_points.pt(フレームごとの点群)
  • confidence.pt(ポイントごとの信頼度スコア)
  • オプションのグローバル点群(world_points.pt)--save-world-points を使用した場合。

Python API の使用

from pathlib import Path
from abot_recon import ABotRecon

imgs = sorted(Path('examples/images').glob('*.jpg'))
model = ABotRecon.from_pretrained('acvlab/ABot-Recon', device='cuda')
result = model.infer(imgs)
print(result.camera_poses.shape)   # (N, 4, 4)

モデルは自動的に Hugging Face からチェックポイントをダウンロードします。オフラインで使用する場合は、ファイルを checkpoints/abot_recon.safetensors に配置します。


主な機能とその重要性

機能 提供されるもの
固定 12 フレーム KV キャッシュ 時間単位のストリームでも、メモリと計算が一定。
ストリーミング専用推論 別の SLAM バックエンドは不要。単一 GPU でリアルタイム実行可能(H100 で 504×280 画像の場合約 24 FPS)。
オプションのループクロージャモジュール コアのストリーミングモデルを変更せずに、再訪シーンでの精度を向上。
FlashInfer と cuRoPE による高速化 アテンションカーネルと回転位置エンコーディングで最大約 2 倍の高速化。
Hugging Face / ModelScope の事前学習チェックポイント ワンクリックダウンロード、提供 API とデモと互換。
可視化スクリプト PLY 点群と鳥瞰軌跡画像をエクスポート。
トレーニングレシピ(ブランチ train) 18 のデータセットでのファインチューニング用の既成設定(執筆時点では未リリース)。

報告されたパフォーマンス(論文より)

ベンチマーク メトリック 結果 設定
Oxford Spires(カメラポーズ) ATE 4.35 m ストリーミングのみ、ループクロージャなし
Oxford Spires(高密度再構築) CD 1.37 m F1 = 91.81 %(τ = 4 m)
KITTI‑02(スループット) FPS 24.45 504×280、NVIDIA H100、ストレージ除外

著者らはまた、KITTI、VBR、7Scenes、TUM‑Dynamic で評価し、競争力のある精度を維持しながら、フレームごとのフットプリントが小さい(約 6.7 GiB GPU メモリ)ことを示しています。


誰がこれを使うべきか?

  • ロボティクス / 自動運転チーム:単一 GPU またはエッジアクセラレータ(例:AX650N NPU ポート)で実行できる軽量なストリーミング 3‑D マッパーが必要。
  • AR/VR 開発者:ビデオ履歴全体を保存せずにシーンをリアルタイムで再構築したい。
  • 研究者:長い地平線の知覚を探求。リポジトリは推論コードと(train ブランチで)ファインチューニングパイプラインを提供。

詳細情報


ライセンス

  • コード: Apache‑2.0
  • モデルウェイト: 別の MODEL_LICENSE.md(リポジトリ参照)。

結論

ABot‑Recon は、長い地平線のストリーミング 3‑D 再構築のための真の研究グレードのシステムであり、成長する内部メモリを意図的に回避します。リアルタイムパフォーマンスを提供し、クリーンな Python API を備え、精度向上のためのオプションのループクロージャを含みます。リポジトリは積極的にメンテナンスされており(2026 年 10 月までのニュース更新)、推論とトレーニングの両方のリソースを提供しているため、長いビデオストリームで継続的に実行する必要がある知覚パイプラインを構築する人にとって堅実な出発点です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch