FILT3R: Latent State Adaptive Kalman Filter for Streaming 3D Reconstruction
Organizations: Kim Jaechul Graduate School of AI, KAIST, Seoul, South Korea
Abstract
Streaming 3D reconstruction maintains a persistent latent state that is updated online from incoming frames, enabling constant-memory inference. A key failure mode is the state update rule: aggressive overwrites forget useful history, while conservative updates fail to track new evidence, and both behaviors become unstable beyond the training horizon. To address this challenge, we propose FILT3R, a training-free latent filtering layer that casts recurrent state updates as stochastic state estimation in token space. FILT3R maintains a per-token variance and computes a Kalman-style gain that adaptively balances memory retention against new observations. Process noise -- governing how much the latent state is expected to change between frames -- is estimated online from EMA-normalized temporal drift of candidate tokens. Using extensive experiments, we demonstrate that FILT3R yields an interpretable, plug-in update rule that generalizes common overwrite and gating policies as special cases. Specifically, we show that gains shrink in stable regimes as uncertainty contracts with accumulated evidence, and rise when genuine scene change increases process uncertainty, improving long-horizon stability for depth, pose, and 3D reconstruction, compared to the existing methods.
Figures & tables
| Method | Length 300 | Length 500 | Length 1000 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Acc | Comp | NC | Acc | Comp | NC | Acc | Comp | NC | ||||||||||
| Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | |
| CUT3R | 0.134 | 0.090 | 0.076 | 0.041 | 0.544 | 0.565 | 0.183 | 0.133 | 0.093 | 0.036 | 0.530 | 0.544 | 0.233 | 0.170 | 0.101 | 0.017 | 0.511 | 0.515 |
| Point3R | 0.045 | 0.025 | 0.032 | 0.013 | 0.564 | 0.598 | 0.057 | 0.026 | 0.025 | 0.008 | 0.556 | 0.584 | OOM | |||||
| TTT3R | 0.040 | 0.025 | 0.024 | 0.005 | 0.566 | 0.602 | 0.066 | 0.038 | 0.032 | 0.006 | 0.551 | 0.576 | 0.145 | 0.092 | 0.051 | 0.010 | 0.525 | 0.536 |
| FILT3R (ours) | 0.020 | 0.009 | 0.022 | 0.004 | 0.568 | 0.603 | 0.024 | 0.011 | 0.023 | 0.004 | 0.559 | 0.589 | 0.054 | 0.028 | 0.028 | 0.005 | 0.535 | 0.550 |
| Method | TUM-400 | TUM-600 | TUM-800 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ATE | RPE-t | RPE-r | ATE | RPE-t | RPE-r | ATE | RPE-t | RPE-r | ||||
| CUT3R | 0.109 | 0.302 | 0.010 | 0.381 | 0.145 | 0.425 | 0.008 | 0.430 | 0.173 | 0.493 | 0.008 | 0.486 |
| TTT3R | 0.055 | 0.128 | 0.010 | 0.328 | 0.084 | 0.176 | 0.009 | 0.365 | 0.097 | 0.214 | 0.009 | 0.387 |
| FILT3R (ours) | 0.033 | 0.074 | 0.009 | 0.305 | 0.042 | 0.082 | 0.009 | 0.332 | 0.057 | 0.107 | 0.009 | 0.362 |
| Method | Bonn-300 | Bonn-400 | Bonn-500 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Abs Rel | log RMSE | Abs Rel | log RMSE | Abs Rel | log RMSE | ||||
| CUT3R | 0.107 | 88.7 | 0.162 | 0.107 | 89.6 | 0.161 | 0.101 | 90.6 | 0.156 |
| TTT3R | 0.108 | 90.1 | 0.163 | 0.104 | 91.2 | 0.158 | 0.100 | 92.1 | 0.154 |
| FILT3R (ours) | 0.093 | 93.8 | 0.152 | 0.090 | 94.1 | 0.149 | 0.089 | 94.4 | 0.148 |
| Variant | TUM-800 (pose) | Bonn-500 (metric depth) | |||||
|---|---|---|---|---|---|---|---|
| ATE | RPE-t | RPE-r | AbsRel | logRMSE | |||
| FILT3R (full) | 0.057 | 0.107 | 0.009 | 0.362 | 0.089 | 94.4 | 0.148 |
| Fixed- (fixed ) | 0.100 | 0.229 | 0.009 | 0.393 | 0.099 | 91.9 | 0.155 |
| No variance propagation (reset- ) | 0.149 | 0.489 | 0.009 | 0.446 | 0.099 | 91.1 | 0.154 |
| Fixed- EMA ( , tuned) | 0.049 | 0.078 | 0.010 | 0.658 | 0.093 | 93.5 | 0.152 |
| No EMA normalization for drift | 0.058 | 0.109 | 0.010 | 0.367 | 0.091 | 94.1 | 0.150 |
Appendix figures & tables25 assets
Supplementary material from the paper’s appendix.
Appendix
| Variant | TUM-800 (pose) | Bonn-500 (metric depth) | |||||
|---|---|---|---|---|---|---|---|
| ATE | RPE-t | RPE-r | AbsRel | logRMSE | |||
| FILT3R (full) | 0.057 | 0.107 | 0.009 | 0.362 | 0.089 | 94.4 | 0.148 |
| Fixed- (fixed ) | 0.100 | 0.229 | 0.009 | 0.393 | 0.099 | 91.9 | 0.155 |
| No variance propagation (reset- ) | 0.149 | 0.489 | 0.009 | 0.446 | 0.099 | 91.1 | 0.154 |
| Fixed- EMA ( , tuned) | 0.049 | 0.078 | 0.010 | 0.658 | 0.093 | 93.5 | 0.152 |
| No EMA normalization for drift | 0.058 | 0.109 | 0.010 | 0.367 | 0.091 | 94.1 | 0.150 |
| Method | TUM-400 | TUM-600 | TUM-800 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ATE | RPE-t | RPE-r | ATE | RPE-t | RPE-r | ATE | RPE-t | RPE-r | ||||
| CUT3R | 0.109 | 0.302 | 0.010 | 0.381 | 0.145 | 0.425 | 0.008 | 0.430 | 0.173 | 0.493 | 0.008 | 0.486 |
| Point3R | 0.119 | 0.179 | 0.028 | 0.640 | 0.133 | 0.205 | 0.026 | 0.912 | 0.157 | 0.241 | 0.024 | 1.127 |
| TTT3R | 0.055 | 0.128 | 0.010 | 0.328 | 0.084 | 0.176 | 0.009 | 0.365 | 0.097 | 0.214 | 0.009 | 0.387 |
| TTT3R+Reset | 0.047 | 0.140 | 0.008 | 0.308 | 0.059 | 0.181 | 0.007 | 0.331 | 0.077 | 0.221 | 0.007 | 0.338 |
| FILT3R (ours) | 0.033 | 0.074 | 0.009 | 0.305 | 0.042 | 0.082 | 0.009 | 0.332 | 0.057 | 0.107 | 0.009 | 0.362 |
| Method | Bonn-300 | Bonn-400 | Bonn-500 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Abs Rel | log RMSE | Abs Rel | log RMSE | Abs Rel | log RMSE | ||||
| CUT3R | 0.090 | 93.8 | 0.150 | 0.091 | 93.5 | 0.150 | 0.086 | 94.0 | 0.145 |
| Point3R | 0.083 | 94.7 | 0.149 | 0.083 | 94.6 | 0.147 | 0.081 | 94.8 | 0.145 |
| TTT3R | 0.079 | 95.0 | 0.142 | 0.078 | 95.1 | 0.139 | 0.075 | 95.3 | 0.136 |
| TTT3R+Reset | 0.085 | 94.3 | 0.147 | 0.082 | 94.5 | 0.142 | 0.081 | 94.8 | 0.141 |
| FILT3R (ours) | 0.080 | 95.1 | 0.143 | 0.078 | 95.3 | 0.140 | 0.076 | 95.4 | 0.138 |
| Benchmark | Training ref. | Prefix lengths | Prefix / 64 | Evaluator details |
|---|---|---|---|---|
| TUM-RGBD pose | CUT3R 4–64 views | 50–1000 | – | ATE uses align=True , correct_scale=True ; uses align_origin=True ; RPE is evaluated at frame with similarity alignment. |
| Bonn depth | CUT3R 4–64 views | 50–500 | – | Main long-horizon table uses metric scale; the reset comparison additionally reports per-sequence scale alignment. Valid pixels satisfy GT depth and m; predictions are bicubically resized and averaged with valid-pixel weighting. |
| KITTI depth | CUT3R 4–64 views | 300 / 400 / 500 | – | Both metric-scale and per-sequence-scale metrics are reported. The evaluator keeps the dataset’s native depth range ( max_depth=None ) and uses the same valid-pixel-weighted aggregation. |
| 7-Scenes recon | CUT3R 4–64 views | 100 / 200 / 300 / 500 / 1000 | – | Input size 512 with a 224-pixel center crop for point cloud optimization. With ICP applied to report Accuracy, Completeness, and Normal Consistency. |
| NRGBD recon | CUT3R 4–64 views | 300 / 400 / 500 | – | The same reconstruction evaluator is used on the nine prepared NRGBD scenes. |
| Variant | ATE | RPE-r | |
|---|---|---|---|
| Ours | 0.057 | 0.107 | 0.362 |
| Gate variant ( ) | 0.057 | 0.107 | 0.364 |
| Method | mean std | worst | wins | RPE-r mean std | worst | wins |
|---|---|---|---|---|---|---|
| CUT3R | 0.493 0.318 | 1.137 | 0 | 0.486 0.240 | 0.862 | 0 |
| TTT3R | 0.214 0.097 | 0.427 | 0 | 0.387 0.158 | 0.588 | 0 |
| TTT3R+Reset | 0.221 0.060 | 0.290 | 0 | 0.338 0.113 | 0.483 | 5 |
| FILT3R (ours) | 0.107 0.029 | 0.136 | 8 | 0.362 0.148 | 0.581 | 3 |
| Method | KITTI-300 | KITTI-400 | KITTI-500 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Abs Rel | log RMSE | Abs Rel | log RMSE | Abs Rel | log RMSE | ||||
| CUT3R | 0.122 | 87.5 | 0.165 | 0.127 | 86.9 | 0.170 | 0.130 | 86.5 | 0.175 |
| TTT3R | 0.111 | 90.3 | 0.152 | 0.115 | 89.7 | 0.159 | 0.118 | 89.2 | 0.165 |
| FILT3R (ours) | 0.108 | 91.1 | 0.149 | 0.112 | 90.2 | 0.156 | 0.116 | 89.6 | 0.162 |
| Alignment | Method | Type | Sintel | Bonn | KITTI | |||
| Abs Rel | Abs Rel | Abs Rel | ||||||
| Per-seq. scale | DUSt3R-GA [ 34 ] | Optim | 0.656 | 45.2 | 0.155 | 83.3 | 0.144 | 81.3 |
| MASt3R-GA [ 11 ] | Optim | 0.641 | 43.9 | 0.252 | 70.1 | 0.183 | 74.5 | |
| MonST3R-GA [ 39 ] | Optim | 0.378 | 55.8 | 0.067 | 96.3 | 0.168 | 74.4 | |
| Easi3R [ 3 ] | FA | 0.377 | 55.9 | 0.059 | 97.0 | 0.102 | 91.2 | |
| VGGT | FA | 0.287 | 66.1 | 0.055 | 97.1 | 0.070 | 96.5 | |
| Method | Length 100 | Length 200 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Acc | Comp | NC | Acc | Comp | NC | |||||||
| Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | Mean | Med. | |
| CUT3R | 0.033 | 0.018 | 0.022 | 0.005 | 0.592 | 0.644 | 0.089 | 0.053 | 0.048 | 0.017 | 0.566 | 0.600 |
| TTT3R | 0.020 | 0.008 | 0.016 | 0.004 | 0.596 | 0.649 | 0.028 | 0.015 | 0.023 | 0.005 | 0.582 | 0.627 |
| FILT3R (ours) | 0.017 | 0.006 | 0.017 | 0.004 | 0.595 | 0.648 | 0.019 | 0.008 | 0.022 | 0.004 | 0.584 | 0.629 |
| Symbol | Description | Value |
|---|---|---|
| Initial per-token variance | 1.5 | |
| Kalman-style gain clamp bounds | 0.01, 0.99 | |
| , | Process noise bounds | 0.02, 0.5 |
| , | Process-noise sigmoid parameters | 20, 3.0 |
| Fixed measurement-noise scalar | 1.0 | |
| Drift EMA rate | 0.05 |
| Len. | Method | PSNR | SSIM | LPIPS | wins | |
|---|---|---|---|---|---|---|
| 16 | Original-AR | 23.0966 | – | 0.7638 | 0.2681 | – |
| Fixed-gain EMA | 23.1423 | +0.0457 | 0.7648 | 0.2677 | 127/140 | |
| + FILT3R-FW | 23.1457 | +0.0491 | 0.7648 | 0.2677 | 127/140 | |
| 64 | Original-AR | 24.8116 | – | 0.8140 | 0.2253 | – |
| Fixed-gain EMA | 24.9444 | +0.1328 | 0.8173 | 0.2230 | – | |
| + FILT3R-FW | 24.9647 | +0.1531 | 0.8192 | 0.2220 | – |
| Len. | chunks (filtered) | Original-AR | Fixed-gain EMA | + FILT3R-FW | wins |
|---|---|---|---|---|---|
| 16 | 4 (3) | 23.097 | +0.046 | +0.049 | 127/140 |
| 8 (7) | 21.290 | +0.480 | +0.764 | 140/140 | |
| 16 (15) | 17.255 | +0.702 | +1.618 | 140/140 | |
| 20 | 5 (4) | 23.597 | +0.050 | +0.052 | 130/140 |
| 10 (9) | 21.588 | +0.530 | +0.923 | 140/140 | |
| 20 (19) | 17.724 | +0.605 | +1.542 | 140/140 |
| chunk | per-row | |||
|---|---|---|---|---|
| 1 | 0.900 | 0.900 | 0.900 | 0.000 |
| 2 | 0.827 | 0.731 | 0.830 | 0.010 |
| 3 | 0.798 | 0.674 | 0.829 | 0.025 |
| 4 | 0.769 | 0.652 | 0.826 | 0.027 |
| 5 | 0.738 | 0.590 | 0.826 | 0.040 |
| 6 | 0.712 | 0.551 | 0.826 | 0.048 |
| Setting | FILT3R-FW (row-wise) | Fixed-gain EMA (scalar) |
|---|---|---|
| granularity | row-wise | scalar |
| 0.01 | — (gain floor binds) | |
| drift clip | — | |
| measurement noise | 0.01 | 1.0 |
| initial variance | 0.05 | (floor-binding) |
| gain clamp |
| Method | Memory form | Acc | Comp | NC |
|---|---|---|---|---|
| Point3R | explicit pointer memory | 0.049 | 0.029 | 0.562 |
| Point3R + FILT3R | filtered pointer fusion | 0.042 | 0.024 | 0.563 |
| InfiniteVGGT | attention/KV-cache memory | 0.040 | 0.025 | 0.570 |
| FILT3R (ours) (main) | compact latent memory | 0.020 | 0.022 | 0.568 |
Streaming 3D Reconstruction
Streaming 3D reconstruction incrementally builds geometrically consistent scene maps from incoming images or video under tight memory and latency limits.
See all 99 papers