cvg/GeoCalib

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

GeoCalib – 단일 이미지 카메라 캘리브레이션

기능
GeoCalib는 단 하나의 RGB 이미지에서 카메라의 내부 파라미터(초점 거리, 선택적 렌즈 왜곡) 및 중력 방향(즉, 월드 업 벡터)을 추정합니다. 초기 추정값을 예측하는 딥러닝 백본과 투영 제약 조건을 충족하도록 파라미터를 정제하는 기하 최적화 단계를 결합합니다.

중요성
정확한 내부 파라미터와 알려진 중력 방향은 3D 재구성, AR/VR, 로보틱스, 자율 주행과 같은 많은 다운스트림 작업에 필수적입니다. 전통적으로 캘리브레이션 패턴이나 여러 이미지가 필요했지만, GeoCalib는 그 요구 사항을 제거하여 단일 프레임만 촬영하는 핸드헬드 기기, 드론 또는 로봇에서 즉석 캘리브레이션을 가능하게 합니다.

주요 구성 요소

  • geocalib Python 패키지 – 경량 추론 라이브러리(Python ≥ 3.9, CUDA 선택 사항). GeoCalib 클래스와 load_image 및 calibrate 메서드를 제공합니다.
  • 카메라 모델 – 다음 4가지 모델을 지원합니다:
    1. pinhole(초점 거리만)
    2. simple_radial(왜곡 계수 1개 k1)
    3. radial(계수 2개 k1, k2)
    4. 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에서 직접 가져온 것입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트