跳转至

DynaVid: Learning to Generate Highly Dynamic Videos using Synthetic Motion Data

会议: CVPR 2026
arXiv: 2604.01666
代码: 无
领域: 图像生成
关键词: 视频扩散模型, 合成运动数据, 光流, 动态运动生成, 相机控制

一句话总结

DynaVid 提出利用计算机图形学渲染的合成光流(而非合成视频)来训练视频扩散模型,通过运动生成器+运动引导视频生成器的两阶段框架,实现了高度动态运动的逼真视频合成和精细相机控制。

研究背景与动机

  1. 领域现状:当前视频扩散模型(如 Wan2.2、CogVideoX)已能生成高质量视频,但仍严重依赖大规模训练数据中的运动类型分布。主流训练数据集中,高度动态的运动场景(如街舞、快速相机旋转)极度稀缺。

  2. 现有痛点

    • 模型难以合成含高度动态运动的逼真视频,因为训练集中此类样本不足
    • 相机控制模型(如 CameraCtrl、AC3D)需要准确的 3D 相机位姿标注,但极端运动场景下的位姿估计极不可靠
    • 直接使用合成渲染视频训练会引入严重的外观域差距——模型会复现合成数据的人工纹理和光照
  3. 核心矛盾:合成数据能提供丰富的动态运动和精确的控制信号,但其非真实的外观特征又会 pollute 生成模型的视觉质量。如何"取其精华(运动信息),去其糟粕(人工外观)"是关键难题。

  4. 本文目标

    • 如何让模型学到高度动态的运动模式但不牺牲视觉真实感?
    • 如何在极端相机运动下实现精确的相机轨迹控制?
  5. 切入角度:光流天然只编码运动信息、与外观解耦,因此用渲染的光流替代渲染视频可以消除外观域差距。

  6. 核心 idea:用合成光流(而非合成视频)训练运动生成器学动态运动模式,再用真实视频训练运动引导视频生成器保真实外观,两阶段解耦实现"运动来自合成、外观来自真实"。

方法详解

整体框架

DynaVid 想解决的核心问题是:高度动态的运动(街舞、快速相机旋转)在真实训练数据里几乎找不到,但直接拿计算机图形学渲染的合成视频来补,又会把合成画面那股"假"的纹理和光照一并学进去。它的破局点是把"运动"和"外观"拆开走两条数据路径。整条流水线分两阶段:先由运动生成器读入文本条件,吐出一段用光流表示的运动序列;再由运动引导视频生成器以这段光流为条件,把它"渲染"成真实质感的 RGB 视频帧。两个生成器都基于 Wan2.2-5B 视频扩散模型,用 VACE 架构注入控制信号;做相机控制时,运动生成器还会额外吃一份 Plücker 嵌入作为相机参数。关键在于运动可以来自合成数据,外观却始终来自真实数据,二者在光流这个中间表示上交接。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    SYN["合成光流监督<br/>Blender 渲染 DynaVid-Human / DynaVid-Camera → 合成光流"]
    REAL["真实视频 → WAFT 估真实光流"]
    T["文本条件 (+ 相机 Plücker 嵌入)"] --> MG["运动生成器<br/>Wan2.2-5B + VACE"]
    REAL -->|预训练打底通用运动| MG
    SYN -->|微调学剧烈运动·批次混合| MG
    MG --> F["光流序列"]
    F --> ENC["HSV-RGB 编码<br/>幅值映明度·方向映色相,复用视频 VAE"]
    ENC --> VG["运动引导视频生成器<br/>仅在真实视频-光流配对上训练"]
    VG --> OUT["真实质感 RGB 视频"]

关键设计

1. 用合成光流而非合成视频做运动监督:把"运动"从"外观"里抠出来

合成数据的尴尬在于:它能提供真实数据里稀缺的剧烈运动和精确控制信号,但渲染出来的画面外观是假的,直接拿来训生成模型就会污染视觉质量。DynaVid 的解法是只保留合成数据里"干净"的那一半——光流。光流是逐像素的位移场,它天然只编码"哪里动、往哪动、动多快",完全不携带纹理和光照信息,于是外观域差距被从源头掐断。为此作者用 Blender Cycles 渲染器搭了两套 3D 场景库:DynaVid-Human 把 Mixamo 的动作序列绑到可动画人物模型上,渲染动态人体运动的光流;DynaVid-Camera 则在复杂 3D 环境里用 NURBS 曲线插值关键相机位姿,造出快速视角变化的轨迹和对应光流。两套库最终交付的产物都是合成光流 \(\mathcal{F}^{syn}\),而不是合成 RGB 视频——这正是它和"直接用渲染视频训练"路线的根本分野。

2. 把光流塞进 HSV-RGB 编码,复用现成视频 VAE:省掉单独训一个光流编码器

运动生成器是在潜空间里跑扩散的,而预训练 VAE 只认 RGB 图像、不认光流场。与其为光流另起炉灶训一个专用 VAE,DynaVid 选择把光流"伪装"成一张 RGB 图。具体做法是先对光流向量归一化,用第 99 百分位数当缩放因子 \(s_f\)(避免极少数大位移把动态范围撑爆),再把归一化后的幅值映射到 HSV 的明度通道、方向映射到色相通道,最后转成 RGB 喂进现成视频 VAE 编码到潜空间。这样光流和真实视频共享同一个 VAE 与潜空间,既省了训练成本,也让后续"光流→视频"的条件注入天然对齐。

3. 两阶段解耦训练:运动从合成数据学,外观从真实数据学

有了干净的运动信号还不够,怎么训才能既学到剧烈运动、又不丢自然运动先验、还不污染外观,是这套框架真正的拼接点。运动生成器分两步训:先用从真实视频经 WAFT 估出的真实光流 \(\mathcal{F}^{real}\) 预训练,打底通用的运动统计;再用合成光流 \(\mathcal{F}^{syn}\) 微调去学那些剧烈动态。微调时每个 batch 都混入真实和合成光流——如果只灌合成数据,模型会过拟合到合成运动模式、把自然运动先验忘掉(消融里 Pexels FVD 从 1126 飙到 1886 就是这个后果)。运动引导视频生成器则完全只在真实视频-光流配对上训练,专心学"给定一段光流条件,怎么生成真实外观的画面",外观这条路上一帧合成画面都不碰。两个阶段都用 Flow Matching 目标,最终合成与真实在光流这层干净交接,做到运动来自合成、外观来自真实。

损失函数 / 训练策略

  • 运动生成器采用 Flow Matching 目标:\(\mathbb{E}[\|\hat{u}^{\mathcal{F}}(\mathcal{F}_{t_f}; c_{txt}, C, t_f) - v^{\mathcal{F}}\|_2^2]\)
  • 运动引导视频生成器同样采用 Flow Matching:\(\mathbb{E}[\|\hat{u}^{\mathcal{I}}(\mathcal{I}_{t_I}; c_{txt}, \mathcal{F}, t_I) - v^{\mathcal{I}}\|_2^2]\)
  • 数据过滤:通过光流循环一致性误差(阈值 1.19 像素,90 百分位数)过滤不准确的真实光流-视频对,提升运动引导视频生成器的运动保真度

实验关键数据

主实验 — 动态物体运动生成

方法 数据集 FVD↓ A-Qual↑ I-Qual↑ M-Smooth↑ T-Flick↑
CogVideoX-5B Pexels 1519.54 0.5646 0.6613 0.9844 0.9673
Wan2.2-5B Pexels 1172.02 0.5779 0.7235 0.9928 0.9883
DynaVid Pexels 1126.38 0.5807 0.7342 0.9900 0.9748
CogVideoX-5B DynaVid-Human 2238.68 0.5071 0.5562 0.9779 0.9565
Wan2.2-5B DynaVid-Human 1775.99 0.5389 0.6974 0.9904 0.9791
DynaVid DynaVid-Human 1351.94 0.5312 0.7352 0.9931 0.9864

主实验 — 极端相机控制

方法 数据集 mRotErr↓ FVD↓ A-Qual↑ I-Qual↑
AC3D DynaVid-Camera 1.1529 782.01 0.4483 0.5407
GEN3C DynaVid-Camera 1.1852 237.15* 0.3889 0.5659
DynaVid DynaVid-Camera 0.9289 674.72 0.4501 0.6713

消融实验

配置 Pexels FVD↓ DynaVid-Human FVD↓ 说明
Full model 1126.38 1351.94 完整模型
w/o 合成运动数据 1076.53 1878.98 动态场景严重退化 (+527 FVD)
w/o batch mixture 1885.74 1229.70 Pexels 严重退化,过拟合合成模式
w/ 合成视频(非光流) 1230.81 698.0* 产生人工外观,Pexels 退化

关键发现

  • 合成运动数据是动态场景性能的关键:去掉后 DynaVid-Human FVD 从 1352 暴涨到 1879,但在普通场景 Pexels 上变化甚微
  • 混合批次训练至关重要:仅用合成数据微调会导致严重过拟合,Pexels FVD 涨到 1886
  • 用光流而非渲染视频正确性:用合成视频训练虽然在合成测试集上 FVD 低,但产生人工外观,在真实场景 Pexels 上 FVD 明显上升
  • 运动引导视频生成器在 20dB 以上噪声时保持鲁棒性

亮点与洞察

  • 用光流代替渲染视频消除域差距:这个思路非常巧妙——光流天然只编码运动不编码外观,完美解决了"合成数据好用但长得假"的矛盾。这种"选择正确的中间表示来桥接合成与真实"的策略可迁移到其他跨域学习场景
  • 两阶段解耦框架:运动与外观的解耦设计使得可以对两者分别用最合适的数据源训练。这种解耦思路可用于任何需要分开建模内容和运动的生成任务
  • 数据过滤基于循环一致性:简单但有效的质量控制方法,90 百分位阈值就能显著提升运动保真度

局限与展望

  • 合成数据集以单人场景为主,多人动态运动场景生成效果较差
  • 依赖于光流估计器的质量,估计误差会影响训练数据的准确性
  • 未探索更复杂的运动表示(如场景流、3D 运动场),仅用 2D 光流可能限制 3D 一致性
  • 可以扩展合成数据集的多样性(多人交互、物体运动等)

相关工作与启发

  • vs Wan2.2-5B / CogVideoX: 这些通用视频生成模型受限于训练数据中动态运动的不足,DynaVid 通过引入合成运动数据弥补了这一数据缺口
  • vs HyperMotion: HyperMotion 依赖第一帧输入,容易产生人工外观;DynaVid 是纯 text-to-video 不需要额外输入
  • vs AC3D / GEN3C: 两者在极端相机运动下表现不佳,DynaVid 通过合成运动数据学到了快速视角变化的模式

评分

  • 新颖性: ⭐⭐⭐⭐ 用光流替代渲染视频消除域差距的思路新颖且有效
  • 实验充分度: ⭐⭐⭐⭐⭐ 消融全面,覆盖动态运动和相机控制两个场景,噪声鲁棒性也有验证
  • 写作质量: ⭐⭐⭐⭐ 逻辑清晰,动机阐述到位
  • 价值: ⭐⭐⭐⭐ 提供了一种利用合成数据增强视频生成能力的通用框架思路