DPV-SLAM
Lipson 2024 · 논문
한 줄 요약 — 효율적인 루프 클로저와 전역 보정 메커니즘을 추가하여 DPVO를 완전한 SLAM 시스템으로 확장(ECCV 2024)하면서, 단일 GPU에서 실시간 동작을 유지합니다.
문제
딥 네트워크 SLAM 백본은 뛰어난 정확도를 제공하지만, “이러한 접근 방식은 실행 비용이 크거나 제로샷 일반화가 잘 되지 않는 경우가 많습니다. 또한 프론트엔드와 백엔드가 GPU 자원 접근을 두고 경쟁하기 때문에 런타임이 크게 변동할 수 있습니다.” 구체적으로: 하나의 장치에서 두 개의 CUDA 워크로드는 순차적으로 실행되므로, 기존 딥 SLAM 시스템은 백엔드 반복이 실행되는 동안 ~30 Hz에서 <1 Hz로 주기적으로 떨어집니다 — 일관된 실시간 동작을 위해서는 두 개의 GPU가 필요합니다 — 그리고 흐름 기반 백엔드는 모든 프레임에 대해 밀집 특징 지도를 유지해야 하므로 메모리가 비디오 길이에 따라 증가합니다. DPVO는 효율성 문제를 해결했지만 오도메트리 전용이어서 드리프트가 한없이 커집니다. DPV-SLAM은 이 설계를 완성합니다: 루프 클로저를 갖춘 단안 딥 SLAM으로, 단일 GPU에서 높은 최소 프레임률과 5-7 GB의 메모리를 달성합니다.
방법 및 아키텍처
DPVO 베이스. 프론트엔드는 DPVO의 패치 그래프를 그대로 유지합니다: 패치 (픽셀 좌표 + 역깊이 )는 를 통해 프레임 로 재투영됩니다. 순환 연산자가 잔차 와 신뢰도 를 예측하고, 번들 조정은 재투영을 “이상적인” 목표값 에 맞춥니다.
근접 루프 클로저 (중기). 핵심 관찰: 각 방향성 엣지에 대해, 상관 연산자는 목적지 프레임의 밀집 특징만 필요로 하는 반면, BA 팩터는 엣지 방향과 무관하게 양쪽 포즈 모두를 제약합니다 — 따라서 엣지를 임의로 뒤집어서 어느 프레임이 메모리 비용을 부담할지 제어할 수 있습니다. 따라서 DPV-SLAM은 과거 프레임에 대해서는 패치 특징만 영구 저장하고(1000프레임당 ~0.6 GB), 카메라가 이전에 방문한 포즈 근처를 지날 때마다 오래된 패치에서 최근 프레임으로 향하는 단방향 엣지를 삽입합니다. 오도메트리와 루프 클로저 팩터는 하나의 공유 최적화에서 혼합되어, 희소하고 크기가 가변적인 패치 그래프를 위해 새로 만들어진 CUDA 블록-희소 번들 조정에 의해 실행됩니다. 모든 것이 단일 GPU 위의 단일 프로세스에서 실행됩니다. EuRoC에서 하나의 근접 전역 BA는 0.1-0.18초가 걸리는 반면 DROID-SLAM의 백엔드는 0.5-5초가 걸립니다.
고전적 루프 클로저 (장기, “DPV-SLAM++”). 스케일 드리프트를 보정하는 보완적인 CPU 백엔드: dBoW2 이미지 검색이 ORB 특징에 대해 수행되어 루프 후보를 탐지하고, 기성 검출기/매처와 구조 전용 BA가 검색된 각 쌍 주변의 3D 키포인트를 삼각측량하며, RANSAC + Umeyama를 통한 정렬로 드리프트 를 얻습니다. 그런 다음 키프레임 유사도 는 평활성 및 루프 잔차를 갖는 포즈 그래프에 대해 Levenberg-Marquardt로 최적화됩니다.
이후 포즈와 깊이가 재스케일됩니다 (). 검색과 PGO는 병렬 프로세스에서 실행되어 런타임을 거의 추가하지 않습니다.
실험 결과
5회 실행의 중앙값, RTX-3090에서 측정한 타이밍; 모든 곳에서 동일한 TartanAir 학습 가중치 사용(제로샷):
- EuRoC: 평균 ATE 0.024 m vs DROID-SLAM 0.022 — 5 GB(vs 20 GB)를 사용하며 50 FPS(vs 20 FPS)로 비슷한 정확도를 냅니다. 기본 DPVO 대비 오차가 4배 감소(0.105에서 0.024)하며 FPS는 60에서 50, 메모리는 4에서 5 GB로만 변합니다.
- KITTI: DPV-SLAM++는 39 FPS에서 평균 ATE 25.76 m를 기록하며 DROID-SLAM 54.19+(시퀀스 02와 09에서 실패)와 LDSO 22.42와 비교됩니다. 시퀀스 00/05/07에서는 8.30/5.74/1.52에 도달하는데, 여기서 근접 전용 딥 방법들은 스케일 드리프트를 겪습니다(DPVO는 시퀀스 00에서 113.21). 근접 전용 루프 클로저는 스케일 드리프트를 고칠 수 없습니다 — 이미지 검색이 야외 주행을 구해내는 요소입니다.
- TUM-RGBD (freiburg1): DPV-SLAM++ 평균 0.054 vs DROID-SLAM 0.038, GO-SLAM 0.035 — 4.0-6.0 GB(vs 7.2-8.5 GB)로 30 FPS에서 유사한 정확도 대역을 보입니다.
- TartanAir (경쟁 테스트 세트): 평균 ATE 0.16 vs DROID-SLAM 0.24, 27 FPS vs 8 FPS.
- 전체적으로: 실내와 실외를 포함한 네 벤치마크 전체에서 치명적인 실패가 0건이며, 실시간 대비 1배~4배의 처리량을 보입니다.
SLAM에서의 의미
DPV-SLAM은 DROID-SLAM → DPVO의 흐름을 완성합니다: 미분 가능 BA 기반 시각 오도메트리를 희소하고 빠르게 만든 다음, 마침내 루프 클로저를 갖추어 진정한 SLAM 시스템으로 만들었습니다 — 또한 학습된 프론트엔드가 하나의 예산 안에서 고전적 전역 기법(dBoW2 검색, 포즈 그래프 최적화)과 어떻게 결합될 수 있는지를 보여주는 깔끔한 사례 연구입니다. 엣지 뒤집기 메모리 트릭과 단일 GPU 프론트엔드/백엔드 공존은 딥 SLAM이 로봇에 실제로 탑재되지 못하게 막는 시스템 문제들을 다룹니다.