cvg/GeoCalib

GeoCalib: Learning Single-image Calibration with Geometric Optimization (ECCV 2024)

GeoCalib – 單張影像相機校準

功能 – GeoCalib 接收單張 RGB 影像,並預測相機的內參(焦距,可選畸變)以及場景中的重力方向(即上向量)。它結合了提取幾何線索的深度神經網絡與輕量級幾何最佳化步驟,相比以往純學習方法獲得更高精度。

主要功能

  • 支援多種經典相機模型:pinholesimple_radialradialsimple_divisional(魚眼)。
  • 可使用部分先驗資訊(已知焦距或已知重力方向)。
  • 支援同一相機拍攝的多張影像批次處理,甚至支援多個剛性安裝的相機組成的相機陣列(共享共同的重力方向)。
  • 提供極小的僅推理 Python 套件(geocalib),依賴項目極少(Python ≥ 3.9,PyTorch)。
  • 配備 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)

示範與互動使用

訓練與評估

  • 核心訓練程式碼位於配套庫 siclib 中。透過 pip install -e siclib 安裝。
  • 預訓練模型在 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 個驗證與測試影像。

為何重要 從單張影像中準確估計內參與重力方向對許多下游任務極為有用:3D 重構、AR/VR 對齊、機器人導航,以及任何需要在無多視角資料的情況下推理場景方向的應用。GeoCalib 將學習與經典最佳化結合,兼具靈活性(可處理畸變)與高精度。


以上所有資訊均直接來自倉儲的 README;未推斷任何額外功能。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案