Viggle-Animate:从单个重绘帧进行 H3 角色替换
Viggle-Animate 是 MiniMax H3 ref2va 的 331 亿参数微调版本,采用 DMD 蒸馏技术,通过单个重绘帧交换视频角色,仅需 3 次前向传播,每片段耗时 26 秒。
模型卡片中的预告图:重绘的角色接管驱动视频,同时运动、相机和时序保持不变。
工作原理
大多数角色替换 pipeline 基于中间表示构建:姿态骨架、分割遮罩、背景板、人脸裁剪。每个提取器都是另一个需要运行的模型,也是信息丢失的另一处来源。Viggle-Animate 不使用其中任何一项。由于参考帧是该片段自身的帧之一,其姿态、相机、构图和光照已与素材一致,因此下游无需再次对齐它们。模型从未被告知新角色是什么:无类别、无身份编码器、无用户文本提示。
两个输入进入视频阶段:驱动片段和一个重绘帧。文本编码器永远不会被加载。条件是随权重一起提供的一个冻结 embedding,每次渲染均相同。
速度优势体现在两方面。一旦重绘帧存在,便无需运行其他内容,且采样器本身也被蒸馏:跨两个教师模型的联合蒸馏(按噪波水平划分),其中微调版监督决定替换的高噪波端,原始 MiniMax H3 监督决定细节和纹理的低噪波端。默认值为 --steps 4 --flow-shift 3,这定义了四个 Sigma 边界,因此对应三次前向传播。团队指出四步是操作点而非捷径:蒸馏后的模型渲染比其教师更清晰,更多步骤会导致过度锐化。
与 Wan2.2-Animate 的比较
在相同的 B200、相同源视频、相同分辨率和帧数上进行匹配比较:
| Viggle-Animate | Wan2.2-Animate-14B | |
|---|---|---|
| 输入 | 驱动视频 + 一个重绘帧 | 驱动视频 + 角色图像,加上预处理步骤生成姿态、面部、遮罩和背景轨迹 |
| 渲染(权重加载后) | 26 秒 | 160 秒 |
| 前向传播次数 | 3 | 40 (20 步 x 2 块) |
| 参数 | 331 亿 | 173 亿 |
这意味着每渲染快 6.1 倍,仅采样就快 10.3 倍,且 Wan 的预处理步骤甚至未计入其 160 秒内。发布的对比片段显示,在快速运动中差距最大,此时 Wan 出现涂抹,而 Viggle-Animate 能将姿态落在正确的帧上。如果您想直接评估输出,可以访问 演示空间 和 viggle.ai/h3。
泛化至人类之外
因为循环中没有任何内容假设角色是人,所以它能动画化的范围受限于你能绘制的内容。模型卡片展示了有耳朵和鳍的动物在驱动片段没有的肢体上移动,一个保持风格边界的陶土人偶,以及一架画出的机翼在整个片段中都绑定在演员手臂上的客机。
重绘参考和输出:绘画放置解剖结构,渲染将其动画化,仿佛它一直就在那里。
来自模型卡片的已知限制:特写镜头中唇形同步较弱,多角色场景和剪辑镜头质量下降,且模型继承图像编辑,因此当绘画与视频不一致时,视频胜出。针对这三种情况的一款显著更好的模型已经在训练中。
可用性
- 权重: Viggle/Viggle-Animate 托管于 Hugging Face,遵循 MiniMax H3 社区许可证。包含 331 亿参数的 bf16 微调版本(14 分片)以及 2.5GB 秩-128 DMD2 蒸馏 LoRA;VAE、音频 VAE 和调度器从您自己的基础模型副本加载。
- 推理: 基于 diffusers,仓库中包含
inference/sample.py,无需对上游 pipeline 进行分支或打补丁。单张 80GB 卡在 bf16 下不够用(480x832 / 124 帧渲染峰值达 80.1 GiB):请使用 96GB+ 卡或--offload。 - 暂无原生 ComfyUI 支持: 使用官方 Python 推理路径。该 LoRA 是针对微调变换器的增量,因此将其加载到原始 H3 ref2va 权重上会产生乱码。
- 演示: Viggle/viggle-animate Space 和 viggle.ai/h3。
评论
使用 GitHub 登录后即可参与讨论。