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

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

我们可以通过多种方式下载预训练权重文件,包括 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 生成视频

我们可以通过终端命令行或者 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

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.mzph.cn/bicheng/46164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单相整流-TI视频课笔记

目录 1、单相半波整流 1.1、单相半波----电容滤波---超轻负载 1.2、单相半波----电容滤波---轻负载 1.3、单相半波----电容滤波---重负载 2、全波整流 2.1、全波整流的仿真 2.2、半波与全波滤波的对比 3、全桥整流电路 3.1、全波和全桥整流对比 3.2、半波全波和全桥…

.env.development、.env.production、.env.staging

环境变量文件&#xff08;如 .env.development、.env.production、.env.staging&#xff09;用于根据不同的环境&#xff08;开发、生产、测试等&#xff09;配置应用程序的行为。 作用 .env.development&#xff1a;用于开发环境的配置。开发人员在本地开发时会使用这个文件…

php获取,昨,今,后天.... 本周,月,年...日期时间戳

时间戳->时间转换工具 时间戳(Unix timestamp)转换工具 - 在线工具 (tool.lu) 代码如下: public function date(){/** 日期 **/// 今天的日期$result[today_date] date("Y-m-d");// 昨天的日期$result[yesterday_date] date("Y-m-d", strtotime(&quo…

Oracle使用fetch first子句报错:ORA-00933 SQL命令未正确结束

问题背景 今天在统计终端厂商告警次数Top10的时候使用SQL查询使用到了fetch first子句&#xff0c;结果执行报错&#xff1a;ORA-00933 SQL命令未正确结束。 报错原因 Oracle数据库中&#xff0c;使用 FETCH FIRST 子句需要启用 Oracle 12c 及以上版本。如果在较低版本的 Or…

【Git使用】管理代码

Git使用 1、git命令1.1、git init1.2、git add1.3、git commit1.4、git push1.5、git branch1.6、git fetch1.7、git checkout X1.8、git status 2、提交执行顺序3、常见错误Error3.1、error: pathspec XXX did not match any file(s) known to git3.2、fatal: not a valid obj…

使机器人在执行任务倒快递

这段代码是用来控制机器人在不同模式下的行为&#xff0c;具体是处理 residenceright 和 residenceleft 两种模式下的过渡过程。代码中使用了一个 mythread 结构体&#xff0c;该结构体包含了机器人的当前模式 (mode) 和过渡过程的阶段 (residenceTransientProcess)。以下是对这…

PyTorch是使用GPU和CPU优化的深度学习张量库——torchvision

torchvision datasets torchvision.datasets 包含了许多标准数据集的加载器。例如&#xff0c;CIFAR10 和 ImageFolder 是其中两个非常常用的类。 CIFAR10 CIFAR10 数据集是一个广泛使用的数据集&#xff0c;包含10类彩色图像&#xff0c;每类有6000张图像&#xff08;5000张…

C++ 类和对象(上)

再C中&#xff0c;我们使用类定义自己的数据类型。通过定义新的类型来反映待解决的问题中的各种概念&#xff0c;可以使我们更容易编写&#xff0c;调试和修改程序。 类定义格式 首先类的定义格式和结构体差不多&#xff0c;而结构体的那一套语法也可以在C中使用。class是定义…

RC-u3 跑团机器人

这道题目要求我们模拟一个跑团机器人&#xff0c;解析玩家输入的包含骰子掷出和加减法运算的指令&#xff0c;计算出不同种类的骰子分别需要掷出几个&#xff0c;并根据输入指令得到可能的最小结果和最大结果。 题目分析 我们需要解析输入的表达式&#xff0c;处理其中的加法…

oracle数据库的plsql免安装版安装

这个是连接oracle数据库的&#xff0c;注意安装不能有中文路径。以下只是示例。 1、打开D:\ruanjian\plsql\plsql\plsql&#xff0c;发送plsqldev.exe快捷方式到桌面。 2、新弹出的页面填写cancel,什么也不写。 3、将instanceclient解压&#xff0c;并复制文件路径。 修改tool…

[Python学习篇] Python搭建静态web服务器

Python内置的web静态服务器 Python内置的http.server模块可以快速启动一个简单的HTTP服务器。 在Python 3中&#xff0c;打开命令行或终端&#xff0c;在你想要作为静态服务器根目录的文件夹下&#xff0c;运行以下命令&#xff1a; python -m http.server 8000 这将会在…

纯vue+js实现数字0到增加到指定数字动画效果功能

关于数字增加动画效果网上基本上都是借助第三方插件实现的,就会导致有的项目安装插件总会出问题,所有最好使用原生vue+js实现,比较稳妥 纯vue+js实现数字0到增加到指定数字动画效果功能 vue+js 实现数字增加动画功能 效果图 其中,关于数字变化的间隔时间,延时效果都可…

数据结构与算法 —— DFS的定义与原理

DFS&#xff08;Distributed File System&#xff0c;分布式文件系统&#xff09;是一种允许网络连接的多个计算机之间共享信息的系统架构。与传统的文件系统&#xff08;如NTFS、HFS等&#xff09;不同&#xff0c;DFS分布在多个文件服务器或多个位置&#xff0c;通过计算机网…

澳门建筑插画:成都亚恒丰创教育科技有限公司

澳门建筑插画&#xff1a;绘就东方之珠的斑斓画卷 在浩瀚的中华大地上&#xff0c;澳门以其独特的地理位置和丰富的历史文化&#xff0c;如同一颗璀璨的明珠镶嵌在南国海疆。这座城市&#xff0c;不仅是东西方文化交融的典范&#xff0c;更是建筑艺术的宝库。当画笔轻触纸面&a…

一个spring boot项目的启动过程分析

1、web.xml 定义入口类 <context-param><param-name>contextConfigLocation</param-name><param-value>com.baosight.ApplicationBoot</param-value> </context-param> 2、主入口类: ApplicationBoot,SpringBoot项目的mian函数 SpringBo…

时间序列学习篇

今天看了一些时间序列算法相关的文档和帖子。很惭愧&#xff0c;也是搞了很长时间预测算法的人了&#xff0c;但是都没能详细学习一下时间序列的理论。 首先&#xff0c;要预测一个时序问题&#xff0c;可以从什么路径解决呢&#xff1f;一种是认为过去序列状态影响将来的状态…

视频调整帧率、分辨率+音画同步

# python data_utils/pre_video/multi_fps_crop_sync.pyimport cv2 import os from tqdm import tqdm import subprocess# 加载人脸检测模型 face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml)def contains_face(frame):gray …

淘宝/天猫店铺商品搜索利器:taobao.item_search_shop API返回值详解

taobao.item_search_shop 这个API名称听起来像是针对淘宝或天猫平台的一个商品搜索接口&#xff0c;但实际上&#xff0c;淘宝和天猫的官方API体系中并没有直接命名为taobao.item_search_shop的公开API。不过&#xff0c;为了解答关于类似功能的API返回值详解&#xff0c;我们可…

(三)Redis持久化,你真的懂了吗?万字分析AOF和RDB的优劣 AOF的刷盘、重写策略 什么叫混合重写 MP-AOF方案是什么

引言 —— Redis基础概念 Redis概念&#xff1a;Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对&#xff08;key-value&#xff09;数据库。 为什么会出现Redis呢&#xff1f;它的到来是为了解决什么样的问题&#xff1f; Redis 是一个NOSQL类型…

27 设备流转使用心得 三

前两部分参考心得 25 26 分布式文件传输 1 源端 1 获取分布式文件路径 读取文件 写入分布式文件 2 对端 1 通过应用沙箱获取分布式文件路径 读取文件路径 与状态数据绑定 2 绑定之后UI渲染 Index Row({space:8}){//用户当前选中的所有图片ForEach(this.photos, (p:str…