MultiAnimate: Pose-Guided Image Animation Made Extensible¶
会议: CVPR 2026
论文: CVF Open Access
代码: 项目页 https://hyc001.github.io/MultiAnimate/(代码待确认)
领域: 视频生成
关键词: 姿态引导动画, 多人物动画, 身份一致性, 扩散 Transformer, 可扩展训练
一句话总结¶
MultiAnimate 在 Wan2.1 DiT 视频生成框架上引入「Identifier Assigner + Identifier Adapter」一对模块,把每个人物的 tracking mask 编成结构化标签注入 DiT,再配合「从可学习标签库随机采样身份」的训练策略,让仅在双人数据上训练的模型也能稳定生成 3~7 人、身份不串、遮挡合理的舞蹈动画。
研究背景与动机¶
领域现状:姿态引导的人物图像动画(pose-guided human image animation)给一张参考图 + 一段骨架姿态序列,合成一段该人物按姿态运动的视频。近两年随着扩散模型、尤其是 DiT(Diffusion Transformer)视频骨干(Hunyuan-Video、Wan-Video)的成熟,单人物动画在身份保持和动作对齐上已经做得相当好。
现有痛点:绝大多数方法只服务单人物场景。把它们「自然地」推广到多人物时会塌:作者观察到两类失败——(1) 身份混淆(identity confusion),两个人在交互后被换脸/换身份;(2) 不合理遮挡(implausible occlusions),人物穿插时空间关系错乱(见论文 Fig.2a,UniAnimate-DiT 直接扩到双人就崩)。更糟的是,即便专门在双人数据上 fine-tune,模型也绑死了人数:训练时是两人,推理给三人就身份丢失(Fig.2b),想支持更多人就得重新采集对应人数的数据再训,成本极高甚至不可行。
核心矛盾:多人物动画里,姿态与身份之间的关联是欠定的。论文用一个很形象的例子说明(Fig.3):两个人顺时针转 180° 交换位置后,"继续顺时针转 180° 回到原位"和"逆时针转 180° 回到原位"会产生几乎完全相同的姿态序列,但对应两条不同的运动轨迹。光有姿态序列定不下来谁是谁、该往哪走——必须额外提供 per-person 的空间线索(tracking mask)来把"人 ↔ 轨迹"的对应锁死。同时还存在可扩展性矛盾:固定人数训练 vs. 希望泛化到任意人数。
本文目标:设计一个既鲁棒(多人交互下保持各自身份与视觉保真)又可泛化(推理人数能超过训练人数)的人物动画框架。
切入角度:既然姿态本身欠定,就给每个人显式分配一个唯一标识符(identifier),贯穿所有帧、嵌入 DiT 特征空间,让模型始终知道"哪个 token 属于哪个人";再用一个"随机采样身份"的训练把标识符训练成彼此可区分,从而推理时凭空多出的身份也能被自然区分开。
核心 idea:用 mask 驱动的标识符编码(Identifier Assigner 把多张 mask 合成结构化标签 → Identifier Adapter 把标签注入 DiT)取代"逐人提特征再相加"的做法,配合从大小为 n 的标签库随机激活通道的可扩展训练,做到「双人训练、多人泛化」。
方法详解¶
整体框架¶
给定参考图 \(I_{ref}\in\mathbb{R}^{3\times H\times W}\)、驱动姿态序列 \(P\in\mathbb{R}^{T\times3\times H\times W}\)、以及一组 per-person tracking mask \(\{M_i\}_{i=1}^{n}\)(\(M_i\in\mathbb{R}^{T\times1\times H\times W}\)),目标是生成视频 \(V_{tar}\in\mathbb{R}^{T\times3\times H\times W}\),要同时满足三点:保住 \(I_{ref}\) 里每个人的身份、与姿态 \(P\) 的运动对齐、与各 mask 的空间关系对齐。
整个 pipeline 建在 Wan2.1 I2V 架构上,由两条流组成、最后在 latent token 上逐元素相加融合:
- 参考流(Reference Stream):参考图 \(I_{ref}\) 过 VAE Encoder 得 latent;从 \(I_{ref}\) 抽出的参考姿态过一个 2D 卷积堆叠的 Image Encoder;二者相加后拼接随机噪声、patchify 成输入 token——负责"长什么样"(外观/身份)。
- 运动流(Motion Stream):姿态序列 \(P\) 过 3D 卷积 Pose Encoder 捕捉时序动作;tracking mask \(\{M_i\}\) 先过 Identifier Assigner 合成结构化标签,再过 Identifier Adapter 建模每人位置特征与人际空间关系;编码后的姿态与 mask 特征相加,再与参考流的 token 逐元素相加——负责"怎么动、谁在哪"。
融合后的 token 过 \(B\) 个 Wan-DiT Block(self-attention + cross-attention),最后 Wan-Decoder 解码出目标视频。两个新模块 Identifier Assigner / Adapter 是全部创新所在,其余(VAE、Pose Encoder、DiT 骨干)沿用 Wan/UniAnimate-DiT。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
R["参考图 + 参考姿态"] --> RS["参考流<br/>VAE+2D编码→patch token"]
P["姿态序列"] --> MS["运动流<br/>3D Pose Encoder"]
M["per-person tracking masks"] --> IA["Identifier Assigner<br/>多mask→结构化标签map"]
IA --> ID["Identifier Adapter<br/>标签→DiT特征空间"]
MS --> ADD["逐元素相加融合"]
ID --> ADD
RS --> ADD
ADD --> TS["可扩展训练策略<br/>标签库随机激活通道"]
TS --> DIT["Wan-DiT Blocks × B"]
DIT --> OUT["Wan-Decoder<br/>→多人物视频"]
关键设计¶
1. Identifier Assigner:把一堆 per-person mask 压成一张带身份编号的结构化标签图
痛点直击"逐人相加"方案的两个毛病:并发工作的做法是给每个人单独抽姿态+mask 特征、绑定后求和聚合,这既要为每个人额外抽一套姿态序列(数据处理麻烦),求和又会把不同人的空间关系糊掉。Identifier Assigner 反其道而行:它不分头处理,而是把所有 mask 统一进一张标签图 \(L\in\mathbb{R}^{H\times W}\)——背景像素记 0,人物 A、B 的 mask 中所有大于 0 的像素分别赋两个来自 Identity Label Bank 的、互不相同的非零标识符 \(a,b\),得到取值在 \(\{0,a,b\}\) 的标签图。再对 \(L\) 做 one-hot 编码,得到二值张量 \(\hat{L}\in\{0,1\}^{3\times H\times W}\),三个通道分别对应背景与两个人物、各自编码其空间占位。这样一张图就把"谁占哪块区域、人和人怎么挨着/遮挡"显式地保留下来,给后续生成提供了清晰的空间先验——这是它比"求和糊一起"更能保住人际空间关系的根本原因。
2. Identifier Adapter:把结构化标签注入 DiT 特征空间,建模人际交互
Assigner 产出的 \(\hat{L}\) 还停留在像素标签层面,跟 DiT 的 latent 特征对不上。Identifier Adapter 由堆叠的 3D 卷积层构成,吃进 \(\hat{L}\),把这份"谁在哪"的标签转换到 DiT 骨干的特征空间,同时建模每人的位置特征和彼此的邻近/遮挡等交互关系。它输出的身份线索随后与姿态特征相加、再融进 latent token,于是 DiT 在去噪每一帧时都"看得见"每个 token 归属哪个人。正是这种显式身份编码贯穿所有帧,让模型能在复杂多人交互中持续追踪各自身份,从源头上缓解了身份混淆。Adapter 的第一层 Conv3D 还内嵌了下面要讲的 Identifier Weight Bank,是可扩展训练的承载体。
3. 可扩展训练策略:标签库随机采样 + 权重库通道激活,破解对称性、解锁人数泛化
这是让"双人训练→多人泛化"成立的关键,也是为修两个具体毛病而生。第一个毛病是对称性问题(symmetry issue):早期训练效果不错,但一旦推理时给人物分配的标签与训练时不同,结果就崩(Fig.5)。原因是模型偷懒——它把"某个人的位置"绑死到了 Adapter 的某个固定通道上,而不是绑到这个人的 tracking mask 上,这与"让模型认 mask、不认通道"的设计目标相悖。第二个毛病是人数固定:双人数据训出来的模型扩不到更多人。
解法统一在一个机制里:设推理最多支持 \(n\) 人,就在 Identifier Adapter 的第一层 Conv3D 里放一个存有 \(n\) 个标识符通道的 Identifier Weight Bank。双人训练时,每次迭代只随机从大小为 \(n\) 的 Identity Label Bank 里给两个人各抽一个标签(含背景共激活 3 个通道),并用这两个标签去激活 Weight Bank 中对应的权重。训练收敛时,尽管数据自始至终只有双人视频,但 \(n\) 个通道都被见过、都被训练成彼此可区分;推理时哪怕引入比训练更多的人和标识符,模型也能自然区分、维持各自身份。同时,因为标签是随机分配的,网络被逼着把人物与其空间 mask而非固定通道关联,对称性问题随之缓解。一举两得。
4. 用现代视频模型合成高质量训练数据(Gen-dataset)
真实多人舞蹈数据在帧质量上有局限,作者用 Wan 2.2 视频生成器合成了 2079 段五秒、含两到三人、场景多样的视频作为补充(Gen-dataset)。它既可单纯用作评测模型对不同场景的适应性,也可选择性地并入训练进一步增强鲁棒性。实验显示并入它能显著改善时序一致性(如手持武器不消失)和动态背景(背景随人物运动自然变化),让镜头过渡更真实。
损失函数 / 训练策略¶
两阶段 + 扩展版:以 Wan2.1 I2V 为底,Image/Pose Encoder 与 LoRA 用 UniAnimate-DiT 预训练权重初始化。Stage 1 在 Swing Dance 训练集上训 40 epoch / 7000 步,支持最多 3 人;Stage 2 在 Gen-dataset 上再训 3 epoch / 2400 步。另有 Extended 模型:在 Swing Dance 上训 24 epoch(4200 步),支持最多 7 人。训练用 2×A100 80GB,每卡 batch=1,学习率 \(1\times10^{-4}\)。姿态用 DWPose 抽、tracking mask 用 Sa2VA 抽。
实验关键数据¶
主实验¶
在 Swing Dance 测试集、Gen-dataset、以及未见过的网络舞蹈视频(3~7 人)上与 SOTA 对比,指标含 PSNR/SSIM/L1/LPIPS(帧级质量)与 FVD/FID-VID(视频级质量)。
| 数据集 | 方法 | PSNR↑ | SSIM↑ | LPIPS↓ | FVD↓ | FID-VID↓ |
|---|---|---|---|---|---|---|
| Swing Dance | UniAnimate-DiT | 16.15 | 0.619 | 0.427 | 891.89 | 27.71 |
| Swing Dance | VACE | 11.15 | 0.311 | 0.563 | 763.75 | 29.88 |
| Swing Dance | Ours (Stage 1) | 19.40 | 0.687 | 0.335 | 648.84 | 22.50 |
| Unseen videos | UniAnimate-DiT | 17.94 | 0.751 | 0.286 | 624.45 | 71.24 |
| Unseen videos | VACE | 17.24 | 0.714 | 0.279 | 922.66 | 78.93 |
| Unseen videos | Ours (Extended) | 23.24 | 0.857 | 0.185 | 358.74 | 43.12 |
在以双人复杂交互为主的 Swing Dance 上,本文在全部指标上领先;在场景多样但动作简单的 Gen-dataset 上不额外训练也保持强势(仅 LPIPS/FID-VID 略逊,作者归因于对高多样性环境适应稍弱);在交互更频繁、场景更难的 Unseen 视频上优势最明显——Extended 模型 FVD 从次优的 624.45 降到 358.74,证明从双人训练数据外推到复杂多人场景的泛化力。
消融实验¶
| 配置 | 结论 | 说明 |
|---|---|---|
| Addition-driven(逐人特征求和) | 双人 OK、多人崩 | 充分训练后能处理双人,但扩不到更多人 |
| Mask-driven(本文 Assigner+Adapter) | 双人多人都稳 | 保住 per-person 空间组织,多人可扩展性强 |
| w/o mask-driven design | 时序一致性差、难分三人 | 高亮人物维持不住一致性 |
| w/ mask-driven design | 一致 + 可外推三人 | 仅双人训练即可在生成视频中区分三人 |
单人兼容性(TikTok 数据集,模型未在其上训练):
| 方法 | PSNR↑ | SSIM↑ | LPIPS↓ | FVD↓ | FID-VID↓ |
|---|---|---|---|---|---|
| DisPose | 17.17 | 0.691 | 0.261 | 615.27 | 64.74 |
| UniAnimate-DiT | 17.76 | 0.781 | 0.337 | 649.30 | 50.16 |
| Ours | 23.68 | 0.867 | 0.250 | 342.48 | 41.85 |
关键发现¶
- mask 驱动 vs. 加法驱动是全文最核心的对照:加法驱动「largely 避开」了对称性问题,但代价是扩不出训练人数;mask 驱动靠结构化标签保住空间组织,换来真正的可扩展性——这正是"双人训练、多人泛化"能成立的根。
- 随机标签采样同时治两病:既让 \(n\) 个身份通道都被训练成可区分(解锁人数泛化),又逼模型认 mask 不认固定通道(缓解对称性)。这是一个机制解两个问题的漂亮设计。
- Gen-dataset 的价值在动态细节:去掉它时手持武器会在运动中消失、背景近乎静止;加上后这些动态细节得以保持,说明合成数据主要补的是 motion-scene 交互的时序一致性。
- 单人不退化反提升:引入 mask 驱动增加了训练复杂度,但单人任务上反而显著超过专做单人的基线(TikTok 上 PSNR 23.68 vs UniAnimate-DiT 17.76),说明显式身份建模对单人也有正迁移。
亮点与洞察¶
- "姿态-身份欠定"这个问题提得漂亮:用顺/逆时针转 180° 产生几乎相同姿态序列的例子,把"为什么多人动画必须要 tracking mask"讲得一针见血——这是全文动机的灵魂,也解释了为什么单人方法天然扩不动。
- 随机标签采样训练是可复用的 trick:用一个比训练实例数更大的"身份库"+ 随机激活通道,让模型学到"区分任意多个实体"的能力而非"记住固定 K 个",这种思路可迁移到任何"训练实例数 < 推理实例数"的可扩展生成/分割任务(如可变数量目标的布局生成、多实例编辑)。
- 结构化标签图 + one-hot 通道把"多 mask 融合"从特征求和升级成空间显式编码,避免了求和把人际关系糊掉的根本缺陷,是"少即是多"的设计——一张标签图替掉一堆逐人特征分支。
局限与展望¶
- 训练数据偏窄:核心训练集 Swing Dance 是双人舞蹈,场景/服饰/交互模式相对单一;Gen-dataset 又是 Wan 2.2 合成的,可能带合成偏置。论文也承认在高多样性的 Gen-dataset 上 LPIPS/FID-VID 略逊,说明对开放场景适应仍有限。
- 泛化人数虽宣称可达 7 人,但 7 人级别缺定量评测:Extended 模型的定量表只到 Unseen videos 的综合指标,3~7 人不同人数下的逐级退化曲线没有给出,难判断人数增多时质量掉多少。
- 依赖外部 mask/姿态提取器:tracking mask 来自 Sa2VA、姿态来自 DWPose,多人重度遮挡下这些上游若出错,错误会直接传导进生成。论文未分析上游噪声的鲁棒性。
- 可改进方向:把"随机标签库"思路与身份外观 embedding(如人脸/服饰特征)结合,或许能从"区分谁是谁"进一步到"指定谁是谁",支持更可控的多人编辑。
相关工作与启发¶
- vs UniAnimate-DiT:本文以它为底座(Encoder/LoRA 都用其权重初始化),区别在 UniAnimate-DiT 面向单人、直接扩双人就身份混淆;本文加 Identifier Assigner/Adapter + 随机标签训练,做到多人可扩展,并在单人任务上反超它。
- vs DanceTogether:同样联合用 mask 与 pose 特征建模多人空间关系,但(按本文 Fig.4/消融语境)那类并发工作走"逐人抽特征再求和"的加法路线,扩不出训练人数;本文用 mask 驱动的结构化标签换来真正的人数泛化。
- vs Follow-Your-Pose v2 / StableAnimator / Champ:这些靠光流、深度、SMPL 3D 先验或专用人脸编码器增强单人可控性与身份;本文不堆额外模态先验,而是聚焦"多人身份消歧 + 可扩展"这个被忽视的维度。
评分¶
- 新颖性: ⭐⭐⭐⭐ 首个建在现代 DiT 视频骨干上、可扩展到训练人数之外的多人物动画框架;"随机标签库"训练破解对称性与人数泛化的设计巧妙。
- 实验充分度: ⭐⭐⭐⭐ 三数据集主对比 + mask vs 加法 + 模块消融 + 单人兼容齐全;但 3~7 人逐级定量、上游噪声鲁棒性缺位。
- 写作质量: ⭐⭐⭐⭐ 用转 180° 的例子把欠定问题讲得极清楚,pipeline 与两病-一策的逻辑顺畅;个别图注/拼写有小瑕疵。
- 价值: ⭐⭐⭐⭐ "双人训练、多人泛化"显著降低多人数据采集成本,对影视/数字人多角色生成有直接实用价值。