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

news/2024/9/14 9:35:44 标签: AI, 人工智能, 大模型, 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__14">LivePortrait 基础环境准备

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

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

GitHub 示例源码下载目录:LivePortrait

git clone https://github.com/KwaiVGI/LivePortrait

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

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

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

# 激活环境:特别注意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

>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__68">LivePortrait 模型权重下载和配置

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

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

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

git lfs install

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

git clone https://www.modelscope.cn/AI-ModelScope/LivePortrait.git pretrained_weights

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

# 切换到权重文件目录
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 或者云盘下载到完整的权重文件之后,确认一下它的目录结构如下所示:

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__126">使用 LivePortrait 生成视频

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

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

  1. 打开终端,切换到 GitHub 示例源码目录:cd LivePortrait
  2. 激活 Python 环境:conda activate LivePortrait
  3. 经老牛同学测试,还需要安装额外 Python 依赖包:
# 额外依赖包
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 版本的环境:

ValueError: mutable default <class 'numpy.ndarray'> for field mask_crop is not allowed: use default_factory

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

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
....
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

Web可视化界面

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

没有 GPU 在线体验

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

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

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

<a class=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 应用

微信公众号:老牛同学


http://www.niftyadmin.cn/n/5559726.html

相关文章

PGCCC|【PostgreSQL】PCM认证考试大纲#postgresql 认证

PostgreSQL Certified Master PCM&#xff08;高级&#xff09; PostgreSQL Certified Master (PCM)是PostgreSQL的极高级别&#xff0c;是对数据库从业人员的技术、知识和操作技能的极高级别的认可。 PCM是解决极困难的技术难题和极复杂的系统故障的极佳PostgreSQL专家人选&a…

学习小记-Kafka相较于其他MQ有啥优势?

Kafka 相比于 RocketMQ 有以下几个优势&#xff1a; 1. 高吞吐量和低延迟&#xff1a; Kafka 以其出色的 I/O 性能和分布式架构设计&#xff0c;能够实现极高的吞吐量&#xff0c;每秒数百万的消息处理能力&#xff0c;适合大规模数据流处理。同时&#xff0c;Kafka 设计为…

Laravel的瑞士军刀:Artisan命令行工具的多面用途

Laravel的瑞士军刀&#xff1a;Artisan命令行工具的多面用途 Laravel Artisan命令行工具是Laravel框架的核心组件之一&#xff0c;它为开发者提供了一个强大而灵活的命令行界面&#xff0c;用于执行各种日常任务和自动化操作。从生成应用代码到管理数据库&#xff0c;Artisan工…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【查询密钥别名集(ArkTS)】

查询密钥别名集(ArkTS) HUKS提供了接口供应用查询密钥别名集。 开发步骤 初始化密钥属性集。用于查询指定密钥别名集TAG&#xff0c;TAG仅支持HUKS_TAG_AUTH_STORAGE_LEVEL。调用接口[listAliases]&#xff0c;查密钥别名集。 HarmonyOS与OpenHarmony鸿蒙文档籽料&#xff1…

Linux上的系统服务——DNS、WEB、NFS 和 AutoFS 服务的详细配置步骤

现有主机 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 node02 主机提供的NFS…

Excel中根据日期计算星期几的方法

Excel中根据日期计算星期几的方法 方法一、使用TEXT函数 如果你想要返回星期几的文本形式&#xff0c;比如“星期一”、“星期二”等&#xff0c;可以使用TEXT函数 根据指定的数字格式将数值转成文本 TEXT(value, format_text) text(A2, "aaaa") 方法二、使用WEE…

LinuxShell编程2——shell搭建Discuzz论坛网站

目录 一、环境准备 ①准备一台虚拟机 ②初始化虚拟机 1、关闭防火墙 2、关闭selinux 3、配置yum源 4、修改主机名 二、搭建LAMP环境 ①安装httpd(阿帕奇apache&#xff09;服务器 查看是否安装过httpd 启动httpd 设置开机启动 查看状态 安装网络工具 测试 ②安装…

继承和多态常见的面试问题

文章目录 概念问答 概念 下面哪种面向对象的方法可以让你变得富有( A) A: 继承 B: 封装 C: 多态 D: 抽象 (D )是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无关&#xff0c; 而对方法的调用则可以关联于具体的对象。 A: 继承 B: 模板 C: 对象的…