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;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目