返回

LivePortrait: 高效 PyTorch 人像动画生成工具 - 静态照片变动态

AI

Star

Forks

Watch

Issues

LivePortrait 是一个高效的人像动画生成工具,它基于 PyTorch 实现,并提供了一系列强大的功能,能够让静态照片“动”起来,甚至能够编辑视频中的人像。项目源于论文“LivePortrait: Efficient Portrait Animation with Stitching and Retargeting Control”。

image.png

项目介绍 🛠️

LivePortrait 的核心功能是人像动画生成,它能够将静态人像照片与驱动视频(通常是头部运动的视频)结合,生成逼真的人像动画。项目不仅仅支持单张图片,还可以处理人像视频的编辑(v2v),将一个视频中的人物表情和动作迁移到另一个视频中的人物上。

LivePortrait 具有以下特点:

  • 高效性: 采用高效的算法和优化,实现快速的人像动画生成。

  • 拼接和重定向控制: 提供了对人像各个部位(如眼睛、嘴巴)的精细控制,可以实现更逼真、自然的动画效果。

  • 支持多种输入: 既支持图像驱动模式,也支持视频驱动模式。

  • 友好的用户界面: 提供了 Gradio 交互界面,方便用户进行操作和可视化。

  • 跨平台支持: 支持 Linux、Windows 和 macOS 系统(macOS 仅支持人物模式)。

  • 动物模式支持: 除了人物,LivePortrait 还支持猫、狗等动物的动画生成。

  • 区域控制: 支持对人像特定区域进行编辑,例如,你可以只改变眼睛的运动而保持面部其他区域不动。

  • 动作模板: 可以创建并使用 .pkl 格式的动作模板,加快生成速度,并且保护隐私

    下面展示了一个简单的动画生成效果:

    image

    项目提供了丰富的命令行参数,可以灵活地控制动画生成过程。例如,你可以指定输入图像或视频、驱动视频、输出文件名等等。

    # 使用图像作为输入
    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_animals.py -s assets/examples/source/s39.jpg -d assets/examples/driving/wink.pkl --driving_multiplier 1.75 --no_flag_stitching
    
    

    除了命令行,你还可以通过 Gradio 界面轻松地使用 LivePortrait。启动 Gradio 界面后,你只需要上传一张人像照片和一段驱动视频,就可以生成人像动画,并且进行可视化预览。

优势分析 🚀

LivePortrait 具有以下几个显著优势:

  1. 易用性强: 项目提供了详细的安装和使用说明,同时还提供了 Gradio 交互界面,使得用户可以轻松上手。此外,Windows 用户还可以下载一键安装包,简化安装过程。
  2. 功能强大: 支持图像和视频两种输入模式,可以生成高质量的人像动画,还支持动物模型,功能相对全面。不仅支持传统的动画生成,还支持精准的人像编辑。区域控制功能允许用户精细调整动画的细节。
  3. 高效性: 代码经过优化,运行速度较快。同时,还提供了 torch.compile 选项,可以进一步提升推理速度。在保证生成质量的前提下,速度表现优异。
  4. 社区活跃: 从 GitHub 的 Star 数量、Issue 数量和贡献者数量来看,LivePortrait 拥有一个活跃的社区。这意味着项目会持续得到更新和维护,用户在使用过程中遇到问题也更容易获得帮助。

使用方法 💻

要使用 LivePortrait,首先需要克隆代码并安装依赖:

  1. 克隆代码

    git clone https://github.com/KwaiVGI/LivePortrait
    cd LivePortrait
    
  2. 创建并激活 conda 环境

    conda create -n LivePortrait python=3.10
    conda activate LivePortrait
    
  3. 安装依赖

    • Linux 或 Windows 用户:

      首先,检查CUDA版本:

        nvcc -V 
      

      然后安装对应版本的 PyTorch,例如:

      # 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
      

      更多版本请访问 PyTorch官网
      在Windows系统上,建议使用 CUDA 11.8,高版本可能不稳定。可以参考 @dimitribarbot 提供的降级指南

      安装其他依赖:

      pip install -r requirements.txt
      
      • macOS (Apple Silicon) 用户:

        macOS 系统不支持动物模式,可以使用 requirements_macOS.txt 文件安装依赖:

      pip install -r requirements_macOS.txt
      

      安装 FFmpeg:
      FFmpeg 是必须安装的依赖项。具体安装方法,可以参考项目文档中提供的详细教程。

  4. 下载预训练权重

    从 HuggingFace 下载预训练权重:

    huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
    

    或者,如果访问 Huggingface 受限,可以使用 hf-mirror:

    export HF_ENDPOINT=https://hf-mirror.com
    huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
    

    也可以从 Google Drive 或 Baidu Yun 下载预训练权重,解压后放置到 ./pretrained_weights 目录下。确保目录结构与 此结构 相同或包含此结构。

  5. 运行推理脚本

    • 人物模式:

      # Linux 或 Windows 用户
      python inference.py
      # macOS 用户
      PYTORCH_ENABLE_MPS_FALLBACK=1 python inference.py
      
    • 动物模式 (仅限 Linux 和 Windows):
      首先需要编译 OP:

      cd src/utils/dependencies/XPose/models/UniPose/ops
      python setup.py build install
      cd -
      

      然后运行推理脚本:

      python inference_animals.py -s assets/examples/source/s39.jpg -d assets/examples/driving/wink.pkl --driving_multiplier 1.75 --no_flag_stitching
      
  6. 使用 Gradio 界面:

    • 人物模式:

       python app.py #Linux或Windows
      PYTORCH_ENABLE_MPS_FALLBACK=1 python app.py #macOS(Apple Silicon),速度可能较慢
      

      可以通过参数 --flag_do_torch_compile 开启 torch.compile 加速, Windows和macOS 不支持此方法.

    • 动物模式 (仅限 Linux):

      python app_animals.py
      

      可以使用--server_port, --share, --server_name等参数进行个性化配置。

      也可以直接访问HuggingFace Space体验。

社区和贡献 🤝

LivePortrait 项目在 GitHub 上拥有很高的关注度,截至目前已获得超过14.9k 个 Star。项目社区非常活跃,Issue 数量和贡献者数量都很多。这表明项目在持续得到维护和改进,同时也欢迎更多开发者参与其中。如果你对人像动画生成感兴趣,可以尝试使用 LivePortrait,并为其贡献代码、文档或者提出建议。

总结 📝

LivePortrait 是一个功能强大、易于使用、高效的人像动画生成工具。它不仅可以用于生成有趣的人像动画,还可以应用于视频编辑、虚拟形象制作等领域。 项目社区活跃,更新迭代速度快。可以预见,未来 LivePortrait 将会支持更多的功能,拓展更多的应用场景, 进一步推动