上周后台同事把一段十字路口实采视频丢给我,问了一个几乎每个做自动驾驶重建的人都会遇到的问题:“静态背景用神经渲染已经做得很干净了,为什么那辆正在变道的SUV一开过去,车头轮廓就变成一团糊的?整段车道也跟着抖。”我说,不是你的渲染参数有问题,是你的重建流程把“会动的东西”和“不会动的东西”彻底分开处理,分开得久了,它们就再也合不到同一个时空里。
这就是我一直关注DynamicVGGT这类工作的原因。复旦大学和引望在CVPR‘26上公开的DynamicVGGT,定位是面向自动驾驶的统一4D动态场景重建框架。比起单场景NeRF、静态3DGS,它要解决的是那个一直很尴尬的中间地带:城市道路上车会动、人会走、遮挡会变,而现有方案要么把动态物体当噪声抹掉,要么单独做一套检测跟踪,再和静态背景拼在一起,坐标、时序、尺度经常对不齐。
这篇内容我打算从几个角度展开:自动驾驶场景建模为什么需要4D动态重建、VGGT这类视觉几何基础模型在时间维度上会遇到什么麻烦、DynamicVGGT框架里比较可能的模块设计逻辑,以及最重要的事情——数据怎么准备、评测怎么做、工程上怎么落地。如果你正在做仿真回灌、数据合成或者世界模型,这篇内容大概率对你有用。
1. 先回答那个最扎心的问题:为什么城市道路场景“重建不干净”
先说一个我反复在项目里看到的通病。很多人做自动驾驶场景重建,第一反应是先建静态背景,把路、墙、树、交通标志这些“不动”的东西用神经辐射场或者3D高斯拟合出来,然后单独跑一个检测模块把车、人抠成一个个2D框,最后在渲染时把检测到的目标贴回图像里。
这套静态+动态“两张皮”的做法,在演示场景够用,可一旦进入量产级城区数据就会失灵。原因很直接:3D重建算法假设的是场景在多次观测中保持几何一致。一旦画面里出现移动的车、行人、甚至晃动的树叶,这些像素会同时破坏多视图匹配、深度估计和相机位姿优化。于是工程上干脆用一个“动态物体mask”把这些区域挖掉,只保留静态核心。动态区域怎么办?交给另一个感知模块,用2D检测或者3D跟踪去补。
问题恰好出在这里:静态重建模块有自己的坐标空间,动态感知模块也有自己的坐标空间,它们可能共用一套标定,但时间戳、运动补偿、边缘处理一旦有任何不一致,重建出来的动态目标就会像“纸片人”一样贴在背景上。车动起来后,阴影、反光、遮挡边缘全部对不上。你看到的那种“车身糊成一团、车道跟着抖”的渲染错误,本质上不是后处理能修掉的,而是从数据组织那一刻就埋下的裂缝。
DynamicVGGT想做的,是把这两个空间统一到同一个4D时空中。所谓“统一”,我的理解是两方面:一是在输入侧,把一段连续视频、一系列相机位姿、以及相机内参作为同一个样本交给模型,而不是分两路处理;二是在输出侧,同时给出相机运动、逐像素深度、点图、场景结构以及动态目标运动场。最终拿到的不是一个静态贴图世界,也不只是一堆目标框,而是“背景会存在、物体会运动、相机在变化”的一套完整描述。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. DynamicVGGT对自动驾驶到底意味着什么:先看清需求区别
很多人看到“4D动态场景重建”第一反应是:这就是给NeRF加一个时间轴,让视频能随意换视角。这个理解不能说错,但放在自动驾驶场景里太浅了。
2.1 重建出来的东西要给谁用
先说需求侧。自动驾驶里真正需要动态场景重建的,不只是为了做几个“可以自由拖视角”的演示视频。我梳理了一下,实际场景至少有三类:
- 仿真与闭环测试。把真实城区路段变成可回放的仿真场景,测试规控算法面对随机交通流、旁车加塞、行人横穿时的表现。静态地图只能提供路网,动态交通参与者必须来自场景本身或规则生成器。而Dynam
