COLMAP

Schönberger 2016 · 논문

한 줄 요약 — 사실상의 표준이 된 오픈소스 점진적(incremental) Structure-from-Motion 및 Multi-View Stereo 파이프라인(“Structure-from-Motion Revisited”, CVPR 2016)으로, 3D 비전 전반에서 오프라인 재구성 및 실측 포즈 생성의 주력 도구로 사용된다.

문제

점진적 SfM — 이미지를 한 번에 하나씩 등록하면서, 그때그때 구조를 삼각측량하고 번들 조정하는 방식 — 은 2016년 당시 순서 없는 사진 컬렉션에 대한 우세한 전략이었지만, “강건성, 정확도, 완전성, 그리고 확장성은 진정으로 범용적인 파이프라인을 구축하기 위한 핵심 과제로 남아 있다”. 기존 시스템(Bundler, VisualSFM)은 등록 가능한 이미지 중 상당 부분을 등록하지 못하거나, 잘못된 등록과 드리프트로 인해 깨진 모델을 만들어내는 경우가 많았다. Schönberger와 Frahm은 점진적 파이프라인의 각 단계를 재검토하고 이를 견고하게 만들어, 그 결과물을 COLMAP으로 배포했다.

방법 및 아키텍처

이 파이프라인은 두 단계로 구성된다: 대응점 탐색(특징 추출, 매칭, *장면 그래프(scene graph)*를 생성하는 기하학적 검증)과 점진적 재구성(초기화, PnP를 통한 이미지 등록, 삼각측량, 번들 조정, 이상값 필터링). 이 논문의 기여는 각 단계를 다음과 같이 견고하게 만든다:

cosα=taXabtaXab2tbXabtbXab2\cos\alpha=\frac{t_{a}-X_{ab}}{\left\|t_{a}-X_{ab}\right\|_{2}}\cdot\frac{t_{b}-X_{ab}}{\left\|t_{b}-X_{ab}\right\|_{2}}

및 양의 깊이(카이랄리티), 임계값 tt 이하의 재투영 오차가 있을 때만 — 이를 받아들인다. 남은 측정값들에 대한 재귀는, 하나의 트랙으로 잘못 병합된 여러 독립적인 점들을 복원해낸다.

E=jρj(π(Pc,Xk)xj22)E=\sum_{j}\rho_{j}\left(\left\|\pi\left(P_{c},X_{k}\right)-x_{j}\right\|_{2}^{2}\right)

를 포즈 PcSE(3)P_c \in \mathrm{SE}(3)와 점 XkR3X_k \in \mathbb{R}^3에 대해 최소화한다(지역 BA에서는 Cauchy 손실 ρj\rho_j; 희소 직접 솔버 또는 PCG를 사용하는 Ceres). 지역 BA는 각 등록 이후 실행되며, 전역 BA는 모델이 일정 비율만큼 성장했을 때만 실행된다. COLMAP은 VisualSFM의 BA 이전(pre-BA) 재삼각측량 위에 BA 이후(post-BA) 재삼각측량을 추가하며, 필터링된 관측치가 줄어들 때까지 BA → 재삼각측량 → 필터링을 반복하여 드리프트에 대응한다.

동반 PatchMatch 기반 MVS 단계(“Pixelwise View Selection for Unstructured Multi-View Stereo”, ECCV 2016)가 출력물을 조밀화하며, 전체 시스템은 GUI, CLI, pycolmap 바인딩을 갖춘 유지보수되는 C++/CUDA 코드베이스로 배포된다.

실험 결과

Bundler, VisualSFM, Theia, DISCO를 대상으로, 총 144,953장의 순서 없는 인터넷 사진으로 이루어진 17개 데이터셋에서 평가되었다:

SLAM에서의 의미

COLMAP은 SLAM 시스템과 학습 기반 재구성 방법 모두를 비교하는 기준점이며, 이들을 학습하고 평가하는 데 사용되는 카메라 포즈를 생성하는 표준 도구이다 — 대부분의 NeRF 및 3D Gaussian Splatting 파이프라인은 COLMAP 포즈에서 시작한다. 그 점진적 설계를 이해하면 SLAM이 무엇을 다르게 하는지(순차적 입력, 실시간 예산, 루프 클로저)가 명확해지며, 이미지당 비용 증가는 정확히 전역 SfM(GLOMAP), GPU 병렬(InstantSfM), 피드포워드(DUSt3R, VGGT) 계승자들이 겨냐는 병목이다.

관련 문서