LivePortrait 数字人:开源的图生视频模型,本地部署和专业视频制作详细教程

看到上面面部表情动态图片,是不是感觉挺有有意思?它就是通过快手、中科大和复旦大学联合研发的图生视频 开源大模型LivePortrait (灵动人像)生成的视频。通过LivePortrait大模型,我们只需要一张人脸正面图片和一段文字或音频,即可制作专业的视频内容,例如产品介绍、教学课程、趣味视频等。

有关LivePortrait 更多的展示样例参见:https://liveportrait.github.io/

老牛同学将和大家一起,在本地部署LivePortrait图生视频大模型,并且生成我们自己的视频。本文将包括以下几部分:

  1. 基础环境准备:与我们之前部署 LLM 大模型不同,LivePortrait涉及到音频和视频等多媒体数据的处理,因此环境要稍微复杂一点
  2. LivePortrait 配置:包括大模型权重文件下载、配置等
  3. LivePortrait 使用:包括通过图片生成视频、Web 界面可视化生成视频等(建议配合 GPU 进行使用,老牛同学纯 CPU推理速度较慢)

LivePortrait 理论研究,可以参见论文:https://arxiv.org/pdf/2407.03168

LivePortrait 基础环境准备

基础环境准备分为以下 3 步:克隆 GitHub 示例源代码、安装 Python 依赖包和下载配置FFmpeg音视频工具库

【第一步:下载 GitHub 示例源码】

GitHub 示例源码下载目录:LivePortrait

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

特别注意: 示例代码克隆成功之后,我们可以看到示例源码目录LivePortrait下,有个pretrained_weights空目录,它就是用来存放预训练权重文件的目录,接下来的我们会下载权重文件!

【第二步:安装 Python 依赖包】

切换到 GitHub 示例源码目录:cd LivePortrait

shell 复制代码
# 激活环境:特别注意Python版本为3.9.18,其他版本可能不支持(老牛同学3.12就不支持)
conda create -n LivePortrait python==3.9.18
conda activate LivePortrait

# 安装依赖包
pip install -r requirements.txt

如果Miniconda 还未完成安装,建议先提前安装好:大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等)

【第三步:下载和配置 FFmpeg 音视频工具库】

FFmpeg 是一个非常强大的开源软件工具库,主要用于处理多媒体数据,包括音频和视频的编码、解码、转码、复用、解复用、流媒体传输以及播放等。

我们可以通过 FFmpeg 官网下载:https://ffmpeg.org/download.html

或者,老牛同学已经下载好了,放到了百度网盘(评论区也有地址):https://pan.baidu.com/s/1IYutMbJGJSxLVY56-h4IPg?pwd=LNTX

下载安装好之后,把 FFmpeg 目录设置在PATH环境变量中,同时执行命令进行检测:ffmpeg -version

plaintext 复制代码
>ffmpeg -version
ffmpeg version 7.0.1-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil      59.  8.100 / 59.  8.100
libavcodec     61.  3.100 / 61.  3.100
libavformat    61.  1.100 / 61.  1.100
libavdevice    61.  1.100 / 61.  1.100
libavfilter    10.  1.100 / 10.  1.100
libswscale      8.  1.100 /  8.  1.100
libswresample   5.  1.100 /  5.  1.100
libpostproc    58.  1.100 / 58.  1.100

LivePortrait 模型权重下载和配置

我们可以通过多种方式下载预训练权重文件,包括 HF 和云盘等:

【方式一:HF 下载权重文件】

由于文件比较大,Git 无法直接下载,首先需要设置 Git 大文件环境:

shell 复制代码
git lfs install

然后克隆权重文件,下载的目录:pretrained_weights

shell 复制代码
git clone https://www.modelscope.cn/AI-ModelScope/LivePortrait.git pretrained_weights

由于文件比较大,Git 在克隆过程中可能会中断,我们可以通过 Git 命令重试:

shell 复制代码
# 切换到权重文件目录
cd pretrained_weights

# 继续中断下载
git lfs pull

【方式二:百度云盘或 Google Drive 下载】

百度云盘:https://pan.baidu.com/s/1MGctWmNla_vZxDbEp2Dtzw?pwd=z5cn

Google 云盘:https://drive.google.com/drive/folders/1UtKgzKjFAOmZkhNK-OYT0caJ_w2XAnib

特别注意: 我们通过 Git 或者云盘下载到完整的权重文件之后,确认一下它的目录结构如下所示:

plaintext 复制代码
pretrained_weights
├── insightface
│   └── models
│       └── buffalo_l
│           ├── 2d106det.onnx
│           └── det_10g.onnx
└── liveportrait
    ├── base_models
    │   ├── appearance_feature_extractor.pth
    │   ├── motion_extractor.pth
    │   ├── spade_generator.pth
    │   └── warping_module.pth
    ├── landmark.onnx
    └── retargeting_models
        └── stitching_retargeting_module.pth

最后,把pretrained_weights目录下的insightfaceliveportrait这 2 个目录和文件全部复制到 GitHub 实例源码的pretrained_weights目录下。

小提示: 如果我们使用的是 MacOS 或者 Linux 操作系统,也可以尝试通过软链接来代替文件复制(因老牛同学是 Windows 系统,在这里无法展示,请大家尝试)!

使用 LivePortrait 生成视频

我们可以通过终端命令行或者 Web 可视化界面 2 种方式来使用 LivePortrait 生成视频:

方式一: 使用终端命令行生成视频】

  1. 打开终端,切换到 GitHub 示例源码目录:cd LivePortrait
  2. 激活 Python 环境:conda activate LivePortrait
  3. 经老牛同学测试,还需要安装额外 Python 依赖包:
shell 复制代码
# 额外依赖包
pip install tyro
pip install patch_ng

# 安装依赖包:如果前面已安装则可忽略(特别注意Python版本:3.9.18)
pip install -r requirements.txt
  1. 执行 Python 程序:在 GitHub 示例源码中,inference.py就是我们的大模型推理函数入口

打开终端,切换到 GitHub 示例源码目录cd LivePortrait,然后推理执行:python inference.py

可能的报错: 如果出现如下报错,请用Miniconda 设置 Python 3.9.18 版本的环境:

plaintext 复制代码
ValueError: mutable default <class 'numpy.ndarray'> for field mask_crop is not allowed: use default_factory

可能的报错: 如果出现如下报错,默认需要 GPU 进行推理,如果我们有 GPU 则需要正确安装 GPU 驱动,或者我们可以强制CPU运行:

plaintext 复制代码
RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx

强制 CPU 运行 】我们可以通过 --flag-force-cpu 参数强制使用 CPU 推理:python inference.py --flag-force-cpu

如果内存或者卡内存足够,最终会在 GitHub 源码目录中生成了最终视频文件:./animations/s6--d0_concat.mp4

很不幸,老牛同学16GB内存不足,导致最终生成视频失败(预计至少 22GB 内存):

RuntimeError: [enforce fail at alloc_cpu.cpp:114] data. DefaultCPUAllocator: not enough memory: you tried to allocate 6383992832 bytes.

根据官方文档,我们可以通过以下几个参数,来设置人像正脸图片、面部动画和生成视频目录:python inference.py --flag-force-cpu -s ./assets/examples/source/s6.jpg -d ./assets/examples/driving/d0.mp4 -o animations

方式二: 通过 Web 界面生成视频】

  1. 打开终端,切换到 GitHub 示例源码目录:cd LivePortrait
  2. 激活 Python 环境:conda activate LivePortrait
  3. 启动 Web 界面:python app.py --flag-force-cpu
plaintext 复制代码
....
FaceAnalysisDIY warmup time: 0.163s                                                                      face_analysis_diy.py:79
Running on local URL:  http://127.0.0.1:8890

我们通过浏览器打开地址:http://127.0.0.1:8890

我们可以直接使用实例源码的头像图片和头部动画,也可以选择自己的图片或头部动画,还可以点击摄像头 图标,拍摄和录制 我们自己的正脸和面部视频,之后点击🚀 Animate按钮即开始生成视频。

没有 GPU 在线体验

LivePortrait 开源的图生视频模型,可以让更多个人、小团体和企业等能轻松部署使用,以生成自己的数字化人物视频。LivePortrait 能显著降低了数字化人物创建的门槛,预示着实时视频处理领域的巨大潜力,同时也会在技术和应用层面推动了图生视频技术的快速发展,包括在视频会议社交媒体直播 以及实时游戏动画等实时应用场景中展现了巨大的应用潜力。

LivePortrait开源的图生视频模型不仅在技术上取得了重要进展,也对图生视频的商业应用和社会影响提出了新的思考。随着技术的进一步成熟和社会应用的深入,未来图生视频技术将在多个领域展现更广阔的应用前景。

ModelScope 模搭社区提供了在线体验 Web 界面,如果我们没有 GPU 本地部署推理太慢了,也可以去体验一下:https://modelscope.cn/studios/DAMOXR/LivePortrait

基于 Qwen2/Lllama3 等大模型,部署团队私有化 RAG 知识库系统的详细教程(Docker+AnythingLLM)

使用 Llama3/Qwen2 等开源大模型,部署团队私有化 Code Copilot 和使用教程

本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验

玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端

ChatTTS 开源文本转语音模型本地部署、API 使用和搭建 WebUI 界面

Ollama 完整教程:本地 LLM 管理、WebUI 对话、Python/Java 客户端 API 应用

相关推荐
WeeJot嵌入式10 分钟前
卷积神经网络:深度学习中的图像识别利器
人工智能
脆皮泡泡19 分钟前
Ultiverse 和web3新玩法?AI和GameFi的结合是怎样
人工智能·web3
机器人虎哥23 分钟前
【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测
人工智能·机器学习
码银30 分钟前
冲破AI 浪潮冲击下的 迷茫与焦虑
人工智能
敲上瘾33 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
何大春34 分钟前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式
uncle_ll41 分钟前
PyTorch图像预处理:计算均值和方差以实现标准化
图像处理·人工智能·pytorch·均值算法·标准化
宋1381027972042 分钟前
Manus Xsens Metagloves虚拟现实手套
人工智能·机器人·vr·动作捕捉
SEVEN-YEARS1 小时前
深入理解TensorFlow中的形状处理函数
人工智能·python·tensorflow
世优科技虚拟人1 小时前
AI、VR与空间计算:教育和文旅领域的数字转型力量
人工智能·vr·空间计算