StreamTTO: Efficient Online Test-Time Optimization for Video Depth Completion
Organizations: Korea Advanced Institute of Science and Technology (KAIST), Daejeon, Republic of Korea
Abstract
Monocular depth foundation models generalize across diverse scenes, but recovering accurate metric depth consistent with a target sensor remains challenging under sensor variation and domain shift. Test-time optimization (TTO) guided by sparse depth addresses this limitation, yet independent per-frame adaptation incurs substantial computational cost. We propose StreamTTO, an online test-time optimization framework for video depth completion that reuses visual features and adaptation state. A frozen feature extractor with causal temporal attention incorporates past visual context into features cached for repeated decoder optimization. Causal Sliding-Window Optimization directly updates a shared depth decoder using cached features and sparse observations from recent frames, requiring only two passes over the window per incoming frame after initialization. Reusing recent observations and the adapted decoder substantially reduces optimization steps. We also introduce MS-Depth, comprising approximately 1.45M synchronized RGB--LiDAR frames from 40 hours of recordings. Its uninterrupted sequences capture transitions among indoor, underground, and outdoor environments under daytime and nighttime conditions, enabling evaluation of adaptation to changes in illumination, scene structure, and depth range. Experiments on KITTI, Bonn, NYUv2 Raw, TUM RGB-D, DDAD, and MS-Depth demonstrate competitive depth completion accuracy. On MS-Depth, StreamTTO achieves average processing speeds of approximately 15FPS with VGGT and 25FPS with MoGe-2 at an input resolution of 518 X 392.
Figures & tables
| Method | KITTI | Bonn | NYUv2 Raw | TUM RGB-D | DDAD | Speed | |||||
| RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE | Avg. FPS | |
| Depth Foundation Models | |||||||||||
| Depth Anything V2 Metric | 4.1902 | 2.1348 | 0.2278 | 0.1380 | 0.1660 | 0.1060 | 0.2705 | 0.1410 | 15.7768 | 8.7141 | 26.68 |
| UniDepthV2 | 2.9397 | 1.2993 | 0.1832 | 0.0811 | 0.1327 | 0.0698 | 0.2674 | 0.1265 | 13.2580 | 5.7289 | 37.47 |
| Video Depth Anything Metric (online) | 4.3396 | 2.3805 | 0.1992 | 0.1125 | 0.2513 | 0.1380 | 0.2793 | 0.1490 | 15.4656 | 7.8687 | 35.53 |
| 3D Foundation Models | |||||||||||
| MS-Depth | |||||||||
| Method | Indoor | Outdoor | FPS | ||||||
| Underground | Aboveground | Day | Night | ||||||
| RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE | ||
| Depth Foundation Models | |||||||||
| Depth Anything V2 Metric | 2.3864 | 1.7842 | 1.7433 | 0.8399 | 2.7577 | 1.6428 | 2.4214 | 1.3059 | 59.52 |
| UniDepthV2 | 1.4090 | 0.8418 | 1.6569 | 0.5920 | 3.6521 | 2.3448 | 2.9081 | 1.6813 | 83.16 |
| Method | Indoor Outdoor | Outdoor Indoor | Indoor Underground | Underground Indoor | Outdoor Underground | Underground Outdoor | Overall | FPS | Training FLOPs (T/frame) |
| W1 (6 updates) | 10.5 | 4.063 | |||||||
| W3 (2 passes) | 15.7 | 4.063 |
Appendix figures & tables21 assets
Supplementary material from the paper’s appendix.
Appendix
| Optimization passes | ||||||
| 1 | 2 | 5 | 10 | 20 | 40 | |
| 1 | 1.4609 | 1.3786 | 1.1952 | 0.9908 | 0.9245 | 0.9623 |
| 2 | 1.4583 | 1.3734 | 1.1847 | 0.9723 | 0.8895 | 0.9233 |
| 3 | 1.4577 | 1.3725 | 1.1831 | 0.9681 | 0.8753 | 0.9039 |
| 6 | 1.4588 | 1.3745 | 1.1883 | 0.9728 | 0.8615 | 0.8769 |
| 12 | 1.4623 | 1.3812 | 1.2028 | 0.9927 | 0.8645 | 0.8600 |
| Optimization passes | ||||||
| 1 | 2 | 5 | 10 | 20 | 40 | |
| 1 | 0.9733 | 0.9314 | 0.9038 | 0.9781 | 0.9770 | 0.9758 |
| 2 | 0.9481 | 0.9004 | 0.8869 | 0.9514 | 1.5399 | 1.8283 |
| 3 | 0.9233 | 0.8694 | 0.8594 | 0.9704 | 0.9846 | 1.2465 |
| 6 | 0.9048 | 0.8551 | 0.8812 | 0.9746 | 1.0659 | 1.2872 |
| 12 | 0.8922 | 0.9544 | 1.0273 | 1.2603 | 1.4860 | 1.5117 |
| RMSE (m) | ||||
| Configuration | Observed | Unobserved | ||
| 3 | 2 | Baseline | 0.8162 | 0.8696 |
| 3 | 20 | No modification | 0.2623 | 0.9773 |
| 3 | 20 | Lower constant LR | 0.7454 | 0.9321 |
| 3 | 20 | LR decay | 0.4113 | 0.9955 |
| 3 | 20 | Optimizer-only reset | 0.2740 | 0.9869 |
| Initialization | s | s | s | s |
| Local reset + bootstrap | 1.26 | 1.16 | 1.11 | 1.14 |
| Full-stream warm-start | 1.24 | 1.10 | 1.07 | 1.09 |
| Adaptation strategy | 0–5 min | 5–10 min | 10–15 min | 15 min | Overall |
| Continuous warm-start | 1.06 | 1.14 | 1.05 | 1.11 | 1.09 |
| Periodic reset | 1.15 | 1.24 | 1.16 | 1.22 | 1.19 |
| Periodic reset + bootstrap | 1.05 | 1.16 | 1.08 | 1.14 | 1.11 |
| Method | KITTI | Bonn | NYUv2 Raw | TUM RGB-D | DDAD | Speed | |||||
| RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE | Avg. FPS | |
| VGGT + Causal-Attn | 3.0817 | 1.3334 | 0.1723 | 0.0792 | 0.1602 | 0.0832 | 0.2150 | 0.0988 | 12.7059 | 6.6541 | 17.52 |
| VGGT + Causal-Attn + TestPromptDC | 1.2449 | 0.3768 | 0.0559 | 0.0208 | 0.0584 | 0.0254 | 0.0550 | 0.0190 | 9.3939 | 2.6467 | 0.201 |
| VGGT + CSWO | 2.2404 | 0.8587 | 0.1330 | 0.0543 | 0.0992 | 0.0621 | 0.1425 | 0.0782 | 8.9450 | 4.2453 | 9.491 |
| VGGT + StreamTTO | 1.0223 | 0.3920 | 0.0592 | 0.0210 | 0.0403 | 0.0220 | 0.0738 | 0.0274 | 7.1448 | 2.3483 | 7.14 |
| MoGe-2 + Causal-Attn | 2.8130 | 1.2086 | 0.1641 | 0.0793 | 0.1194 | 0.0732 | 0.2414 | 0.1075 | 10.2409 | 4.1452 | 33.28 |
| MS-Depth | |||||||||
| Method | Indoor | Outdoor | FPS | ||||||
| Underground | Aboveground | Day | Night | ||||||
| RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE | ||
| VGGT + Causal-Attn | 1.5222 | 0.9521 | 1.8435 | 0.6425 | 2.3414 | 1.4592 | 2.3252 | 1.3433 | 39.84 |
| VGGT + Causal-Attn + TestPromptDC | 1.0995 | 0.3174 | 1.2347 | 0.2536 | 1.8212 | 0.5253 | 1.7266 | 0.4693 | 0.608 |
| VGGT + CSWO | 1.1234 | 0.6227 | 1.4582 | 0.4388 | 1.6999 | 0.8930 | 1.7881 | 0.8691 | 19.46 |
| Observations 3% | Observations 1% | |||
| Method | RMSE | MAE | RMSE | MAE |
| Depth foundation models | ||||
| Depth Anything V2 Metric | 0.1660 | 0.1060 | 0.1661 | 0.1061 |
| UniDepthV2 | 0.1327 | 0.0698 | 0.1328 | 0.0698 |
| Video Depth Anything Metric (online) | 0.2514 | 0.1380 | 0.2516 | 0.1381 |
| 3D foundation models | ||||
| KITTI | Bonn | NYUv2 Raw | TUM RGB-D | DDAD | ||||||
| Method | RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE | RMSE | MAE |
| TestPromptDC | 1.1266 | 0.3441 | 0.0514 | 0.0190 | 0.0495 | 0.0229 | 0.0514 | 0.0163 | 8.2693 | 2.2167 |
| TestPromptDC + warm-start | 1.0994 | 0.3368 | 0.0507 | 0.0175 | 0.0460 | 0.0196 | 0.0512 | 0.0161 | 8.1666 | 2.1951 |
| Error reduction | 2.41% | 2.12% | 1.36% | 7.89% | 7.07% | 14.41% | 0.39% | 1.23% | 1.24% | 0.97% |
| CAPA-LoRA (offline) | 1.0902 | 0.2684 | 0.0566 | 0.0179 | 0.0546 | 0.0219 | 0.0560 | 0.0144 | 7.6213 | 1.7592 |
| CAPA-LoRA + warm-start | 1.0076 | 0.2374 | 0.0540 | 0.0156 | 0.0488 | 0.0185 | 0.0532 | 0.0123 | 7.5613 | 1.7009 |
| Dataset | Environment | Sensing | RGB Resolution | Rate | Total Video Duration / Frame Count |
| KITTI | Outdoor Driving | Stereo RGB; 64-Channel LiDAR | Sequence- Dependent 2 2 2 KITTI’s rectified RGB resolutions are , , , , and , as specified in the date-specific calibration files of the official raw release ( Geiger et al., 2013 ) . | 10 Hz | 1.3 h / 47,937 frames |
| Bonn | Indoor | ASUS Xtion Pro LIVE RGB-D | 30 Hz | 17 min / 30,022 frames | |
| NYUv2 Raw | Indoor | Kinect RGB-D | 20–30 Hz | 407,024 frames | |
| TUM RGB-D | Indoor | Kinect / ASUS Xtion | 30 Hz | 1 h 16 min / 129,824 frames (Public Pose GT: 49 min / 81,413 frames; Validation: 27 min / 48,411 frames) | |
| DDAD | Outdoor Driving | 6 RGB Cameras; Luminar-H2 LiDAR | 10 Hz | 28 min / 16,600 frames per camera (Train: 21 min / 12,650 frames; Validation: 7 min / 3,950 frames) Test: 3,080 frames | |
| MS-Depth | Indoor / Outdoor / Underground | RGB; 128-Channel LiDAR; IMU | 10 Hz | 40 h / 1.45 M frames (Train 36 h / 1.3 M frames; Test 4 h / 148,115 frames) |
| Dataset | Platform | RGB resolution | Rate | LiDAR channels | Duration (min/seq.) | Seq. 15 min | I/O seq. | Day / Night | Depth data | Env. info. |
| FusionPortableV2 | Multiple | 20 Hz | 128 | 1.3–11.6 | 0/27 | 6/27 | 24 / 3 | Subset + tools | Sequence | |
| Oxford Spires | Human- carried | 5–20 Hz | 64 | 3.5–21.3 | 3/24 | 11/24 | 24 / 0 | Subset + tools | Sequence | |
| MS-Depth (test) | Handheld | 10 Hz | 128 | 15.8–22.6 | 13/13 | 13/13 | 6 / 7 | Input + reference | Temporal |
| Dataset | Sequences | Pairs per sequence | Total pairs |
| KITTI | 8 | 110 | 880 |
| Bonn | 5 | 110 | 550 |
| NYUv2 Raw | 8 | 110 | 880 |
| TUM RGB-D | 8 | 110 | 880 |
| DDAD | 50 | 50 or 100 | 3,950 |
| Total | 79 | 7,140 |
| Sequence ID | Start frame | End frame | Pairs |
| 2011_09_26_drive_0005_sync | 0000000005 | 0000000114 | 110 |
| 2011_09_26_drive_0013_sync | 0000000005 | 0000000114 | 110 |
| 2011_09_26_drive_0023_sync | 0000000005 | 0000000114 | 110 |
| 2011_09_26_drive_0036_sync | 0000000005 | 0000000114 | 110 |
| 2011_09_26_drive_0095_sync | 0000000005 | 0000000114 | 110 |
| 2011_09_29_drive_0026_sync | 0000000005 | 0000000114 | 110 |
| Sequence ID | Start depth timestamp | End depth timestamp | Pairs |
| rgbd_bonn_synchronous | 1548340301.91798 | 1548340305.55515 | 110 |
| rgbd_bonn_person_tracking | 1548265882.51176 | 1548265886.14241 | 110 |
| rgbd_bonn_crowd2 | 1548339894.59618 | 1548339898.23325 | 110 |
| rgbd_bonn_crowd3 | 1548339959.43347 | 1548339963.07062 | 110 |
| rgbd_bonn_balloon2 | 1548266533.17712 | 1548266536.81403 | 110 |
| Sequence ID | Start depth timestamp | End depth timestamp | Pairs |
| basement_0001a | 1316653609.773176 | 1316653613.405163 | 110 |
| bookstore_0001a | 1295525659.331413 | 1295525662.963355 | 110 |
| cafe_0001a | 1295527093.873179 | 1295527097.504396 | 110 |
| classroom_0001a | 1315404991.101447 | 1315404994.732725 | 110 |
| kitchen_0003 | 1294887072.518566 | 1294887076.168351 | 110 |
| office_0004 | 1294851491.914890 | 1294851495.546016 | 110 |
| Sequence ID | Start depth timestamp | End depth timestamp | Pairs |
| rgbd_dataset_freiburg1_desk | 1305031453.374112 | 1305031457.342954 | 110 |
| rgbd_dataset_freiburg1_desk2 | 1305031526.688356 | 1305031530.656445 | 110 |
| rgbd_dataset_freiburg1_room | 1305031910.771502 | 1305031914.407339 | 110 |
| rgbd_dataset_freiburg2_desk | 1311868164.373557 | 1311868168.115940 | 110 |
| rgbd_dataset_freiburg2_desk_with_person | 1311870427.207687 | 1311870431.247317 | 110 |
| rgbd_dataset_freiburg2_large_with_loop | 1311875572.417883 | 1311875576.219311 | 110 |
| Frames per scene | Sample indices | Scene IDs |
| 50 | 0–49 | 000151, 000152, 000154, 000157, 000159, 000162, 000166, 000172, 000174, 000177, 000182, 000183, 000191, 000192, 000193, 000194, 000195, 000196, 000197, 000198, 000199 |
| 100 | 0–99 | 000150, 000153, 000155, 000156, 000158, 000160, 000161, 000163, 000164, 000165, 000167, 000168, 000169, 000170, 000171, 000173, 000175, 000176, 000178, 000179, 000180, 000181, 000184, 000185, 000186, 000187, 000188, 000189, 000190 |
| Mean | Median | Frames with | Mean | Mean | |
| 1 | 0.58 | 0.30 | 84% | 13.9 | 0.55 |
| 3 (default) | 0.55 | 0.29 | 86% | 9.4 | 0.78 |
| 6 | 0.57 | 0.30 | 85% | 6.1 | 0.86 |
| 12 | 1.05 | 0.46 | 70% | 4.3 | 0.91 |