跳转至

MIMO: Controllable Character Video Synthesis with Spatial Decomposed Modeling

会议: CVPR 2025
arXiv: 2409.16160
代码: https://menyifang.github.io/projects/MIMO/index.html
领域: 视频生成 / 3D视觉
关键词: 角色视频合成, 空间分解建模, 扩散模型, 人体动作迁移, 场景交互

一句话总结

MIMO 提出一种基于空间分解建模的角色视频合成框架,将 2D 视频按 3D 深度分层为人物、场景和遮挡物三个空间组件,通过解耦编码和组合解码实现了对角色身份、3D 运动和交互场景的灵活控制,在复杂运动和场景交互上显著超越先前方法。

研究背景与动机

  1. 领域现状:角色视频合成是计算机视觉和图形学的基础问题,3D 方法(NeRF/3DGS)需要多视角采集和逐案例训练,2D 方法利用预训练扩散模型已能从单张参考图生成角色动画。
  2. 现有痛点:Animate Anyone、MimicMotion、Champ 等 2D 方法只关注简单 2D 动作(如正面跳舞),在复杂 3D 运动(如极端变形、自遮挡)和场景交互(人与物体的遮挡关系)场景下表现很差。
  3. 核心矛盾:现有方法在 2D 特征空间中使用不充分的视频属性解析器,忽略了视频场景固有的 3D 空间层次结构——前景遮挡、中间人物、后景场景实际上分属不同深度层。
  4. 本文目标 (1) 如何用更好的 3D 表示来编码人体运动?(2) 如何将身份与动作完全解耦?(3) 如何在合成中实现场景遮挡感知?
  5. 切入角度:视频本质上由不同深度层的空间组件构成,将 2D 帧像素提升到 3D 空间,按深度层分解并独立编码,就能获得更丰富的控制信号。
  6. 核心 idea:利用单目深度估计将视频按 3D 深度分解为人物/场景/遮挡三层,分别编码为身份码、运动码和场景码,作为扩散解码器的组合条件。

方法详解

整体框架

输入一个角色视频片段,MIMO 通过以下步骤进行重建学习:(1) 用单目深度估计器将每帧像素提升到 3D,按深度分层提取人物、场景、遮挡物三个空间组件;(2) 人物组件进一步解耦为身份编码 \(\mathcal{C}_{id}\) 和运动编码 \(\mathcal{C}_{mo}\);(3) 场景和遮挡组件用共享 VAE 编码器嵌入并级联为完整场景编码 \(\mathcal{C}_{so}\);(4) 将所有编码作为条件注入扩散解码器进行视频重建。推理时,用户可自由组合不同来源的各属性编码来合成新视频。

关键设计

  1. 层次化空间分解 (Hierarchical Spatial Layer Decomposition):

    • 功能:将视频帧自动分解为人物层、场景层和遮挡层三个空间组件。
    • 核心思路:先用单目深度估计器获取每帧深度图,然后通过人体检测器提取主要人物,再用视频跟踪器获取 masklet。接着找到平均深度比人物层更小(更近)的物体作为遮挡层,剩余部分为场景层。通过 \(v^i = v \odot \mathcal{M}^i\) 得到各组件的视频。
    • 设计动机:不同于先前方法直接学习整个 2D 帧特征,分层建模使网络能学到3D感知的层级组合(前景遮挡在人物前面,背景在后面),因此能自然处理人-物交互场景中的遮挡关系。
  2. 结构化运动编码 (Structured Motion Code):

    • 功能:提供比 2D 骨架更有表现力的 3D 运动表示。
    • 核心思路:定义一组 6890 个可学习潜在编码,锚定到 SMPL 人体模型的顶点上。对每帧估计 SMPL 参数后,将这些编码随人体姿态变换并投影到 2D 平面,通过可微分光栅化获得连续的 2D 特征图 \(\mathcal{F}_t\),再由姿态编码器嵌入为运动编码。这样在同一组可识别编码与不同帧的 posed 2D 渲染之间建立了稳定对应。
    • 设计动机:2D 骨架难以表达 3D 空间运动中的遮挡关系,Champ 的 3D maps(法线图/深度图等)虽有改进但缺乏身体部位的密集标识。本方法提供了结构化的、可识别的稠密运动信号,显著提高对极端 3D 运动的泛化性。
  3. 规范化外观迁移 (Canonical Appearance Transfer):

    • 功能:将身份信息与动作信息完全解耦。
    • 核心思路:利用预训练的人体重定位模型将 posed 人体图像变换到标准 A-pose 的规范化外观图像,然后用 CLIP 图像编码器提取全局特征、reference-net 提取局部特征,组合为身份编码 \(\mathcal{C}_{id}\)
    • 设计动机:先前方法随机从视频中选一帧做外观参考,帧间高度相似的姿态导致外观和运动不可避免地纠缠。变换到规范姿态后消除了这种耦合,使得学习更高效,并消除了手脚合成混淆的问题。

损失函数 / 训练策略

训练采用标准扩散噪声预测损失:\(\mathcal{L} = \mathbb{E}[\|\epsilon - \epsilon_\theta(x_t, c_{id}, c_{so}, c_{mo}, t)\|^2_2]\)。使用 SD 1.5 预训练权重初始化 U-Net 和 reference-net,AnimateDiff 初始化运动模块。冻结 VAE 和 CLIP 编码器,训练 U-Net、姿态编码器和 reference-net。在 8 张 A100-80G 上训练约 50k 迭代,24 帧视频,batch size 8。

实验关键数据

主实验

训练数据集 HUD-7K 包含 5K 真实视频 + 2K 合成视频。测试集为100个包含舞蹈、运动、电影等多样内容的视频。

方法 PSNR↑ SSIM↑ LPIPS↓ FVD↓
Animate Anyone 21.003 0.722 0.264 304.3
Mimic-Motion 20.688 0.731 0.343 289.2
Champ 21.044 0.724 0.312 412.5
MIMO (本文) 25.210 0.883 0.125 221.4

PSNR 提升至少 4.16,SSIM 提升至少 0.152,全面领先。

消融实验

配置 PSNR↑ SSIM↑ LPIPS↓ FVD↓
Full model 25.210 0.883 0.125 221.4
w/o SDM (无空间分解) 22.148 0.762 0.231 268.5
w/ 2D skeleton 24.326 0.842 0.186 237.2
w/ 3D maps 24.402 0.844 0.203 278.1
w/o CA (无规范外观) 24.918 0.871 0.148 223.1

关键发现

  • 空间分解建模贡献最大:去掉 SDM 后 PSNR 下降 3.06,证明 3D 感知的分层编码是核心。
  • 结构化运动编码优于 2D 骨架和 3D maps:分别带来约 0.9 和 0.8 的 PSNR 提升,特别是在极端 3D 运动和自遮挡场景下。
  • 规范化外观迁移有效缓解手脚混淆:去掉后 PSNR 降 0.3,且定性结果显示手脚合成混乱明显加重。
  • 在场景交互(人-物遮挡)和大相机运动场景下表现尤其突出。

亮点与洞察

  • 3D深度分层思想非常巧妙:不需要真正的 3D 重建,用单目深度估计 + 层级 mask 就能将视频分解为语义明确的空间组件,是一种轻量级的 3D 感知方案,可迁移至任何需要场景层次理解的视频生成任务。
  • SMPL 顶点锚定可学习编码的运动表示方式值得借鉴:通过在 3D 人体表面定义可学习潜码,既保留了结构信息又实现了端到端学习,优于手工设计的 2D/3D 姿态表示。
  • 框架实现了真正的多属性可控合成(角色/运动/场景),且支持视频角色替换这一全新编辑任务。

局限与展望

  • 依赖 SMPL 参数估计的准确性,对非标准人体(极胖/极瘦/非人形角色)可能失效。
  • 仅训练了 512 分辨率的视频,高分辨率扩展性未验证。
  • 24 帧的视频片段长度限制了长视频生成的连贯性。
  • 遮挡层的检测依赖深度比较的简单规则,对复杂多人场景可能不够鲁棒。

相关工作与启发

  • vs Animate Anyone/Champ:它们直接在 2D 空间学习全帧特征,仅用 2D 骨架或简单 3D maps 控制运动,无法处理场景交互。MIMO 通过空间分解和结构化运动编码全面超越。
  • vs MimicMotion:MimicMotion 用置信度感知姿态引导提升质量,但仍停留在 2D 空间,对 3D 运动泛化性不足。
  • vs HumanNeRF/NeuMan:3D 方法需要逐案例训练,MIMO 用 2D 扩散模型实现了可泛化的角色合成。

评分

  • 新颖性: ⭐⭐⭐⭐ 空间分解建模和结构化运动编码都是有效的新设计
  • 实验充分度: ⭐⭐⭐⭐ 对比和消融齐全,但测试集仅100个视频略少
  • 写作质量: ⭐⭐⭐⭐ 结构清晰,图示详尽
  • 价值: ⭐⭐⭐⭐ 为可控角色视频合成提供了强有力的基准方法

相关论文