长视频 3D 重建,为什么总是越跑越歪?

  • 关联论文:2609.04201

你有没有用过手机拍一整段走路、逛展馆或开车的视频?如果想让电脑把这些画面变成一个连续的三维空间,机器不仅要认出每个物体,还得知道每一帧相机“站在哪里、朝哪个方向”。这个位置和方向合称“相机位姿”。

问题在于,视频只有几十秒时,一切看起来都很好;一旦变成几十分钟甚至几小时,画面中的小误差会一点点累积,最后建出来的空间可能像一张被反复折叠的纸。机器人、自动驾驶和 AR 都躲不过这个难题。

最近提出的 Scal3R,先做了一个很实用的诊断:长视频出问题时,模型“看局部物体”的能力其实一直不错,真正先坏的是“估计相机全局位置”的部分。也就是说,不是整个模型都需要重做,而是“全局位姿估计”这个环节被设计成了容易累积错误的样子。

传统方法常常让每一帧都去和第一帧比较。短片时,这相当于“从起点走了几步确认方向”;长片时,却像要求模型从起点一路记住所有中间变化,还要准确预测自己现在离起点多远。走得越远,问题越像训练时没见过的超长链条。

Scal3R 的改法可以理解为“两步走”。第一步,不再只找一个参考点,而是让当前帧同时询问多个过去的关键帧:“我和这几个位置分别相差多少?”这些短距离判断比直接猜自己离第一帧有多远可靠得多。

第二步,再把这些相对判断放进一个持续更新的“位置地图”。地图会把所有关键帧连起来,并检查有没有回到曾经经过的地方。如果发现回环,就重新调整整条路线,避免误差一直往一个方向堆。这个思路并不神秘:神经网络负责快速看懂画面,几何优化负责检查全局是否自洽。

最吸引人的是,作者并没有把整个预训练模型重新训练一遍,而是冻结原来的基础模型,只增加约 1% 的可学习 token 来完成多参考查询。换句话说,这更像是给一个已经学会看图的专家配上一个专门的“路线协调员”,而不是让他从小学重新读起。

论文报告在 KITTI 等多个数据集上,KITTI 的平均轨迹误差相对在线基线下降超过 60%;同时在六个数据集上取得领先结果。训练收敛时间约为单 GPU 八小时,这对研究团队和中小型实验室都比较友好。

但“长视频不飘”并不等于拿过来就能部署。实际系统还要决定哪些帧值得保留、保留多少帧才不会让显存随着视频长度不断上涨,以及回环识别错了怎么办。重复的窗户、树叶或动态行人,都可能让系统误以为自己回到了老地方。

所以,这篇论文最重要的启发不是某个单一数字,而是一个工程原则:先找出到底是哪一层在变坏,再做最小改动。长视频 3D 重建的瓶颈可能不在“视觉识别”,而在“全局位置怎么组织”。当局部能力已经稳定,给它加上多参考和全局校正,往往比推倒重来更划算。

当然,论文摘要没有公开完整表格、单帧延迟和所有运行细节。正式部署前,仍应核对关键帧策略、显存上限、回环误检,以及不同骨干网络上的迁移效果。相关论文:arXiv:2609.04201。