MonST3R

Zhang 2024 · Paper

One-line summary — Extends DUSt3R-style pointmap estimation to dynamic scenes by predicting a pointmap per timestep, enabling video depth, camera pose, and 4D reconstruction from videos with moving objects.

Problem

Estimating geometry from dynamic scenes has typically relied on multi-stage pipelines or global optimisations that decompose the problem into subtasks (depth, flow, motion segmentation), “leading to complex systems prone to errors”. DUSt3R’s pointmap representation unified static reconstruction into a single feed-forward prediction, but it assumes a rigid scene: fed a video with movers, it forces the moving content into one inconsistent static reconstruction (or, even with a ground-truth motion mask, fails to pose the cameras reliably). MonST3R (Motion DUSt3R) asks whether the pointmap idea can survive motion without adding an explicit motion model.

Method & architecture

Per-timestep pointmaps. For a pair of frames It,It\mathbf{I}^t, \mathbf{I}^{t'}, the network predicts pointmaps Xt;tt\mathbf{X}^{t;t\rightarrow t'} and Xt;ttRH×W×3\mathbf{X}^{t';t\rightarrow t'} \in \mathbb{R}^{H\times W\times 3} (with confidences C\mathbf{C}), both expressed in frame tt‘s camera — exactly DUSt3R’s setup, except each pointmap now corresponds to a single point in time, so moving content is represented where it is at each moment.

Fine-tuning for dynamics. The obstacle is data: dynamic, posed videos with depth. The authors assemble four datasets — PointOdyssey (50% sampling weight), TartanAir (25%), Waymo (20%), Spring (5%) — and fine-tune only the ViT-Base decoder and DPT heads (encoder frozen to preserve CroCo geometric features), with frame pairs sampled at temporal strides 1–9 (probability increasing with stride), field-of-view augmentation, and DUSt3R’s confidence-aware regression loss. 25 epochs × 20k pairs, one day on 2× RTX 6000.

Downstream tools. Intrinsics follow DUSt3R (solve focal per frame). Relative pose avoids dynamic-object-corrupted 2D-2D correspondences by using per-pixel 2D-3D correspondences within one view with PnP + RANSAC:

R,T=argminR,TiIxiπ(Kt(RXit;tt+T))2.\mathbf{R^{*}},\mathbf{T^{*}} = \arg\min_{\mathbf{R},\mathbf{T}} \sum_{i\in\mathcal{I}} \big\| \mathbf{x}_i - \pi\big(\mathbf{K}^{t'}(\mathbf{R}\,\mathbf{X}^{t';t\rightarrow t'}_i + \mathbf{T})\big) \big\|^2 .

A confident static mask compares the flow induced by camera motion alone against estimated optical flow: Stt=[α>FcamttFestttL1]\mathbf{S}^{t\rightarrow t'} = \big[\alpha > \|\mathbf{F}^{t\rightarrow t'}_{\mathrm{cam}} - \mathbf{F}^{t\rightarrow t'}_{\mathrm{est}}\|_{L1}\big].

Dynamic global point cloud + poses. Instead of DUSt3R’s all-pairs graph, pairs are formed inside a sliding temporal window (with strided sampling). Global pointmaps are re-parameterised by Pt=[RtTt]\mathbf{P}^t = [\mathbf{R}^t|\mathbf{T}^t], Kt\mathbf{K}^t, and per-frame depth Dt\mathbf{D}^t, then optimised as

X^=argminX,PW,σ  Lalign(X,σ,PW)+wsmoothLsmooth(X)+wflowLflow(X),\hat{\mathbf{X}} = \arg\min_{\mathbf{X},\mathbf{P}_W,\sigma}\; \mathcal{L}_{\mathrm{align}}(\mathbf{X},\sigma,\mathbf{P}_W) + w_{\mathrm{smooth}}\,\mathcal{L}_{\mathrm{smooth}}(\mathbf{X}) + w_{\mathrm{flow}}\,\mathcal{L}_{\mathrm{flow}}(\mathbf{X}),

where Lalign=eteCt;e(XtσePt;eXt;e)1\mathcal{L}_{\mathrm{align}} = \sum_{e}\sum_{t\in e}\|\mathbf{C}^{t;e}\cdot(\mathbf{X}^{t}-\sigma^{e}\mathbf{P}^{t;e}\mathbf{X}^{t;e})\|_1 is DUSt3R’s alignment term, Lsmooth=t(RtRt+1If+Tt+1Tt2)\mathcal{L}_{\mathrm{smooth}} = \sum_t \big(\|\mathbf{R}^{t\top}\mathbf{R}^{t+1}-\mathbf{I}\|_f + \|\mathbf{T}^{t+1}-\mathbf{T}^{t}\|_2\big) smooths the trajectory, and Lflow\mathcal{L}_{\mathrm{flow}} makes reprojected global geometry match estimated flow inside confident-static regions (wsmooth=wflow=0.01w_{\mathrm{smooth}} = w_{\mathrm{flow}} = 0.01; 300 Adam iterations). Returning D^\hat{\mathbf{D}} directly gives temporally consistent video depth. Inference: ~30 s for pairwise pointmaps of a 60-frame video (window 9, stride 2) plus ~1 min optimisation on one RTX 6000.

Results

Why it matters for SLAM

Dynamic environments are the standing failure mode of geometry-based SLAM, traditionally handled by masking movers out (DynaSLAM, DS-SLAM). MonST3R shows a different path: a foundation model that natively estimates geometry in the presence of motion, from which pose, video depth, and motion segmentation all fall out of one representation — and it shows that a modest, well-chosen fine-tune (mostly synthetic data, frozen encoder) suffices, without any explicit motion model. It is the key stepping stone from the static DUSt3R/MASt3R family toward 4D scene understanding, suggesting the static-world assumption can be dissolved at the representation level rather than patched at the pipeline level.