如何快速上手Viggle-Animate:从下载到第一个换人视频的4步教程
Viggle-Animate 是一款开源的AI 视频换人(角色替换)模型:你只需要一段"驱动视频"和一张在该视频画面中重绘好的单帧图片,它就能在 3 次前向传播内完成整段视频的角色替换——不需要姿态估计、分割掩码、人脸追踪或文本编码器。本文是一份面向新手的完整教程,带你用 4 步从下载权重走到生成第一个 AI 换人视频。
为什么选 Viggle-Animate:3 个核心亮点
在开始之前,先了解它为什么值得一试:
| 亮点 | 说明 |
|---|---|
| ⚡ 极速 | 基于 DMD 蒸馏,--steps 4即 3 次前向传播,单张 B200 显卡渲染 124 帧(约 5.2 秒)仅需26 秒 |
| 🎯 极简输入 | 只有 2 个输入:驱动视频 + 一张重绘帧。没有中间表示,没有额外模型要跑 |
| 🎨 不限角色 | 模型不知道"角色必须是人",动物、机器人甚至飞机都能换,画得出来就动得起来 |
核心原理:外观只来自你重绘的那一帧,几何动作只来自驱动视频,两者天然对齐,无需任何下游模块再做对齐。
4步快速上手总览
| 步骤 | 内容 | 预计耗时 |
|---|---|---|
| 第 1 步 | 克隆仓库 + 下载基础模型依赖 | 视带宽而定(权重较大) |
| 第 2 步 | 安装 Python 推理环境 | 1~3 分钟 |
| 第 3 步 | 准备驱动视频与重绘帧 | 几分钟(需图像编辑工具) |
| 第 4 步 | 运行推理命令,输出换人视频 | 权重加载约 21 秒 + 渲染约 26 秒/镜头 |
第 1 步:下载模型权重与基础模型依赖
Viggle-Animate 仓库只包含 transformer 权重和 LoRA,VAE、音频 VAE 与调度器需要来自基础模型MiniMaxAI/MiniMax-H3的本地副本。推理实际只占用其 269 GB 中的约11 GB,因此只需下载指定子集即可。
1)克隆本项目仓库:
git clone https://gitcode.com/hf_mirrors/Viggle/Viggle-Animate2)下载基础模型所需的最小子集(--include中的assets/ref2va.mp4是演示脚本需要的样例视频):
hf download MiniMaxAI/MiniMax-H3 --local-dir ./MiniMax-H3 \ --include "modular_model_index.json" "vae/*" "audio_vae/*" \ "scheduler/*" "audio_scheduler/*" "assets/ref2va.mp4"仓库里都有什么?
- transformer/ —— 33.1 B 参数的 bf16 全量微调权重,共 14 个分片,是基础模型
ref2vatransformer 的完整替换 - lora/ —— rank 128 的 DMD2 蒸馏 LoRA(2.5 GB),正是它把采样器压缩到 3 次前向传播。⚠️ 注意:它必须加载在本仓库的微调权重上,加载到原版
transformer_ref上会产生乱码 - assets/fixed_embed_fwd_anyframe.pt —— 冻结的文本条件张量,推理时永远不会加载文本编码器,其内容对应可读的固定提示词 assets/fixed_prompt.txt
- inference/sample.py —— 推理脚本(Apache 2.0 许可)
第 2 步:安装推理环境并确认显卡要求
环境依赖非常精简,一行命令装完:
pip install -r requirements.txtrequirements.txt 中包含 PyTorch、diffusers(固定到d6726f3这个经过验证的 commit,因为它比任何正式发布版都新)、transformers 与 av,无需任何 fork 或补丁。
🔥 显卡显存要求(重要):
| 显卡档位 | 能否运行 | 说明 |
|---|---|---|
| ≥ 96 GB 显存 | ✅ 直接跑 | transformer 常驻 62 GiB,480×832 / 124 帧渲染峰值约 80.1 GiB |
| 单张 80 GB | ❌ 不够 | 峰值会超 80 GiB |
| 小显存 / 消费级 | ✅ 加--offload | 以 5 块为一组从 CPU 流式加载,常驻约 12 GB,但速度慢很多 |
如果显存不足,运行推理时加上--offload参数即可降级运行。
第 3 步:准备驱动视频与重绘帧
这是整条流水线中唯一需要"人工创作"的环节,也是出片质量的关键。
1)从驱动视频中抽出一帧(用你视频里角色正面、清晰、无遮挡的一帧,不必是第一帧):
ffmpeg -ss 1.5 -i driving.mp4 -frames:v 1 ref.png2)在任意图像编辑工具中重绘这一帧:把原角色替换成新角色。官方推荐的工作流是直接把这一帧交给gpt-image一类的图像模型,用一句话描述替换内容——现代图像模型已经能做好姿态迁移、光影匹配和背景保留。
重绘帧的 3 个技巧:
- ✅ 明确说出"改什么"和"绝不能改什么":姿态、手部、道具、构图、背景、光线
- ✅ 新角色的新肢体(比如给角色画上翅膀)要"绑"到真实肢体上,替换才稳
- ❌ 避免自动重构图的编辑器——它会和驱动视频的动作打架
输出分辨率会自动跟随驱动视频,注意两个边长都必须是32 的倍数。
第 4 步:运行推理,生成你的第一个换人视频
一切就绪,一行命令出片:
python inference/sample.py \ --model-dir ./MiniMax-H3 \ --cond driving.mp4 \ --ref ref.png \ --out swapped.mp4参数解读(来自 inference/sample.py):
| 参数 | 作用 | 默认值 |
|---|---|---|
--cond | 驱动视频:提供动作、运镜、背景与光线 | 必填 |
--ref | 重绘帧:决定"换进去的是谁" | 必填 |
--steps | 采样步数 | 4(即 3 次前向传播) |
--num-frames | 渲染帧数(24 fps,124 帧≈5.2 秒) | 124 |
--seed | 随机种子 | 42 |
--audio | 锁定真实音轨,让嘴型跟对白同步 | 不启用(静音) |
🎬 关于嘴型同步(Lip-sync):默认配置下模型生成的音轨是静音,嘴型无话可说。如果驱动视频里有说话声,加一个参数即可让嘴型跟上真实对白:
python inference/sample.py \ --model-dir ./MiniMax-H3 \ --cond driving.mp4 --ref ref.png \ --audio driving.mp4 \ --out swapped.mp4🧪 不想准备素材?先跑官方自检 Demo
examples/demo.sh 会用基础模型自带的ref2va.mp4构建驱动片段,配合仓库自带的重绘帧 examples/media/reference.png 端到端跑一遍完整替换,是验证 LoRA 是否正确加载的最快方式:
./examples/demo.sh ./MiniMax-H3对比输出与仓库自带的 examples/media/output.mp4:结果应是"老妇人抱着小黑羊"。如果出片变成了原视频里的年轻男子,说明 LoRA 没加载;如果是噪声,说明权重有问题。
常见问题与使用建议
Q:能不能多调大一点--steps提升画质?不建议。--steps 4是蒸馏模型的工作点而非"偷懒设置"——蒸馏后的模型渲染比教师模型更锐利,提高步数反而会过度锐化。
Q:复杂场景效果如何?多角色同框、角色间近距离互动、以及带镜头切换的长镜头仍是难点,质量会有明显下降,官方表示正在训练更强的模型。
Q:为什么视频里"画出来但没画到位"的部分没被替换?模型只继承你重绘帧里包含的信息:画里没画的它不会补,画与视频冲突时以视频动作为准。外观来自重绘帧,但形体来自驱动姿态。
Q:许可协议要注意什么?权重适用 LICENSE(MiniMax H3 社区许可),改动清单见 MODIFICATIONS.md;inference/ 与 examples/ 代码为 Apache 2.0。再分发或用于商业产品前请先阅读许可条款。
📌 合规提醒:模型无法验证身份与授权,请勿在未获本人同意的素材上运行,并主动标注 AI 生成内容。
写在最后
到这里,你的第一个 Viggle-Animate 换人视频应该已经躺在swapped.mp4里了。它的核心体验可以总结为一句话:画一张帧,跑一行命令,等半分钟。从下载权重到出片,整个流程只有两个输入文件和一次推理调用,是"画什么、换什么"创作自由度与工程复杂度之间的一个极佳平衡点。动手试试吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考