Info3R: Information-Adaptive Test-Time Training for 3D Reconstruction
Sunghyun Baek, Hanna Bae, Minchan Kwon, Junmo Kim
cs.CV
2026-09-18
KAIST 给 CUT3R 加上按冗余和有效秩调制的测试时更新,状态一饱和就重置并做锚点到世界的对齐。KITTI Odometry 上平均 ATE 30.48,LongStream 是 51.24。
CUT3R 用一组有限的 state token 在线吃视频流,每来一帧就和当前图像做 cross-attention,更新状态再出点云和位姿。TTT3R 把这次更新改写成测试时训练:用空间对齐置信度当 per-token 学习率,redundant 帧不再把状态整盘覆盖。
两件事它没管。帧的重要性仍然差不多,运动模糊、近重复帧和真正带来新几何的帧,更新强度差得不够开。状态容量是有限的,信息堆久了会饱和,模型吃进新观察的能力掉下去,世界坐标系置信度跟着塌。LongStream 用关键帧相对位姿和定期 refresh 硬扛超长室外序列,但要额外训练,显存也高。
在线重建的状态该不该更新、该不该丢掉重来,需要跟当前帧带了多少新信息挂钩。
Info3R 是套在 CUT3R 上的、免训练测试时规则,两步。
第一步,按信息量改学习率。冗余项 wredundant = 1 − 相邻两帧空间 token 的平均余弦相似度,重叠大就少更新,把有限容量留给新观察。只看差异会把运动模糊当成「新信息」。于是对当前帧 token 做 SVD,取覆盖 95% 能量的有效秩 reff,winfo = min(reff / τ, 1),τ 固定为 100。糊掉或塌成少数方向的帧,有效秩低,更新被压住。最终 αt = min(αbase · wredundant · winfo, 1),状态按 St = S{t-1} + αt (Ŝt − S{t-1}) 插值。TTT3R 的 βt 来自对齐置信度;这里的 αt 来自「新不新」和「靠不靠谱」。
第二步,动态重置。有限状态再挑着更新也会满。触发量 Γt 是上次重置以来 Σ αi / C̄worldi:分子是灌进状态的信息总量,分母是世界系置信度,置信度一塌 Γ 涨得更快。超过阈值 γ 就把状态从当前图像 token 重新初始化,世界头此后写在新锚点坐标系 Ac。新旧锚点之间用模型在重置步预测的 SE(3) 串起来,T{A0←Ac} = T{A0←Ac-1} · T{Ac-1←Ac},点云和位姿再映回第一帧定义的世界系。重置时刻集中在转弯段,直线巡航很少触发,符合「旧场景对不上新视角」的时候才丢状态。
超参按数据集给:KITTI Odometry γ=3.2、αbase=1.7;ScanNet γ=3、αbase=1.0;TUM γ=20;7-Scenes γ=25。骨干是 CUT3R 的 ViT-Large,单卡 RTX 4090。
KITTI Odometry 平均 ATE:
| 方法 | 平均 ATE↓ | Seq.00 | Seq.01 | Seq.07 |
| CUT3R | 203.29 | 187.79 | 638.10 | 73.47 |
| TTT3R | 179.08 | 161.60 | 537.34 | 69.33 |
| LongStream | 51.24 | 77.05 | 49.45 | 15.66 |
| Info3R | 30.48 | 30.03 | 97.20 | 7.64 |
相对 LongStream 平均 ATE 低 1.68 倍(30.48 vs 51.24)。Seq.00 能回到起点,论文没加显式回环约束。短而简单的自车运动上 LongStream 仍更好:Seq.01 是 49.45 对 97.20,Seq.03/04 同样如此。
室内位姿,1000 帧 ScanNet ATE 从 TTT3R 的 0.394 降到 0.176,约 54%;TUM 从 0.117 降到 0.061。短序列(50 帧)两边几乎持平,差距是长度拉开的。
视频深度,Bonn 500 帧 Abs Rel 0.077、δ<1.25 为 0.955(TTT3R 0.100 / 0.922);KITTI 500 帧 0.116 / 0.881(TTT3R 0.132 / 0.866)。3D 重建,7-Scenes 400 帧 Acc 0.020(TTT3R 0.049,CUT3R 0.163),几乎不随长度变差;NRGBD 400 帧 Acc 0.072 对 TTT3R 的 0.141。NC 偶尔略低于 TTT3R,差很小。
Seq.00 上显存 3.24 GB,和 CUT3R 的 3.23 持平;TTT3R 4.70,LongStream 10.77。FPS 13.27,慢于 CUT3R 的 15.27 和 LongStream 的 20.47。ATE 换的是这一点速度。
消融:去掉冗余项 ATE 从 30.48 升到 45.03;去掉有效秩到 32.47。重置触发拿掉累计 α 或拿掉置信度,ATE 分别到 36.68 和 36.18。冗余项对全局轨迹更关键,RPE 甚至会略好,ATE 明显变差。
已经在跑 CUT3R / TTT3R 的人,这是一条不用重训、显存几乎不涨的补丁。室外公里级序列上,它把平均 ATE 打到额外训练过的 LongStream 下面,显存只有后者的约 30%。代价是慢一点,以及一套按数据集手调的 γ 和 αbase。
对做在线 3D 的人,有效秩当画质探针、累计更新量当饱和探针,比固定间隔 refresh 更贴输入。转弯才重置,直线少动状态,这个行为本身就说明饱和检测在干什么。
γ 从 KITTI 深度的 0.3 跨到 7-Scenes 的 25,αbase 从 0.4 到 1.7,没有一组通用默认。换场景几乎肯定要重搜。
SE(3) 链式对齐会在重置点攒误差,论文没有单独报重置对齐的残差。Seq.01 这种先长直线再转弯的序列输给 LongStream,说明「信息自适应」在简单匀速段并不占优。NC 没有全面超过 TTT3R。方法封顶在 CUT3R 骨干里,没有和 VGGT 系 streaming 模型对打。运动模糊和噪声的鲁棒实验是 ImageNet-C 中段替换,不是车载真实恶劣天气。