跳转至

3D Scene Prompting for Scene-Consistent Camera-Controllable Video Generation

会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=3XxoBwMusJ
项目主页: https://cvlab-kaist.github.io/3DScenePrompt
代码: 待确认
领域: 视频生成 / 相机可控视频生成
关键词: 相机可控视频生成、场景一致性、3D 场景记忆、动态 SLAM、时空双重条件

一句话总结

本文提出 3DScenePrompt,用「时序相邻帧 + 静态 3D 点云投影视图」的双重时空条件,从任意长度输入视频续生下一段视频,在精确相机控制的同时保持与整段历史的场景一致性。

研究背景与动机

  • 领域现状:相机可控视频生成已从「凭空生成可控视角视频」发展到「沿用户指定相机轨迹扩展一张图或一小段片段」。代表方法如 CameraCtrl、MotionCtrl、AC3D 把 Plücker 坐标等相机嵌入通过 ControlNet 注入扩散模型,能精确跟随轨迹。
  • 现有痛点:这些方法只能吃极短的条件序列(通常就几帧),无法理解更长的视频,因而丢失了长视频里丰富的场景上下文。video-to-future-video 方法(如 Cosmos-Predict2)用时序滑动窗只取最后几帧,当相机回访早期视角(窗口外)时无法维持长程空间一致性。
  • 核心矛盾:场景一致的相机可控生成需要同时满足三件互相冲突的事——① 静态元素要全程保持一致,而动态元素(行人、车)应从最近状态自然演化,不能把 50 帧前那个人僵在原位搬到 200 帧;② 相机控制需要理解底层 3D 几何(遮挡、合成、外推未观测区域);③ 还得在可行算力内完成,naive 处理全部输入帧会因自注意力的平方复杂度而爆炸。
  • 本文目标:定义并解决 scene-consistent camera-controllable video generation 任务——给任意长度上下文视频 \(V_{in}\in\mathbb{R}^{L\times H\times W\times3}\) 和目标相机轨迹 \(C\),生成与整段场景几何一致的后续 \(T\)\(V_{out}\)
  • 核心 idea重新定义视频模型「引用历史」的方式——视频里的「相邻」不只是时间上的,也可以是空间上的。当相机回访相似视角时,要生成的帧其实与很早之前的帧空间相邻。由此提出双重时空条件:时序窗口保运动连续性,空间窗口保场景一致性;并用只含静态几何的 3D 场景记忆把空间条件里的动态内容剔除,避免把过去的动态元素错误地"冻结复现"。

方法详解

整体框架

3DScenePrompt 基于 CogVideoX-I2V-5B,把它原本的单图条件通道改造成「时序+空间」双输入。整条管线分三步:① 对输入视频跑动态 SLAM 得到相机位姿和聚合点云;② 用三阶段动态掩码剔除运动物体,得到只含静态几何的点云 \(P_{static}\),连同位姿构成 3D 场景记忆 \(M\);③ 把 \(M\) 沿用户指定轨迹投影出几何一致的渲染视图作为"3D 场景提示",与最后几帧一起 channel-wise 拼接喂给冻结的 DiT 主干续生未来视频。

flowchart LR
    A[输入视频 V_in<br/>任意长度] --> B[动态 SLAM<br/>位姿 + 聚合点云]
    B --> C[三阶段动态掩码<br/>剔除运动物体]
    C --> D[静态点云 P_static<br/>3D 场景记忆 M]
    A --> E[最后 w=9 帧<br/>时序条件]
    F[用户指定相机轨迹 C] --> G[沿轨迹投影 P_static<br/>渲染静态视图]
    D --> G
    G --> H[空间条件<br/>3D 场景提示]
    E --> I[3D VAE 编码<br/>通道拼接]
    H --> I
    I --> J[DiT 主干<br/>CogVideoX 冻结结构]
    J --> K[续生未来视频 V_out]

关键设计

1. 双重时空滑动窗:把"相邻"从时间扩展到空间。现有方法只沿时间轴取最后 \(w\) 帧,相机一旦回访窗口外的区域就失忆。作者不去暴力增大 \(w\)(会触发自注意力的平方代价),而是新增一条空间窗口,按与目标视角的相似度检索"3D 视角接近"的帧,与时间无关。最终条件写成 \(V_{out}=\mathcal{F}(\tilde V_{in},\mathcal{T},C)\),其中 \(\tilde V_{in}=\{\text{Temporal}(w)\}\cup\{\text{Spatial}(T)\}\)。这样模型既能从最近 \(w\) 帧继承运动动态,又能引用很久以前观测过同一空间的帧来维持一致,而不必处理全部 \(L\)。但直接检索过去的原始帧会把当年的动态元素一起搬过来,于是空间条件必须只提供"持久的静态结构"——这就引出了 3D 场景记忆。

2. 静态 3D 场景记忆 + 三阶段动态掩码:让空间提示只保留几何、放走动态。先用动态 SLAM 估计位姿与聚合点云 \((\hat C, P)=\text{DSLAM}(V_{in})\);但 \(P\) 里静态、动态混杂,直接聚合会让运动物体在多个位置留下"鬼影"。作者设计三阶段掩码彻底剔除动态:① 像素级运动检测——用 SEA-RAFT 算光流,与相机自运动诱导的光流作差,超阈值 \(\tau\) 的区域标记为潜在动态,\(M_i^{pixel}=\mathbb{1}[\|\text{Flow}_{optical}-\text{Flow}_{warp}\|_1>\tau]\);② 反向跟踪聚合——用 CoTracker3 把各帧采样点回溯到 \(t=0\),捕捉"开始静止后来移动"的物体;③ SAM2 传播——把聚合点作 prompt 生成完整物体级掩码 \(M_i^{obj}\)。最终静态几何 \(P_{static}=\bigcup_{i=1}^{L}P_i\odot(1-M_i^{obj})\),场景记忆 \(M=(\hat C, P_{static})\)。消融显示去掉掩码 PSNR 直降约 0.8dB(13.05→12.23),因为鬼影会污染空间条件。

3. 3D 场景提示:投影代替检索,免额外相机编码就能精确控相机。有了 \(P_{static}\) 后,作者不直接检索 \(T\),而是对每个目标位姿 \(C_t\) 把最相关的若干输入帧的静态点投影出来:\(\text{Spatial}(t)=\Pi(K\cdot C_t\cdot P_{static}^{(n)})\),其中 \(P_{static}^{(n)}\) 取按视场重叠度排序的 top-\(n\) 空间相邻帧(\(n=7\))。投影天然只含静态内容、与目标位姿几何对齐,且多视角点云互补还能填补被动态物体遮挡的区域。这些投影视图就是"3D 场景提示"——它们显式编码了相机应看到什么,因此模型无需任何额外相机嵌入模块就能精确控相机;实验也证实增大时序窗口 \(w\) 对控相机几乎无帮助,控制力来自空间提示而非更多时序上下文。

4. 最小改动复用预训练先验。时序条件取最后 \(w=9\) 帧,空间条件取 \(T\) 张投影视图,两者经冻结 3D VAE 编码后 channel 拼接 \(Z_{cond}=E[\text{Concat}(\text{Temporal}(w),\text{Spatial}(T))]\),复用 CogVideoX 原有的图像条件通道。DiT 主干完全不动,保住全部预训练视频先验,仅用 4×H100 全量微调 4K 步(约 48 小时)。

实验关键数据

主实验

空间与几何一致性(对比唯一同任务基线 DFoT,回访轨迹上评估):

方法 RealEstate10K PSNR↑ SSIM↑ LPIPS↓ MEt3R↓ DynPose-100K PSNR↑ MEt3R↓
DFoT 18.30 0.596 0.308 0.1812 12.15 0.1832
3DScenePrompt 20.89 0.717 0.212 0.0408 13.05 0.1242

几何一致性指标 MEt3R 误差下降约 77%(0.041 vs 0.181),多视角对齐显著更好。

相机可控性(DynPose-100K):

方法 mRotErr(°)↓ mTransErr↓ mCamMC↓
MotionCtrl 3.565 7.823 9.783
CameraCtrl 3.327 9.599 11.212
AC3D 3.068 9.704 11.163
DFoT 2.398 8.087 9.233
Ours (w=9) 2.377 7.417 8.635

视频质量(FVD↓ / VBench++):3DScenePrompt FVD 127.5,远低于 FloVD(171.3)、AC3D(281.2)、CameraCtrl(737.1);主体/背景一致性、美学、成像、运动平滑等子项全面领先。

消融实验

配置 动态掩码 PSNR↑ SSIM↑ LPIPS↓ MEt3R↓
n=1 13.02 0.373 0.377 0.1248
n=4 13.04 0.373 0.376 0.1249
n=7 12.23 0.306 0.382 0.1349
n=7 13.05 0.367 0.381 0.1242

关键发现

  • 动态掩码不可或缺:去掉后 PSNR 掉约 0.8dB、SSIM 从 0.367 崩到 0.306,鬼影污染空间条件。
  • 空间相邻帧数 \(n=7\) 即饱和:再增加(甚至 \(n=L\))几乎无提升,说明 7 帧已提供足够空间上下文且省算力。
  • 控相机靠空间提示而非时序窗口\(w=1\)\(w=9\) 在控相机指标上几乎相同。

亮点与洞察

  • 重新定义"相邻":把视频条件从纯时序扩展到时空双轴,是一个简洁却切中长程一致性要害的视角转换。
  • 用静态 3D 记忆解耦"该保持的"和"该演化的":静态几何持久、动态从最近时序自然生长,干净地化解了"过去动态不该复现"这一任务独有矛盾。
  • 投影视图一举两得:既当空间一致性提示,又因几何对齐天然成为相机控制信号,省掉额外相机编码模块。
  • 最小侵入式:DiT 主干完全冻结、仅复用图像条件通道,4K 步微调即可,工程成本低、保住预训练先验。

局限与展望

  • 强依赖动态 SLAM 与掩码质量:SLAM 位姿/重建出错或掩码漏检漏分(如缓慢运动、薄结构)会直接污染场景记忆与投影视图。
  • 静态/动态二分假设:对半静态、形变、流体等介于两者之间的内容,硬性二分可能失效。
  • 未观测区域仍需生成模型外推:投影只能填补曾被观测过的几何,全新区域的合理性仍受生成先验限制。
  • 基线对比偏窄:场景一致性维度只与 DFoT 一家直接可比(任务太新),可比性证据相对有限。
  • 输出帧数 \(T\) 固定、对超长序列的检索/投影开销随 \(L\) 增长,超长 horizon 的可扩展性待验证。

相关工作与启发

  • 单帧/多帧相机可控生成(CameraCtrl、MotionCtrl、VD3D、CameraCtrl2、Seaweed-APT2):只考虑时序相邻,受内存约束无法对长视频维持场景一致——本文用 SLAM 引入空间相邻。
  • 几何接地视频生成(Gen3C、TrajectoryCrafter):同样用动态 SLAM 抬到 3D,但局限于输入时空覆盖内的动态新视角合成,整段 warp 不区分动静;本文核心差异是跨越时间边界续生,必须在 3D 构建时选择性掩除动态。
  • 长程一致生成(ReCamMaster、StarGen 假设静态世界、DFoT 用历史引导):要么丢动态、要么受内存限制;本文双重时空 + SLAM 空间记忆按需检索最相关帧,兼顾算力与一致性。
  • 启发:把"3D 几何记忆 + 投影提示"作为可控条件的范式,可推广到长视频编辑、世界模型、仿真数据生成等需要"持久空间+自然动态"的场景。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ — 把视频条件从时序拓展到时空双轴、并用静态 3D 记忆解耦动静,是切中长程一致性痛点的原创视角。
  • 实验充分度: ⭐⭐⭐⭐ — 一致性/可控性/质量三维度多基线对比 + 关键消融充分;但场景一致性维度可直接对比的基线偏少。
  • 写作质量: ⭐⭐⭐⭐⭐ — 动机层层递进、图示清晰、公式与管线对应良好。
  • 价值: ⭐⭐⭐⭐ — 面向影视、VR、机器人、合成数据等长视频续生场景有直接应用价值,工程改动小、易复用。