PTAM

Klein & Murray 2007 · 논문

한 줄 요약 — SLAM을 병렬 추적 및 매핑 스레드로 분리하는 패러다임을 도입하여, 실시간 키프레임 기반 번들 조정을 처음으로 가능하게 했습니다.

문제

MonoSLAM의 EKF 방식은 작은 지도 이상으로 확장될 수 없었습니다: 매 프레임마다 모든 랜드마크에 대한 밀집 공분산을 갱신하므로 비용이 지도 크기에 따라 빠르게 증가하고, 반복적인 선형화로 인해 정확도가 저하됩니다. 번들 조정(BA)은 필터링보다 훨씬 정확한 결과를 내지만, 2007년 당시에는 실시간 동작에 너무 느리다고 여겨졌습니다. Klein & Murray(ISMAR 2007, Oxford)는 핸드헬드 카메라를 추적하는 것과 지도를 구축하는 것이 분리 가능한 문제라고 주장했습니다: 이 둘을 두 개의 스레드로 분리하면 BA는 백그라운드에서 실행되는 동안 추적은 프레임 속도로 실행될 수 있습니다.

방법 및 아키텍처

추적 스레드(매 프레임). 4단계 이미지 피라미드가 구축되고 각 레벨에서 FAST 코너가 검출됩니다. 카메라 포즈는 4×44\times 4 행렬 ECWE_{CW}SE(3)\mathrm{SE}(3)에 존재하며, 6차원 벡터 μ\mu를 이용한 지수 사상을 통해 좌측 곱으로 갱신됩니다:

ECW=MECW=exp(μ)ECW.E_{CW}' = M\,E_{CW} = \exp(\mu)\,E_{CW}.

지도점은 보정된 FOV-왜곡 카메라 모델을 통해 투영됩니다; 보이는 각 점의 8×88\times 8 소스 패치는 행렬 AA(소스 키프레임의 단위 픽셀 변위를 패치 평면에 역투영하여 얻음)로 어파인 변형(affine warp)되며, det(A)/4l\det(A)/4^l이 1에 가장 가까운 값을 탐색할 피라미드 레벨 ll로 선택합니다. 매칭은 원형 게이트 내부의 FAST 코너 위치에서 zero-mean SSD를 사용합니다 — 디스크립터는 전혀 사용하지 않습니다. 발견된 패치 집합 SS(u^j v^j)(\hat{u}_j\ \hat{v}_j)^\top과 노이즈 σj2=22l\sigma_j^2 = 2^{2l}가 주어지면, 포즈 갱신은 재가중 최소제곱(reweighted least squares)의 10회 반복으로 강건한 재투영 목적함수를 최소화합니다:

μ=argminμjSObj(ejσj, σT),ej=(u^jv^j)CamProj(exp(μ)ECWpj),\mu' = \underset{\mu}{\operatorname{argmin}} \sum_{j \in S} \mathrm{Obj}\left( \frac{|\mathbf{e}_j|}{\sigma_j},\ \sigma_T \right), \qquad \mathbf{e}_j = \begin{pmatrix} \hat{u}_j \\ \hat{v}_j \end{pmatrix} - \mathrm{CamProj}\big(\exp(\mu)\,E_{CW}\,\mathbf{p}_j\big),

여기서 Obj(,σT)\mathrm{Obj}(\cdot, \sigma_T)는 중앙값 기반 스케일 추정치 σT\sigma_T를 갖는 Tukey biweight입니다. 추적은 2단계의 거친-정밀(coarse-to-fine) 방식입니다: 먼저 큰 탐색 반경으로 50개의 거친 레벨 포인트를, 그다음 좁은 반경으로 최대 1000개의 포인트를 처리합니다; 감쇠하는 속도 운동 모델이 사전 포즈를 예측하며, 추적 품질이 모니터링되어 품질이 나쁜 프레임은 결코 지도에 도달하지 않습니다(완전한 실패에는 재지역화기(relocalizer)가 사용됩니다).

매핑 스레드(비동기). 지도는 사용자 지원 양뷰 스테레오로 부트스트랩됩니다: 키 입력으로 지정된 두 개의 뷰 사이에서 1000개의 패치가 추적되고, 5점 알고리즘 + RANSAC으로부터 본질 행렬을 구하고, 삼각측량한 다음, 10 cm 기저선을 가정하여 스케일을 고정하고, (RANSAC으로 찾은) 주요 평면을 z=0z=0에 정렬합니다. 키프레임은 추적이 양호하고, 최소 20프레임이 지났으며, 카메라가 기존 키프레임으로부터 (깊이에 따라 스케일링된) 최소 거리를 초과할 때만 추가됩니다; 새로운 포인트는 가장 가까운 키프레임에 대한 에피폴라 탐색으로부터 얻어집니다. 그 후 스레드는 키프레임 포즈와 포인트에 대해 BA를 실행합니다:

{μ2..μN},{p1..pM}=argmin{μ},{p}i=1NjSiObj(ejiσji, σT)\{\mu_2 .. \mu_N\}, \{\mathbf{p}'_1 .. \mathbf{p}'_M\} = \underset{\{\mu\},\{\mathbf{p}\}}{\operatorname{argmin}} \sum_{i=1}^{N} \sum_{j \in S_i} \mathrm{Obj}\left( \frac{|\mathbf{e}_{ji}|}{\sigma_{ji}},\ \sigma_T \right)

— 표준적인 희소 SfM 기법을 사용하는 Levenberg–Marquardt이며, 키프레임 수에 대해 O(N3)O(N^3)으로 확장됩니다. 전역 BA는 탐색 중에 정체되므로, 지역 BA는 XX = 가장 최근의 키프레임과 그 4개의 가장 가까운 이웃만 조정하며, ZZ = 그것들이 보는 모든 포인트에 대해, 해당 포인트를 관측하는 모든 키프레임 YY에 의해 제약됩니다(대략 O(NM)O(NM)). 유휴 상태일 때, 스레드는 데이터 연관을 개선합니다: 오래된 키프레임에서 새로운 특징점을 측정하고, Tukey로 이상값 표시가 된 측정치를 삭제하기 전에 “두 번째 기회”를 부여합니다.

실험 결과

모두 데스크톱 Intel Core 2 Duo 2.66 GHz에서(실시간 핸드헬드 동작):

SLAM에서의 의미

PTAM은 오늘날 거의 모든 현대 SLAM 시스템이 여전히 따르는 프론트엔드/백엔드 분리를 확립했으며, 키프레임 번들 조정이 필터링보다 우수함을 경험적으로 시연했습니다 — 이는 이후 Strasdat et al.의 “Visual SLAM: Why Filter?”에서 공식화된 주장입니다. 키프레임, 이웃에 대한 지역 BA, 백그라운드 전역 정제, 추적 품질 게이팅: ORB-SLAM은 본질적으로 이 아키텍처를 자동 초기화, 루프 클로저, 대규모 지도 관리로 완성한 것입니다.

관련 문서