AI・機械学習
Lingbot-map: ストリーミングデータからのシーン再構築のための3D基盤モデル
Lingbot-map: A 3D foundation model for reconstructing scenes from streaming data (github.com)
要約
LingBot-Mapは、ストリーミングデータから3Dシーンを再構築するための新しいフィードフォワード型3D基盤モデルです。幾何学的コンテキストトランスフォーマーアーキテクチャを採用し、座標グラウンディング、密な幾何学的キュー、長距離ドリフト補正を単一のストリーミングフレームワークで統合します。高効率なストリーミング推論を可能にし、長大なシーケンスでも安定したパフォーマンスを発揮します。
全文翻訳
LingBot-Map: ストリーミング3D再構築のための幾何学的コンテキストトランスフォーマー
Robbyant Team
teaser.mp4
🗺️ LingBot-Mapをご紹介します!私たちは、ストリーミング3D再構築のためのフィードフォワード型3D基盤モデルを構築しました!🏗️🌍
LingBot-Mapは以下の点に注力しました:
幾何学的コンテキストトランスフォーマー: アンカーコンテキスト、ポーズ参照ウィンドウ、軌跡メモリを通じて、座標グラウンディング、密な幾何学的キュー、長距離ドリフト補正を単一のストリーミングフレームワーク内でアーキテクチャ的に統合します。
高効率ストリーミング推論: ページングされたKVキャッシュアテンションを備えたフィードフォワードアーキテクチャにより、10,000フレームを超える長大なシーケンスで、518×378解像度で約20 FPSの安定した推論を可能にします。
最先端の再構築: 既存のストリーミングアプローチと反復最適化ベースのアプローチの両方と比較して、多様なベンチマークで優れたパフォーマンスを発揮します。
📑 目次
クリックして展開
📰 ニュース
📋 TODO
⚙️ インストール
📦 モデルダウンロード
🚀 クイックスタート
🎬 インタラクティブデモ (demo.py)
例のシーンを試す
キーフレーム間隔でのストリーミング
ウィンドウ推論(長大なシーケンス、>3000フレーム用)
スカイマスキング
可視化オプション
パフォーマンスとメモリ
🎥 オフラインレンダリングパイプライン (demo_render/batch_demo.py)
📜 ライセンス
📖 引用
✨ 謝辞
📰 ニュース
2026-06-28 — SDPA KVキャッシュのバグを修正しました。SDPAバックエンドは、長大なシーケンスでより良いパフォーマンスを発揮するようになりました。最高のパフォーマンスを得るためには、引き続きFlashInferバックエンドを推奨します。
2026-05-25 — 📊 評価ベンチマークをリリースしました。KITTIとOxford Spiresの評価スクリプトをリリースしました。パイプラインについてはbenchmark/を参照し、Oxford Spiresデータを評価用に準備するにはpreprocess/oxford.pyを実行してください。
2026-04-29 — 📹 長尺ビデオデモをリリースしました。非常に長尺のビデオ例(約25,000フレーム、13分間の屋内ウォークスルー)をオフラインパイプラインでレンダリングしたものをリリースしました。コマンド、フラグの根拠、レンダリングされた出力についてはWorked Exampleを参照してください。
2026-04-27 — 🚀 LingBot-Mapを高速化しました。最新のmainブランチをプルし、お使いのハードウェアで確認するために python demo.py --compile ... または python gct_profile.py --backend flashinfer --dtype bf16 --compile を実行してください。
2026-04-24 — FlashInfer KVキャッシュのバグを修正しました。--keyframe_interval > 1 の場合に、キーフレームではないフレームがサイレントにキャッシュされていました。320フレーム以上で実行した場合、ポーズと再構築の品質が向上するはずです。
📋 TODO
✅ 評価ベンチマークのリリース
✅ Oxford Spiresデータセット
✅ KITTIデータセット
✅ VBRデータセット
✅ Droid-Wデータセット
✅ TUM-Dデータセット
✅ 7-scenesデータセット
✅ ETH3Dデータセット
✅ Tanks and Templesデータセット
✅ NRGBDデータセット
✅ デモスクリプトのリリース
✅ 屋内長尺ビデオデモ(注目の屋内ウォークスルー)
✅ 屋外長尺ビデオデモ
✅ LingBot-Worldデモ(作業例)
✅ 空撮長尺ビデオデモ
⚙️ インストール
1. conda環境を作成します
conda create -n lingbot-map python=3.10 -y
conda activate lingbot-map
2. PyTorch (CUDA 12.8) をインストールします
pip install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128
PyTorch 2.8.0 は推奨バージョンです。なぜなら、NVIDIA Kaolin(バッチレンダリングパイプラインで必要)は torch-2.8.0_cu128 用のプリビルドホイールを持っているからです。demo.pyのみが必要な場合は、より新しいPyTorchを使用できますが、その場合、バッチレンダラーはKaolinをソースからビルドする必要があります。他のCUDAバージョンについては、PyTorch Get Startedを参照してください。
3. lingbot-map をインストールします
pip install -e .
4. FlashInfer (推奨) をインストールします
FlashInfer は、効率的なストリーミング推論のためにページングされたKVキャッシュアテンションを提供します。これは純粋なPythonパッケージで、初回使用時にCUDAカーネルをJITコンパイルするため、単一のホイールがCUDA/PyTorchバージョン間で機能します。
pip install --index-url https://pypi.org/simple flashinfer-python
--index-url https://pypi.org/simple は、デフォルトのpipインデックスが内部ミラーでflashinfer-pythonを含んでいない場合にのみ必要です。
(オプション)初回使用を高速化するために、CUDA固有のJITキャッシュをさらにインストールできます。
pip install flashinfer-jit-cache -f https://flashinfer.ai/whl/cu128/flashinfer-jit-cache/
詳細はFlashInferのインストールを参照してください。
FlashInferがインストールされていない場合、モデルは --use_sdpa を介してSDPA(PyTorchネイティブアテンション)にフォールバックします。
5. 可視化依存関係(オプション)
pip install -e "'.[vis]'"
📦 モデルダウンロード
モデル名
Huggingfaceリポジトリ
ModelScopeリポジトリ
説明
lingbot-map-long
robbyant/lingbot-map
Robbyant/lingbot-map
長尺シーケンスと大規模シーンにより適しています。
lingbot-map
robbyant/lingbot-map
Robbyant/lingbot-map
バランスの取れたチェックポイント(論文、ベンチマーク、オフラインデモで使用)— 短尺および長尺シーケンス全体にわたるパフォーマンスのトレードオフ。
lingbot-map-stage1
robbyant/lingbot-map
Robbyant/lingbot-map
lingbot-mapのステージ1トレーニングチェックポイント — VGGTモデルにロードして双方向推論(c2w)が可能です。
🚧 近日公開:より長尺シーケンスをサポートする強力なモデルをトレーニング中です — ご期待ください。
🚀 クイックスタート
インストール後、1つのコマンドで最初のシーンを実行します。
python demo.py --model_path /path/to/lingbot-map-long.pt \
--image_folder example/courthouse --mask_sky
これは http://localhost:8080 でインタラクティブなviserビューアを起動します。完全なシーンとフラグのセットについては、インタラクティブデモを参照するか、長尺シーケンスのバッチレンダリングについてはオフラインレンダリングパイプラインにジャンプしてください。
🎬 インタラクティブデモ (demo.py)
demo.pyを実行すると、ブラウザベースのviserビューア(デフォルトは http://localhost:8080 )を介したインタラクティブな3D可視化が行われます。
例のシーンを試す
example/ に4つの例のシーンを提供しており、すぐに実行できます。
# 裁判所シーン
python demo.py --model_path /path/to/lingbot-map-long.pt \
--image_folder example/courthouse --mask_sky
output_pointcloud_side_by_side.mp4
# 大学シーン
python demo.py --model_path /path/to/lingbot-map-long.pt \
--image_folder example/university --mask_sky
output_pointcloud_side_by_side.mp4
# ループシーン(ループクロージャートラジェクトリ)
python demo.py --model_path /path/to/lingbot-map-long.pt \
--image_folder example/loop
output_pointcloud_side_by_side.mp4
# スカイマスキング付きのオックスフォードシーン(屋外、大規模シーン)
python demo.py --model_path /path/to/lingbot-map-long.pt \
--image_folder example/oxford --mask_sky
output_pointcloud_side_by_side.mp4
🎯 注目のシーン:屋内ウォークスルー(約25,000フレーム、13分間)
このシーケンスはインタラクティブなviserビューアには長すぎるため、このクリップはオフラインレンダリングパイプラインでレンダリングされました。完全なコマンドについては、そのセクションを参照してください。後日、さらに多くの例を提供する予定です。
キーフレーム間隔でのストリーミング
--keyframe_interval を使用すると、N番目のフレームのみをキーフレームとして保持することで、KVキャッシュメモリを削減できます。非キーフレームのフレームは予測を生成しますが、キャッシュには保存されません。これは、320フレームを超える長尺シーケンスに役立ちます(私たちは320ビューでビデオRoPEをトレーニングしているため、KVキャッシュが320ビュー以上を格納するとパフォーマンスが低下します。キーフレーム戦略を使用すると、より長尺のシーケンスでの推論が可能になります)。
データセット: Hugging Faceのrobbyant/lingbot-map-demoからデモシーケンスをダウンロードしてください。
以下のデータセットからのトラベルシーケンスでの実行例(スカイマスキングオン、4回のカメラ最適化イテレーション、2フレームごとのキーフレーム):
python demo.py \
--image_folder /path/to/lingbot-map-demo/travel/ \
--model_path /path/to/lingbot-map-long.pt \
--mask_sky \
--camera_num_iterations 4 \
--keyframe_interval 2
output_pointcloud_side_by_side.mp4
推論範囲に関する注意: 私たちの手法はデフォルトで状態リセットを実行しないため、最大推論範囲は、データセットでのトレーニング中に観測された最長の距離によって制限されます。それ以上の距離では、状態リセットが必要になります。ポーズの崩壊が見られる場合は、ウィンドウモード(--mode windowed)に切り替えてください。ほとんどの場合、--keyframe_interval を調整するだけで十分であり、ウィンドウ化されたパラメータの残りはデフォルトのままにできます。
ウィンドウ推論(長大なシーケンス、>3000フレーム用)
python demo.py --model_path /path/to/lingbot-map-long.pt \
--video_path video.mp4 --fps 10 \
--mode windowed --window_size 128 --overlap_keyframes 16 --keyframe_interval 2
スカイマスキング
スカイマスキングは、ONNXスカイセグメンテーションモデルを使用して、再構築された点群から空の点をフィルタリングし、屋外シーンの可視化品質を向上させます。