LivePortrait高效AI人像及动物动画

LivePortrait:高效人像动画,具有拼接和重定位控制功能


郭建珠 1*†张丁芸 1,2*刘晓强 1钟智舟 1,3张渊 1万鹏飞 1张迪 1
1 快手科技  2 中国科学技术大学  3 复旦大学 
* Equal contributions Project lead

Windows 一键安装包  HuggingFace 在线体验

LivePortrait 效果展示 GIF

🔥 更多效果,请访问我们的 主页 🔥

🔥 更新日志

  • 2025/06/01:🌍 过去一年里,LivePortrait 🚀 已成为高效的人像与宠物(猫狗)动画解决方案,被快手、抖音、剪映、视频号等主流视频平台,以及众多初创公司和创作者所采用。🎉
  • 2025/01/01:🐶 我们更新了一版动物模型(使用了更多动物数据),具体查看这里.
  • 2024/10/18:❗ 我们更新了transformersgradio库的版本避免安全漏洞,具体查看这里.
  • 2024/08/29:📦 我们更新了Windows一键安装程序并支持自动更新, 详情建这里
  • 2024/08/19:🖼️ 我们支持了图像驱动模式区域控制。详情请见这里
  • 2024/08/06:🎨 我们在Gradio界面支持精确的人像编辑, 受到ComfyUI-AdvancedLivePortrait启发。详见这里
  • 2024/08/05:📦 Windows用户现在可以下载一键安装程序,支持人类模式动物模式!详情见这里
  • 2024/08/02:😸 我们发布了动物模型版本,以及其他一些更新和改进。查看详情这里
  • 2024/07/25:📦 Windows用户现在可以从 HuggingFace百度云 下载软件包。解压并双击run_windows.bat即可享受!
  • 2024/07/24:🎨 我们在Gradio界面支持源人像的姿势编辑。我们还降低了默认检测阈值以增加召回率。玩得开心
  • 2024/07/19:✨ 我们支持🎞️ 人像视频编辑(aka v2v)!更多信息见这里
  • 2024/07/17:🍎 我们支持macOS搭载Apple Silicon,修改来自 jeethu 的PR #143
  • 2024/07/10:💪我们支持音频和视频拼接、驱动视频自动裁剪以及制作模板以保护隐私。更多信息见这里
  • 2024/07/09:🤗 我们发布了HuggingFace Space,感谢HF团队和Gradio
  • 2024/07/04:😊 我们发布了初始版本的推理代码和模型。持续更新,敬请关注!
  • 2024/07/04:🔥 我们发布了主页和在arXiv上的技术报告。

介绍 📖

此仓库名为LivePortrait,包含我们论文(LivePortrait: Efficient Portrait Animation with Stitching and Retargeting Control)的官方PyTorch实现。 我们正在积极更新和改进此仓库。如果您发现任何错误或有建议,欢迎提出问题或提交合并请求💖。

上手指南 🏁

1. 克隆代码和安装运行环境 🛠️

[!Note]
确保您的系统已安装gitcondaFFmpeg。有关FFmpeg安装的详细信息,见如何安装FFmpeg

bash 复制代码
git clone https://github.com/KwaiVGI/LivePortrait
cd LivePortrait

# 使用conda创建环境
conda create -n LivePortrait python=3.10
conda activate LivePortrait

对于Linux或Windows用户

X-Pose需要您的torch版本与CUDA版本兼容。

首先,通过以下命令检查您当前的CUDA版本:

bash 复制代码
nvcc -V # example versions: 11.1, 11.8, 12.1, etc.

然后,安装相应版本的torch。以下是不同CUDA版本的示例。如果您的CUDA版本未列出,请访问PyTorch官方网站获取安装命令:

bash 复制代码
# for CUDA 11.1
pip install torch==1.10.1+cu111 torchvision==0.11.2 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
# for CUDA 11.8
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu118
# for CUDA 12.1
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121
# ...

注意:在Windows系统上,一些过高版本的CUDA(12.4、12.6等)可能会导致未知的问题,您可以考虑降低您的CUDA版本到11.8,这是我们测试的一个较为稳定的版本。降级方法可以参考 @dimitribarbot
提供的文档.

最后,安装其余依赖项:

bash 复制代码
pip install -r requirements.txt

对于搭载Apple Silicon的macOS用户

X-Pose依赖项不支持macOS,因此您可以跳过其安装。人类模式照常工作,但不支持动物模式。使用为搭载Apple Silicon的macOS提供的requirements文件:

bash 复制代码
# 对于搭载Apple Silicon的macOS用户
pip install -r requirements_macOS.txt

2. 下载预训练权重(Pretrained weights) 📥

从HuggingFace下载预训练权重的最简单方法是:

bash 复制代码
# !pip install -U "huggingface_hub[cli]"
huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"

若您不能访问HuggingFace平台,你可以访问其镜像网站hf-mirror进行下载操作:

bash 复制代码
# !pip install -U "huggingface_hub[cli]"
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"

或者,您可以从Google Drive百度云(进行中)下载所有预训练权重。解压并将它们放置在./pretrained_weights目录下。

确保目录结构如所示包含本仓库该路径其中展示的内容。

3. 推理 🚀

快速上手(人类模型)👤

bash 复制代码
# 对于Linux和Windows用户
python inference.py

# 对于搭载Apple Silicon的macOS用户(Intel未测试)。注意:这可能比RTX 4090慢20倍
PYTORCH_ENABLE_MPS_FALLBACK=1 python inference.py

如果脚本成功运行,您将得到一个名为animations/s6--d0_concat.mp4的输出mp4文件。此文件包含以下结果:驱动视频、输入图像或视频以及生成结果。

image

或者,您可以通过指定`-s`和`-d`参数来更改输入:
bash 复制代码
# 源输入是图像
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4

# 源输入是视频 ✨
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d0.mp4

# 更多选项请见
python inference.py -h

快速上手(动物模型) 🐱🐶

动物模式仅在Linux和Windows上经过测试,并且需要NVIDIA GPU。

您需要首先构建一个名为MultiScaleDeformableAttention的OP,该OP由X-Pose使用,这是一个通用的关键点检测框架。

bash 复制代码
cd src/utils/dependencies/XPose/models/UniPose/ops
python setup.py build install
cd - # 等同于 cd ../../../../../../../

然后执行

bash 复制代码
python inference_animals.py -s assets/examples/source/s39.jpg -d assets/examples/driving/wink.pkl --driving_multiplier 1.75 --no_flag_stitching

如果脚本成功运行,您将得到一个名为animations/s39--wink_concat.mp4的输出mp4文件。

image

驱动视频自动裁剪 📢📢📢

[!IMPORTANT]
使用您自己的驱动视频时,我们推荐: ⬇️

  • 将其裁剪为1:1的宽高比(例如,512x512或256x256像素),或通过--flag_crop_driving_video启用自动裁剪。
  • 专注于头部区域,类似于示例视频。
  • 最小化肩部运动。
  • 确保驱动视频的第一帧是具有中性表情的正面面部。

以下是通过--flag_crop_driving_video自动裁剪的示例:

bash 复制代码
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d13.mp4 --flag_crop_driving_video

如果自动裁剪的结果不理想,您可以修改--scale_crop_driving_video--vy_ratio_crop_driving_video选项来调整比例和偏移,或者手动进行调整。

动作模板制作

您也可以使用以.pkl结尾的自动生成的动作模板文件来加快推理速度,并保护隐私,例如:

bash 复制代码
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d5.pkl # 人像动画
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d5.pkl # 人像视频编辑

4. Gradio 界面 🤗

我们还提供了Gradio界面 ,以获得更好的体验,只需运行:

bash 复制代码
# 对于Linux和Windows用户(以及搭载Intel的macOS??)
python app.py # 人类模型模式

# 对于搭载Apple Silicon的macOS用户,不支持Intel,这可能比RTX 4090慢20倍
PYTORCH_ENABLE_MPS_FALLBACK=1 python app.py # 人类模型模式

我们还为动物模式提供了Gradio界面,这仅在Linux上经过NVIDIA GPU测试:

bash 复制代码
python app_animals.py # animals mode 🐱🐶

您可以指定--server_port--share--server_name参数以满足您的需求!

🚀我们还提供了一个加速选项--flag_do_torch_compile。第一次推理触发优化过程(约一分钟),使后续推理速度提高20-30%。不同CUDA版本的性能提升可能有所不同。

bash 复制代码
# 启用torch.compile以进行更快的推理
python app.py --flag_do_torch_compile

注意:此方法在Windows和macOS上不受支持。

或者,在HuggingFace上轻松尝试🤗。

5. 推理速度预估 🚀🚀🚀

我们还提供了一个脚本来评估每个模块的推理速度:

bash 复制代码
# 对于NVIDIA GPU
python speed.py

运行结果

速度

以下是使用带有 torch.compile 的原生 PyTorch 框架在 RTX 4090 GPU 上推断一帧的结果:

Model Parameters(M) Model Size(MB) Inference(ms)
Appearance Feature Extractor 0.84 3.3 0.82
Motion Extractor 28.12 108 0.84
Spade Generator 55.37 212 7.59
Warping Module 45.53 174 5.21
Stitching and Retargeting Modules 0.23 2.3 0.31

Note: 拼接和重定向模块的值代表三个连续 MLP 网络的组合参数计数和总推理时间。

社区资源 🤗

社区项目

仓库 描述 作者 / 链接
ditto-talkinghead 实时音频驱动。 论文, 主页
FasterLivePortrait 基于TensorRT加速更快的实时版本。 @warmshao
AdvancedLivePortrait-WebUI Dedicated gradio based WebUI started from ComfyUI-AdvancedLivePortrait @jhj0517
FacePoke 一个实时的头部姿态表情控制应用,通过鼠标控制! @jbilcke-hf
FaceFusion FaceFusion 3.0 集成了 LivePortrait 作为 expression_restorerface_editor 处理器。 @henryruhs
sd-webui-live-portrait LivePortrait 的 WebUI 扩展,在原版 Stable Diffusion WebUI 中添加了一个标签以使用 LivePortrait 的功能。 @dimitribarbot
ComfyUI-LivePortraitKJ 一个用于 LivePortrait 的 ComfyUI 节点,使用 MediaPipe 作为 Insightface 的替代方案。 @kijai
ComfyUI-AdvancedLivePortrait 一个更快的 ComfyUI 节点,具有实时预览功能,启发了许多社区开发的工具和项目。 @PowerHouseMan
comfyui-liveportrait 一个用于 LivePortrait 的 ComfyUI 节点,支持多面部、表情插值等功能,并有教程 @shadowcz007

Playgrounds, 🤗 HuggingFace Spaces 以及其它

视频教程

还有来自社区的无数令人惊叹的贡献,未能一一列举 💖

致谢 💐

我们要感谢FOMMOpen Facevid2vidSPADEInsightFaceX-Pose仓库的的贡献者,感谢他们的开放研究和贡献。

道德考量 🛡️

肖像动画技术伴随着社会风险,特别是在创建深度伪造(deepfakes)时可能被滥用。为了减轻这些风险,遵循道德指南并采取负责任的使用实践至关重要。目前,生成的结果包含一些视觉伪影,这些伪影可能有助于检测深度伪造。请注意,我们不对本项目生成的结果的使用承担任何法律责任。

引用 💖

如果您发现LivePortrait对您的研究有用,欢迎引用我们的工作,使用以下BibTeX:

bibtex 复制代码
@article{guo2024liveportrait,
  title   = {LivePortrait: Efficient Portrait Animation with Stitching and Retargeting Control},
  author  = {Guo, Jianzhu and Zhang, Dingyun and Liu, Xiaoqiang and Zhong, Zhizhou and Zhang, Yuan and Wan, Pengfei and Zhang, Di},
  journal = {arXiv preprint arXiv:2407.03168},
  year    = {2024}
}

联系方式 📧

Jianzhu Guo (郭建珠); guojianzhu1994@gmail.com

Star History 🌟

点击展开查看项目 Star 曲线

Star History Chart

关于项目

只需一张静态肖像图像就能生成动态视频,能够精确控制眼睛的注视方向和嘴唇的开合动作。还可以处理多个人物肖像的无缝拼接,将不同的人物特征合并到一个视频中,确保在多个动态人物之间过渡平滑,不会产生突兀的边界效果。
MIT
Python
17,160
1774
141
2024-07-04
2025-06-14

增长趋势 - stars