cvg/GeoCalib
GeoCalib: Learning Single-image Calibration with Geometric Optimization (ECCV 2024)
GeoCalib – 単一画像からのカメラ較正
機能
GeoCalibは、1枚のRGB画像のみから、カメラの内部パラメータ(焦点距離、オプションのレンズ歪み)と重力方向(ワールドアップベクトル)を推定します。 初期推定値を予測するディープラーニングバックボーンと、射影制約を満たすようにパラメータを精密化する幾何最適化ステップを組み合わせています。
重要性
正確な内部パラメータと既知の重力方向は、3次元再構成、AR/VR、ロボティクス、自律航法など、多くの下流タスクに不可欠です。 従来はキャリブレーションパターンや複数画像が必要でしたが、GeoCalibはその要件を不要にし、単一フレームしか撮影できないハンドヘルドデバイス、ドローン、ロボットでのオンザフライ較正を可能にします。
主要コンポーネント
geocalibPythonパッケージ – 軽量推論ライブラリ(Python ≥ 3.9、CUDA任意)。GeoCalibクラスと、load_imageメソッドおよびcalibrateメソッドを提供します。- カメラモデル – 以下の4つのモデルをサポート:
pinhole(焦点距離のみ)simple_radial(1つの歪み係数k1)radial(2つの係数k1、k2)simple_divisional(魚眼レンズ式の単一係数)
- 部分/複数画像サポート – 既知の内部パラメータや重力を事前情報として入力でき、同じ内部パラメータを共有するバッチを較正したり、剛体に取り付けられたカメラのリグを較正したりできます。
- トレーニングおよび評価フレームワーク –
siclibライブラリ上に構築。 新しいOpenPanoデータセット(≈ 2.8 kパノラマ → ~37 kの切り出しビュー)でのトレーニングや、複数のベンチマーク(LaMAR、MegaDepth、TartanAir、Stanford2D3D)での評価のためのスクリプトが含まれています。
試してみる方法
# パッケージのインストール(編集モード)
git clone https://github.com/cvg/GeoCalib.git && cd GeoCalib
pip install -e .
# 簡単な推論
python - <<'PY'
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)
out = model.calibrate(img)
print('camera intrinsics:', out['camera'])
print('gravity direction:', out['gravity'])
PY
実行可能なColabノートブックとGradioウェブデモもREADMEからリンクされています。
トレーニングデータ – OpenPano
- HDRMAPS、PolyHaven、およびLavalの室内HDRデータセットからのHDRパノラマを組み合わせています。
- トーンマッピングとオプションの歪みシミュレーションの後、パイプラインは~37 kのトレーニング用切り出しと、検証およびテスト用の分割を作成します。
- スクリプト(
siclib.datasets.create_dataset_from_pano)がダウンロード、トーンマッピング、データセット生成を処理します。
パフォーマンス(Area‑Under‑Curve、1°/5°/10°の誤差しきい値)は4つの公開ベンチマークで、GeoCalibはDeepCalib、ParamNet、UVPなどの従来手法を一貫して上回ります。特にロール角とピッチ角の推定で優れています。
典型的なユースケース
- ロボティクス / ドローン – キャリブレーションボードなしで新しいカメラを機上で較正できます。
- AR/VR – ハンドヘルドスマートフォンやヘッドマウントディスプレイの内部パラメータを迅速に取得できます。
- Structure‑from‑motionパイプライン – 単一ビューしか利用できない場合に、バンドル調整の優れた初期推定値を提供します。
次のステップ
camera_model引数を使用して、さまざまなカメラモデルを試します。- 既知の焦点距離や既知の重力などの事前情報を入力して、制約付きシナリオでのロバスト性を向上させます。
Cameraクラスを拡張して、カスタム歪みモデルを追加します。- 提供された評価スクリプトを使用して、独自のデータセットでベンチマークを行います。
上記の情報はすべて、リポジトリのREADMEから直接引用しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト