DPVO

Teed 2023 · Paper

One-line summary — A patch-based, lightweight variant of DROID-SLAM showing that sparse patch tracking plus differentiable bundle adjustment matches or beats dense flow at a fraction of the memory and compute.

Problem

Deep VO built on dense optical flow (DROID-SLAM) raised accuracy dramatically, but “using dense flow incurs a large computational cost, making these previous methods impractical for many use cases”: DROID’s VO frontend needs 8.7 GB of GPU memory and its frame rate collapses during fast motion. The field assumed the cost was necessary — that dense flow “provides additional redundancy against incorrect matches.” Deep Patch Visual Odometry (DPVO) set out to test, and ultimately disprove, that assumption.

Method & architecture

Patch representation. The scene is a set of poses TSE(3)N\mathbf{T} \in \mathbb{SE}(3)^N and square p×pp \times p image patches, each stored as a 4×p24 \times p^2 homogeneous array with pixel coordinates (x,y)(\mathbf{x}, \mathbf{y}) and a single inverse depth d\mathbf{d} shared by the patch (a fronto-parallel plane, as in DSO). A patch kk from frame ii reprojects into frame jj as

PkjKTjTi1K1Pk\mathbf{P}'_{kj} \sim \mathbf{K} \mathbf{T}_j \mathbf{T}_i^{-1} \mathbf{K}^{-1} \mathbf{P}_k

with K\mathbf{K} the calibration matrix. A bipartite patch graph links each patch to every frame within distance rr of its source frame; patch trajectories are the sets of these reprojections, and the graph grows/shrinks as frames arrive.

Features and patches. Twin residual networks give matching and context features at 1/4 resolution (2-level pyramid). Patches are cropped at random pixel locations — 96 per frame (Default) or 48 (Fast) — which ablations show works better than SIFT, ORB, SuperPoint, or gradient-based selection.

Recurrent update operator. Operating on the patch graph with a hidden state per edge, each iteration runs: (1) correlation — for each pixel of the reprojected patch, inner products against a 7×77\times 7 grid of frame features, Cuvαβ=guv, f(Pkj(u,v)+Δαβ)\mathbf{C}_{uv\alpha\beta} = \langle \mathbf{g}_{uv},\ \mathbf{f}(\mathbf{P}'_{kj}(u,v) + \Delta_{\alpha\beta}) \rangle; (2) 1D temporal convolution along each patch trajectory; (3) softmax aggregation — message passing among edges sharing a patch or a frame, replacing the spatial convolutions dense methods get for free; (4) a transition block (gated residual units + LayerNorm); (5) a factor head predicting a 2D trajectory revision δkj\delta_{kj} and confidence Σkj(0,1)2\Sigma_{kj} \in (0,1)^2 per edge.

Differentiable bundle adjustment. Poses and patch inverse depths are updated by two Gauss-Newton iterations (Schur complement, gradients backpropagated through) on

(k,j)Eω^ij(T,Pk)[P^kj+δkj]Σkj2\sum_{(k,j)\in\mathcal{E}} \left\lVert \hat{\omega}_{ij}(\mathbf{T}, \mathbf{P}_k) - [\hat{\mathbf{P}}'_{kj} + \delta_{kj}] \right\rVert^2_{\Sigma_{kj}}

the Mahalanobis distance between induced and predicted patch-center reprojections — DROID-SLAM’s DBA on a radically smaller problem.

Training and system. Trained end-to-end on TartanAir (240k iterations, one RTX-3090, 3.5 days) with loss L=10Lpose+0.1Lflow\mathcal{L} = 10\mathcal{L}_{pose} + 0.1\mathcal{L}_{flow}, where Lpose\mathcal{L}_{pose} compares relative poses after Umeyama scale alignment. At inference: 8-frame initialization, constant-velocity pose prediction, one update + two BA iterations per frame over a 10-keyframe window (7 for Fast), flow-based keyframe removal. No loop closure or global BA — that gap is filled by DPV-SLAM.

Results

Median of 5 runs; two configs: Default (60 FPS, 4.9 GB) and Fast (120 FPS, 2.5 GB) on an RTX-3090, vs DROID-VO at 40 FPS / 8.7 GB.

Why it matters for SLAM

DPVO made differentiable-BA-based visual odometry practical for real-time robotics rather than an offline GPU-heavy affair, and its recurrent-update-on-sparse-patches design was adopted by followers such as MAC-VO and DPV-SLAM (and adapted to event cameras in DEVO). It is the standard modern baseline for learned monocular VO. It appears in both Level 3 (as a monocular system) and Level 5 (as a deep-learning method).