cvg/GeoCalib
GeoCalib: Learning Single-image Calibration with Geometric Optimization (ECCV 2024)
GeoCalib – 단일 이미지 카메라 캘리브레이션
기능
GeoCalib는 단 하나의 RGB 이미지에서 카메라의 내부 파라미터(초점 거리, 선택적 렌즈 왜곡) 및 중력 방향(즉, 월드 업 벡터)을 추정합니다. 초기 추정값을 예측하는 딥러닝 백본과 투영 제약 조건을 충족하도록 파라미터를 정제하는 기하 최적화 단계를 결합합니다.
중요성
정확한 내부 파라미터와 알려진 중력 방향은 3D 재구성, 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에서 직접 가져온 것입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트