0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LingBot-Mapでスマホ動画から姿勢推定してみる

0
Last updated at Posted at 2026-05-08

はじめに

最近発表されたLingBot-Mapを、COLMAPの代わりにスマホ2D動画からのカメラ姿勢推定に使ってみました。

画像から3D再構成する手法の比較ツイートをたまたま見かけましたが、LingBot-MapはこのVGGTという手法の系譜にあたるそうです。COLMAPだけでなく色々な手法があるんですね。

LingBot-Mapの特徴

※AIに聞いているので間違っているかもしれません。

ストリーミング処理

COLMAPなどの従来のSfMでやっていたカメラ姿勢推定と深度推定を、ストリーミング動画から処理できます。

ここでいうストリーミングとは、未来フレームを使わず現在と過去だけで、フレーム到着順に処理できるということです。COLMAPでは後から全体を見直すBundle Adjustment(BA)を実行していましたが、それが不要になります。リアルタイムのスピードというわけではありませんが、逐次処理できるのが特徴です。

SLAMなどの他手法との比較は以下のようになっています。

image.png

破綻の少なさと姿勢推定の精度

長い動画でも破綻しづらく、姿勢推定の精度も高いとされています。

image.png

ストリーミング処理は今の私の用途的には重要ではありませんが、長い入力で破綻しづらく姿勢推定の精度が高い点は気になります。以下のようなケースでCOLMAPより破綻しづらいようです。

スクリーンショット 2026-05-07 095614.png

image.png

環境構築

GitHubで公開されているので、ローカルで環境構築できます。

私の環境は以下です。

  • OS:Windows
  • GPU:NVIDIA GeForce RTX 3080(VRAM 10GB)

実行方法

連番画像から生成する場合はこのように実行します。

python demo.py --use_sdpa --model_path checkpoints\lingbot-map-long.pt --image_folder input\images --mask_sky

GUIで生成結果を表示できるモードもありました(COLMAPのように生成中の様子が表示されるわけではなく、結果のみ表示されます)。

image.png

GUIの「Playing」ボタンを押すと再生が停止します。

スクリーンショット 2026-05-07 112754.png

自分の動画で試してみた

スクリーンショット 2026-05-07 155430.png

以前COLMAPで生成したときは3つのモデルに分かれてしまったデータでも、ちゃんと1つにつながって生成できました!

Animation (23)mask.gif

こちらのうまくいった別の電車のデータも、

Animation (24)mask.gif

COLMAPだとこのように2つに位置が分裂して、なおかつ電車内部に入った段階で途切れてしまっていました。

スクリーンショット 2026-05-13 153700.png

3DGS始めたての頃に撮影したので、対象物に近づきすぎていてCOLMAPで失敗するのは仕方ないと思っていましたが、こうして時を超えて正しく位置推定してくれると感動しますね。

ちなみにGLBで書き出すこともできました。

スクリーンショット 2026-05-13 155607.png

動画ファイルからの直接入力

動画ファイルを入力として、自動で切り出しから処理してくれます。

python demo.py --use_sdpa ^
  --video_path input\movie.mp4 ^
  --fps 1 ^
  --model_path checkpoints\lingbot-map-long.pt ^
  --mask_sky

ただし、fpsの指定がうまく機能せずかなり多くの画像が生成されてしまったので、自分でffmpegで切り出した方が良いかもしれません。

FlashInferを使っていない私の環境では、375枚の処理に43分かかりました。

スクリーンショット 2026-05-07 155719.png

GPUもかなり使うので、裏でLichtFeldStudioの起動などは私のPCではできません。

スクリーンショット 2026-05-08 110155.png

オフラインレンダリングパイプライン(失敗)

最近、長い動画向けにオフラインレンダリングパイプラインが追加されていました。

image.png

25000フレームというのはかなり多いですね。COLMAPだと13分の動画でも0.5秒ごとに切り出すので、そこまで枚数を使いませんが、LingBot-Mapでは多めにフレームを使うようです。

image.png

オフラインレンダリングパイプラインはWindows環境でうまく構築できませんでした。そういえばLingBot-Mapは特に前提環境の明記がないですね。

COLMAP形式で書き出して3DGS生成(失敗)

書き出しは現状npz形式での出力しかなさそうだったので、3DGSを作るためにCOLMAP形式で書き出せるようdemo.pyを改変しました。

スクリーンショット 2026-05-07 160658.png

書き出したデータをLichtFeldStudioで読み込むとこのようになりました。

スクリーンショット 2026-05-07 105043.png

3DGSの生成結果

生成してみましたが、あまりきれいではありませんでした。

スクリーンショット 2026-05-07 111248.png

スクリーンショット 2026-05-07 163911.png

スクリーンショット 2026-05-08 135932.png

そもそも点群データがよく見たらきれいではないですね。

スクリーンショット 2026-05-13 154758.png

最後に

COLMAPソフトではうまくアライメントできなかったデータでもLineBot-Mapではアライメントが成功しました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?