핵심 요약
DROID-SLAM은 update operator가 예측한 flow revision을 Dense Bundle Adjustment(DBA) layer로 넘겨, camera pose와 pixelwise inverse depth를 반복적으로 함께 업데이트하는 deep visual SLAM 시스템이다.
신경망이 SLAM을 대체한다기보다, learned correspondence update와 기하학적 Bundle Adjustment를 하나의 recurrent loop로 묶어 pose-depth 추정을 반복 개선하는 구조.
Frame-Graph Update
임의 개수의 frame graph에서 camera pose와 inverse depth를 동시에 반복 업데이트.
Dense Bundle Adjustment
flow revision과 confidence를 reprojection objective로 바꿔 Gauss-Newton pose-depth update 수행.
Full SLAM System
frontend local BA와 backend global BA/loop closure를 비동기 thread로 구성.
Cross-Sensor Generalization
monocular synthetic video로 학습한 단일 모델을 stereo/RGB-D 입력에도 재학습 없이 활용.
DROID-SLAM의 핵심은 딥러닝이 기하학을 없앤 것이 아니라, 기하학적 최적화가 recurrent network의 내부 연산이 되었다는 점이다. 그래서 같은 모델이 monocular로 학습되어도 stereo/RGB-D의 추가 제약을 테스트 시점의 optimization objective 안으로 자연스럽게 받을 수 있다.
update operator가 correspondence revision을 만들고, DBA가 이를 pose-depth 갱신으로 바꾸는 순서.
학습은 monocular에서 출발하지만, test-time objective에 stereo/RGB-D 관측 제약을 추가할 수 있다.
학습의 기본 입력
scale ambiguity가 있지만, recurrent update와 DBA를 통해 pose-depth를 공동 추정.
추가 기하 제약
재학습 없이 stereo correspondence를 활용해 depth/scale 제약을 강화.
깊이 관측 활용
depth sensor 입력을 테스트 시점의 관측 제약으로 받아 robustness와 accuracy를 개선.
논문 상세 정리
이하에서는 배경지식, notation, 보조 유도까지 포함해 논문의 세부 내용을 살펴본다.
Problem: 학습 기반 SLAM에 기하 최적화가 왜 필요한가
고전적인 visual SLAM은 bundle adjustment로 camera pose와 3D structure를 정교하게 맞출 수 있지만, feature track이 끊기거나 최적화가 발산하면 전체 trajectory가 무너질 수 있다. 반대로 초기 학습 기반 방법은 일부 어려운 영상에 강건했지만, 정확도와 loop closure, global refinement를 모두 갖춘 full SLAM으로 이어지지 못한 경우가 많았다.
DROID-SLAM은 학습된 correspondence와 명시적인 기하 최적화를 같은 반복 과정 안에 넣는다.
정확한 BA를 사용하지만 tracking failure와 drift에 취약.
일부 영상 조건에는 강하지만 full-SLAM 기능과 정확도가 부족.
network는 correspondence 수정값을 예측하고, DBA가 pose와 depth를 갱신.
DeepV2D는 pose와 depth 추정을 번갈아 수행하고, BA-Net과 DeepFactors는 저차원 또는 학습된 depth basis의 계수를 최적화한다. DROID-SLAM은 임의 길이의 frame graph에서 각 pixel의 inverse depth와 camera pose를 직접 함께 최적화한다. 따라서 network가 pose나 depth를 한 번에 출력하는 대신, 기하 최적화가 사용할 correspondence와 confidence를 반복적으로 보정한다.
Mechanism: correspondence update와 DBA가 어떻게 연결되는가
DROID-SLAM의 state는 frame별 camera pose와 dense inverse depth, 그리고 어떤 frame pair를 함께 최적화할지 정하는 frame graph로 구성된다. 같은 update operator를 여러 번 적용하면서 correspondence와 기하 상태를 교대로 개선한다.

각 frame \(I_t\)에는 camera pose \(G_t\in SE(3)\)와 inverse-depth map \(d_t\in\mathbb{R}_+^{H\times W}\)가 대응한다. Frame graph의 edge \((i,j)\in\mathcal{E}\)는 correlation lookup과 DBA가 계산될 frame pair를 지정하며, 장거리 edge를 추가하면 loop closure도 같은 최적화 안에서 처리할 수 있다.
correlation volume이 무엇을 비교하는지 먼저 정리한다.
| Notation | 의미 |
|---|---|
| \(g_\theta(I_i)\) | frame \(i\)의 1/8-resolution feature map |
| \(C^{ij}_{u_1v_1u_2v_2}\) | 두 frame의 pixel pair 사이 내적 유사도 |
Feature network가 만든 두 feature map의 모든 pixel pair에 대해 correlation을 계산하고, 4-level pyramid로 pooling한다. Update 단계에서는 현재 correspondence 주변만 lookup해 넓은 search range와 정밀한 local matching을 함께 사용한다.
network prediction과 geometry-induced correspondence를 구분하면 update loop가 선명해진다.
| Notation | 의미 |
|---|---|
| \(r_{ij}\), \(w_{ij}\) | update operator가 예측한 flow revision과 pixel confidence |
| \(p_{ij}\) | 현재 pose와 depth를 projection해 얻은 dense correspondence field |
| \(p_{ij}^*=p_{ij}+r_{ij}\) | DBA가 맞춰야 할 수정된 correspondence target |
ConvGRU는 context feature, correlation lookup, 현재 optical flow와 residual을 입력으로 받아 \(r_{ij}\)와 \(w_{ij}\)를 출력한다. Pose/depth를 직접 회귀하지 않고 DBA가 풀 수 있는 target과 신뢰도를 만든다는 점이 핵심이다.

DBA objective의 target, projection, confidence를 먼저 구분한다.
| Notation | 의미 |
|---|---|
| \(G',d'\) | 이번 iteration에서 최적화할 pose와 inverse depth |
| \(\Pi_c,\Pi_c^{-1}\) | camera model의 projection과 back-projection |
| \(\Sigma_{ij}=\operatorname{diag}(w_{ij})\) | pixel별 confidence로 만든 가중 행렬 |
DBA는 수정된 target \(p_{ij}^*\)와 현재 geometry로 계산한 correspondence 사이의 가중 reprojection error를 최소화한다. 논문은 Gauss-Newton linearization과 Schur complement를 이용해 pose와 dense depth increment를 효율적으로 계산하고, 이 연산을 미분 가능한 layer로 구현한다.
TartanAir에서 7-frame clip을 구성하고, gauge freedom과 monocular scale ambiguity를 제거하기 위해 첫 두 pose를 고정한다. 각 iteration의 pose와 flow prediction을 supervision하되, 뒤쪽 iteration에 더 큰 가중치를 주어 반복 refinement가 수렴하도록 학습한다.
Frontend는 새 frame의 feature를 추출하고 가까운 keyframe과 edge를 연결해 local BA를 수행한다. Backend는 keyframe history로 graph를 다시 구성해 global BA와 loop closure를 처리하며, non-keyframe pose는 motion-only BA로 보완한다. Stereo는 좌우 camera의 relative pose를 고정하고 cross-camera edge를 추가하며, RGB-D는 sensor depth와 추정 depth 사이의 penalty를 objective에 더한다.
Evidence: 정확도, 강건성, sensor 확장을 어떻게 검증했는가
모델은 synthetic TartanAir의 monocular video로 학습되었지만, 평가는 TartanAir, EuRoC, TUM-RGBD, ETH3D에서 monocular·stereo·RGB-D 조건으로 진행된다. 따라서 결과의 핵심은 평균 오차뿐 아니라 추적 실패가 줄었는지와 학습하지 않은 real dataset과 sensor 제약으로 일반화되는지다.
| Dataset | 입력 | 논문이 강조한 결과 |
|---|---|---|
| TartanAir | Monocular / Stereo | competition의 best prior method 대비 error 62% / 60% 감소 |
| EuRoC | Monocular / Stereo | monocular 평균 ATE 2.2 cm, 모든 sequence에서 tracking 성공 |
| TUM-RGBD | Monocular 비교 | 9개 sequence 모두 성공, 평균 ATE 0.038 m |
| ETH3D | RGB-D | test 32개 중 30개 tracking 성공, benchmark 1위 |
서로 다른 실내·실외 dataset에서도 dense map과 trajectory가 함께 유지되는지를 정성적으로 보여준다.

빠른 motion과 어려운 synthetic sequence에서 monocular/stereo 정확도와 failure 감소를 확인한다.


synthetic monocular 학습이 real MAV video로 일반화되는지 평가한다. DROID-SLAM은 모든 sequence를 추적하면서 평균 2.2 cm ATE를 기록한다.

TUM-RGBD에서는 motion blur와 회전이 있는 handheld video의 강건성을, ETH3D에서는 RGB-D depth constraint를 추가했을 때의 성능을 확인한다.


EuRoC는 평균 20 fps, TUM-RGBD는 30 fps로 처리하지만 빠른 motion의 TartanAir는 8 fps다. Frontend는 8 GB GPU에서도 동작할 수 있으나, backend가 전체 keyframe feature를 저장하므로 긴 sequence에서는 24 GB급 GPU가 필요하다. 논문이 직접 지적한 가장 큰 한계도 이 memory/resource cost다.
Usage / Limits: 언제 유용하고 무엇을 주의해야 하나
| 잘 맞는 상황 | 주의할 상황 | 이유 |
|---|---|---|
| tracking failure가 잦은 어려운 video | GPU memory가 제한된 장시간 sequence | recurrent DBA는 강건하지만 backend feature storage 비용이 큼 |
| monocular·stereo·RGB-D를 같은 구조로 비교 | 저전력 또는 엄격한 real-time 환경 | sensor constraint는 유연하지만 global BA 계산량이 남음 |
| 학습 기반 SLAM의 geometry-aware baseline | metric dense reconstruction 품질이 최우선인 작업 | 논문의 주 평가는 trajectory accuracy와 tracking success 중심 |
DROID-SLAM은 learned correspondence와 bundle adjustment를 대립시키지 않고, network가 만든 수정값을 명시적인 reprojection objective로 검증하고 갱신한다. 이 결합이 이후 학습 기반 dense SLAM에서 반복적으로 사용되는 기준 구조가 되었다.
느낀점
DBA를 network 내부의 미분 가능한 반복 연산으로 넣어 pose와 depth를 함께 갱신한 점이 가장 인상적이었다. Monocular 학습 모델이 stereo와 RGB-D에서도 개선되는 이유 역시, sensor별 정보를 별도 network가 아니라 test-time objective의 추가 제약으로 받을 수 있기 때문이라고 이해할 수 있었다.
Problem: why does learned SLAM still need geometric optimization?
Classical visual SLAM can accurately refine camera poses and 3D structure with bundle adjustment, but a broken feature track or a diverging optimization can collapse the trajectory. Early learning-based methods were more robust on some difficult videos, yet often lacked the accuracy, loop closure, and global refinement required for a complete SLAM system.
DROID-SLAM places learned correspondence and explicit geometric optimization in the same recurrent process.
Accurate BA, but vulnerable to tracking failure and drift.
Robust on some videos, but limited in accuracy and full-SLAM capability.
The network predicts correspondence revisions; DBA updates pose and depth.
DeepV2D alternates pose and depth estimation, while BA-Net and DeepFactors optimize coefficients of low-dimensional or learned depth bases. DROID-SLAM instead jointly optimizes camera poses and per-pixel inverse depth over a frame graph of arbitrary size. Rather than regressing a final pose or depth once, the network repeatedly corrects the correspondence and confidence consumed by geometric optimization.
Mechanism: how correspondence updates connect to DBA
DROID-SLAM maintains a camera pose and dense inverse depth for each frame, along with a frame graph that selects which frame pairs are optimized together. Reapplying the same update operator alternately improves correspondence and geometric state.

Each frame \(I_t\) has a camera pose \(G_t\in SE(3)\) and an inverse-depth map \(d_t\in\mathbb{R}_+^{H\times W}\). An edge \((i,j)\in\mathcal{E}\) specifies a frame pair for correlation lookup and DBA; adding long-range edges lets the same optimization support loop closure.
The symbols below identify what the correlation volume compares.
| Notation | Meaning |
|---|---|
| \(g_\theta(I_i)\) | 1/8-resolution feature map of frame \(i\) |
| \(C^{ij}_{u_1v_1u_2v_2}\) | inner-product similarity between a pixel pair from the two frames |
The feature network computes correlations for every pixel pair and pools them into a four-level pyramid. Each update looks up only the neighborhood around the current correspondence, combining a wide search range with precise local matching.
Separating the network prediction from geometry-induced correspondence makes the recurrent loop easier to follow.
| Notation | Meaning |
|---|---|
| \(r_{ij}\), \(w_{ij}\) | flow revision and pixel confidence predicted by the update operator |
| \(p_{ij}\) | dense correspondence field projected from the current pose and depth |
| \(p_{ij}^*=p_{ij}+r_{ij}\) | revised correspondence target for DBA |
The ConvGRU consumes context features, correlation lookup, current optical flow, and residuals, then outputs \(r_{ij}\) and \(w_{ij}\). It does not regress pose and depth directly; it produces a target and confidence that DBA can solve geometrically.

The target, projection, and confidence terms define the DBA objective.
| Notation | Meaning |
|---|---|
| \(G',d'\) | poses and inverse depth optimized in the current iteration |
| \(\Pi_c,\Pi_c^{-1}\) | projection and back-projection for camera model \(c\) |
| \(\Sigma_{ij}=\operatorname{diag}(w_{ij})\) | pixelwise confidence matrix |
DBA minimizes the confidence-weighted reprojection error between revised targets \(p_{ij}^*\) and correspondences induced by the current geometry. The paper uses Gauss-Newton linearization and a Schur complement to efficiently compute pose and dense-depth increments, and implements the procedure as a differentiable layer.
Training uses seven-frame clips from TartanAir. The first two poses are fixed to remove gauge freedom and monocular scale ambiguity. Pose and flow predictions are supervised at every iteration, with larger weights on later iterations so the refinement converges.
The frontend extracts features for new frames, connects nearby keyframes, and performs local BA. The backend rebuilds the graph from keyframe history for global BA and loop closure, while motion-only BA recovers non-keyframe poses. Stereo fixes the left-right relative pose and adds cross-camera edges; RGB-D adds a penalty between measured and estimated depth.
Evidence: how are accuracy, robustness, and sensor extension tested?
The model is trained on monocular videos from synthetic TartanAir, then evaluated with monocular, stereo, and RGB-D input on TartanAir, EuRoC, TUM-RGBD, and ETH3D. The central evidence is therefore not only mean error, but also whether tracking failures decrease and whether the model generalizes to real datasets and additional sensor constraints.
| Dataset | Input | Result emphasized by the paper |
|---|---|---|
| TartanAir | Monocular / Stereo | 62% / 60% lower error than the best prior competition method |
| EuRoC | Monocular / Stereo | 2.2 cm mean monocular ATE with zero sequence failures |
| TUM-RGBD | Monocular comparison | All nine sequences tracked; 0.038 m mean ATE |
| ETH3D | RGB-D | 30 of 32 test sequences tracked; first place on the benchmark |
Qualitative results show whether dense maps and trajectories remain coherent across different indoor and outdoor datasets.

These results test monocular and stereo accuracy and failure reduction under fast motion and difficult synthetic sequences.


This benchmark tests whether synthetic monocular training generalizes to real MAV video. DROID-SLAM tracks every sequence and reports a mean ATE of 2.2 cm.

TUM-RGBD tests robustness to handheld motion blur and rotation, while ETH3D tests the benefit of adding RGB-D depth constraints.


EuRoC runs at an average of 20 fps and TUM-RGBD at 30 fps, while fast-motion TartanAir runs at 8 fps. The frontend can operate with 8 GB of GPU memory, but long sequences require a 24 GB-class GPU because the backend stores features for all keyframes. The paper identifies this memory and resource cost as its largest limitation.
Usage / Limits: when is DROID-SLAM useful, and what should be considered?
| Good fit | Use with care | Reason |
|---|---|---|
| Difficult videos with frequent tracking failure | Long sequences under tight GPU memory | Recurrent DBA is robust, but backend feature storage is expensive |
| Comparing monocular, stereo, and RGB-D in one system | Low-power or strict real-time deployments | Sensor constraints are flexible, but global BA remains costly |
| A geometry-aware baseline for learned SLAM | Tasks centered on metric dense-reconstruction quality | The paper evaluates trajectory accuracy and tracking success most directly |
DROID-SLAM does not replace bundle adjustment with a neural network. It uses explicit reprojection geometry to verify and update learned correspondence corrections. This combination became a recurring baseline structure in later learning-based dense SLAM systems.
Takeaway
The most striking design choice is to place DBA inside the network as a differentiable recurrent operation that jointly updates pose and depth. Its transfer from monocular training to stereo and RGB-D is also easier to understand once the extra sensor information is viewed as a test-time constraint in the optimization objective rather than as input to a separate network.
Comments