cvg/GeoCalib
GeoCalib: Learning Single-image Calibration with Geometric Optimization (ECCV 2024)
GeoCalib – 1枚の画像からのカメラキャリブレーション
何ができるか – GeoCalibは1枚のRGB画像を受け取り、カメラの内部パラメータ(焦点距離、オプションの歪み)とシーン内の重力方向(つまり上方向ベクトル)を予測します。深層ニューラルネットワークによる幾何的特徴の抽出と、軽量な幾何最適化ステップを組み合わせることで、従来の学習のみの手法よりも高い精度を実現しています。
主な機能
- 複数の古典的なカメラモデルをサポート:
pinhole、simple_radial、radial、およびsimple_divisional(魚眼)。 - 知られている焦点距離や重力方向といった部分的な事前知識を用いることが可能。
- 同じカメラで撮影された複数の画像のバッチ処理に対応し、共通の重力方向を持つ複数の剛体固定カメラのセット(カメラリグ)も処理可能。
- 依存関係が少なく(Python ≥ 3.9、PyTorch)、推論専用の小さなPythonパッケージ(
geocalib)を提供。 - Gradioウェブデモ、Colabノートブック、リアルタイムのウェブカメラデモを同梱。
インストールと即時利用
# インストール用パッケージをクローンしてインストール
git clone https://github.com/cvg/GeoCalib.git && cd GeoCalib
python -m pip install -e . # またはリポジトリURLから直接インストール
import torch
from geocalib import GeoCalib
model = GeoCalib().to('cuda' if torch.cuda.is_available() else 'cpu')
img = model.load_image('my_picture.jpg').to(model.device)
result = model.calibrate(img)
print('camera intrinsics →', result['camera'])
print('gravity direction →', result['gravity'])
パッケージはtorch.hub経由でも利用可能:
model = torch.hub.load('cvg/GeoCalib', 'GeoCalib', trust_repo=True)
デモとインタラクティブ利用
- Colabノートブック – ブラウザ上でパイプライン全体を実行可能。
- Gradioデモ – https://veichta-geocalib.hf.space にホストされており、画像をアップロードして推定された水平線、上方向ベクトル、およびオプションの可視化(グリッド、仮想ボックスなど)を確認可能。
- ウェブカメラデモ –
python -m geocalib.interactive_demo --camera_id 0でライブウィンドウを開く;キーボード入力で可視化を切り替え、カメラモデルを切り替え可能。
学習と評価
- コアの学習コードは補助ライブラリ
siclibにあります。pip install -e siclibでインストール可能。 - 事前学習済みモデルは、OpenPano で訓練されています。OpenPanoは、約2.8kのHDRパノラマ(約37kの透視投影画像に変換)からなる新しくリリースされたデータセットです。
- 評価スクリプトは、LaMAR、MegaDepth、TartanAir、Stanford2D3Dなど複数のベンチマークに対応。
python -m siclib.eval.lamar2k --conf geocalib-pinhole --tag geocalibのようなコマンドでテストを実行し、結果をoutputs/results/に保存。 - READMEの結果表では、GeoCalibがすべてのリストアップされたデータセットでロール、ピッチ、視野角誤差のAUCスコアで最高を記録しており、DeepCalib、ParamNet、UVPを上回っています。
データセット – OpenPano
- HDRMAPS、PolyHaven、Laval室内HDRコレクションのHDRパノラマを統合。
- スクリプト(
siclib.datasets.utils.download_openpano)で公開パノラマをダウンロード;別のスクリプトでHDR画像のトーンマッピングをオプションで行い、学習用分割を作成。 - 処理後、約37kの訓練画像、およびそれぞれ約2kの検証用・テスト用画像が得られます。
なぜ重要か 1枚の画像から正確な内部パラメータと重力方向を推定することは、3D再構成、AR/VRの位置合わせ、ロボットナビゲーション、複数視点データなしでシーンの向きを推論する必要があるあらゆるアプリケーションにおいて有用です。GeoCalibは学習と古典的最適化の融合により、歪みに対応できる柔軟性と高い精度を両立しています。
上記のすべての情報はリポジトリのREADMEから直接取得;追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト