Skip to content

Latest commit

 

History

History
151 lines (133 loc) · 10.8 KB

README_ZH.md

File metadata and controls

151 lines (133 loc) · 10.8 KB

FasterLivePortrait:Bring portrait to life in Real Time!

English | 中文

原仓库: LivePortrait,感谢作者的分享

新增功能:

  • 通过TensorRT实现在RTX 3090显卡上实时运行LivePortrait,速度达到 30+ FPS. 这个速度是实测渲染出一帧的速度,而不仅仅是模型的推理时间。
  • 无缝支持原生的gradio app, 速度快了好几倍,同时支持多张人脸、Animal模型。
  • 增加JoyVASA的支持,可以用音频驱动视频或图片。

如果你觉得这个项目有用,帮我点个star吧✨✨

Demo(还有很多功能等你探索)

  • 文本驱动视频,基于kokoro-82M:

file4.webp-file4.webp-kokoro-82m-tts.wav.pkl-org-audi-ff.mp4

  • 声音驱动视频(可以实时):

s9.jpeg-s9.jpeg-865042464-1-192.wav.pkl-org-audio-ff.mp4

  • 动物驱动:

8.10.2.mp4

  • 多张人脸同时驱动:

0b6957cc-1c3b-42a6-89f9-4d4206ad4849--d14.mp4

环境安装

  • 方式1:如果你是Windows用户,推荐可以直接下载整合包

    • 需要先安装好git, 双击update.bat更新代码。
    • 双击scripts/all_onnx2trt.bat转换onnx文件为tensorrt文件。
    • 双击webui.bat打开网页,或者双击camera.bat打开摄像头实时运行。
  • 方式2:Docker,提供了一个镜像,不用再自己安装onnxruntime-gpu和TensorRT。

    • 根据自己的系统安装docker
    • 下载镜像:docker pull shaoguo/faster_liveportrait:v3
    • 执行命令, $FasterLivePortrait_ROOT要替换成你下载的FasterLivePortrait在本地的目录:
    docker run -it --gpus=all \
    --name faster_liveportrait \
    -v $FasterLivePortrait_ROOT:/root/FasterLivePortrait \
    --restart=always \
    -p 9870:9870 \
    shaoguo/faster_liveportrait:v3 \
    /bin/bash
    • 然后可以根据下面Onnxruntime 推理和TensorRT 推理教程进行使用。
  • 方式3:新建一个python虚拟环境,自己安装必要的python包

    • 请先安装ffmpeg
    • pip install -r requirements.txt
    • 再根据以下教程安装onnxruntime-gpu或TensorRT。

使用方法

1. TensorRT 推理(推荐, 可以实时)

  • (Docker环境可忽略)安装TensorRT,请记住TensorRT安装的路径。
  • (Docker环境可忽略)安装 grid_sample的tensorrt插件,因为模型用到的grid sample需要有5d的输入,原生的grid_sample 算子不支持。
    • git clone https://github.com/SeanWangJS/grid-sample3d-trt-plugin
    • 修改CMakeLists.txt中第30行为:set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_ARCHITECTURES "60;70;75;80;86")
    • export PATH=/usr/local/cuda/bin:$PATH
    • mkdir build && cd build
    • cmake .. -DTensorRT_ROOT=$TENSORRT_HOME,$TENSORRT_HOME 替换成你自己TensorRT的根目录。
    • make,记住so文件的地址,将scripts/onnx2trt.pysrc/models/predictor.py/opt/grid-sample3d-trt-plugin/build/libgrid_sample_3d_plugin.so替换成自己的so路径
  • 下载Onnx文件:huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints。将onnx模型转为tensorrt,运行sh scripts/all_onnx2trt.shsh scripts/all_onnx2trt_animal.sh
  • 用tensorrt测试pipeline:
     python run.py \
     --src_image assets/examples/source/s10.jpg \
     --dri_video assets/examples/driving/d14.mp4 \
     --cfg configs/trt_infer.yaml
    如果要使用摄像头实时运行:
     python run.py \
     --src_image assets/examples/source/s10.jpg \
     --dri_video 0 \
     --cfg configs/trt_infer.yaml \
     --realtime

2. Onnxruntime 推理

  • 首先下载我转换好的模型onnx文件: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
  • (Docker环境可忽略)如果你要用onnxruntime cpu推理的话,直接pip install onnxruntime即可,但是cpu推理超级慢。但是最新的onnxruntime-gpu仍然无法支持grid_sample cuda,好在我看到一位大佬在分支上支持了,按照以下步骤源码安装onnxruntime-gpu:
    • git clone https://github.com/microsoft/onnxruntime
    • git checkout liqun/ImageDecoder-cuda. Thanks for liqun's grid_sample with cuda implementation!
    • 运行以下命令编译,cuda_versionCMAKE_CUDA_ARCHITECTURES根据自己的机器更改:
    ./build.sh --parallel \
    --build_shared_lib --use_cuda \
    --cuda_version 11.8 \
    --cuda_home /usr/local/cuda --cudnn_home /usr/local/cuda/ \
    --config Release --build_wheel --skip_tests \
    --cmake_extra_defines CMAKE_CUDA_ARCHITECTURES="60;70;75;80;86" \
    --cmake_extra_defines CMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \
    --disable_contrib_ops \
    --allow_running_as_root
    • pip install build/Linux/Release/dist/onnxruntime_gpu-1.17.0-cp310-cp310-linux_x86_64.whl就可以了
  • 用onnxruntime测试pipeline:
     python run.py \
     --src_image assets/examples/source/s10.jpg \
     --dri_video assets/examples/driving/d14.mp4 \
     --cfg configs/onnx_infer.yaml

Gradio WebUI

  • onnxruntime: python webui.py --mode onnx
  • tensorrt: python webui.py --mode trt
  • 默认端口在9870,打开网页:http://localhost:9870/

日志

  • 2024/12/22: 增加api部署python api.py, 其他参考教程使用。

  • 2024/12/16: 增加JoyVASA的支持,可以用音频驱动视频或图片。非常酷!

    • 更新代码,然后下载模型: huggingface-cli download TencentGameMate/chinese-hubert-base --local-dir .\checkpoints\chinese-hubert-base huggingface-cli download jdh-algo/JoyVASA --local-dir ./checkpoints/JoyVASA
    • 启动webui后根据以下教程使用即可,建议source 是视频的情况下只驱动嘴部

    12.16.1.mp4

  • 2024/12/14: 增加pickle和image驱动以及区域驱动animation_region

    • 请更新最新的代码,windows用户可以直接双击update.bat更新,但请注意本地的代码将会被覆盖。
    • python run.py 现在运行 driving video会自动保存对应的pickle到跟driving video一样的目录,可以直接复用。
    • 打开webui后即可体验新的pickle和image驱动以及区域驱动animation_region等功能。注意image驱动记得把relative motion取消掉。
  • 2024/08/11: 优化paste_back的速度,修复一些bug。

    • 用torchgeometry + cuda优化paste_back函数,现在速度提升了很多。示例:python run.py --src_image assets/examples/source/s39.jpg --dri_video assets/examples/driving/d0.mp4 --cfg configs/trt_infer.yaml --paste_back --animal
    • 修复Xpose的ops在一些显卡运行报错的问题等bug。请使用最新的镜像:docker pull shaoguo/faster_liveportrait:v3
  • 2024/08/07: 增加animal模型的支持,同时支持mediapipe模型,现在你不用再担心版权的问题。

    • 增加对animal模型的支持。

      • 需要下载animal的onnx文件:huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints,然后转换成trt文件。
      • 更新镜像docker pull shaoguo/faster_liveportrait:v3, 使用animal模型的示例:python run.py --src_image assets/examples/source/s39.jpg --dri_video 0 --cfg configs/trt_infer.yaml --realtime --animal
      • windows系统可以从release页下载最新的windows 整合包,解压后使用。
      • 简单的使用教程:

      0807-3.mp4

    • 使用mediapipe模型替代insight_face

      • 网页端使用: python webui.py --mode trt --mppython webui.py --mode onnx --mp
      • 本地摄像头运行: python run.py --src_image assets/examples/source/s12.jpg --dri_video assets/examples/driving/d0.mp4 --cfg configs/trt_mp_infer.yaml
  • 2024/07/24: Windows的整合包, 免安装一键运行,支持TensorRT和OnnxruntimeGPU。感谢@zhanghongyong123456在issue的贡献。

    • 【可选】如果你的windows电脑已经装过cuda和cudnn,请忽略这一步。我只在cuda12.2上验证过,如果没安装cuda或报cuda相关的错,你需要按照以下步骤进行安装:
      • 下载cuda12.2, 双击exe后按照默认设置一步步安装即可。
      • 下载cudnn 压缩包,解压后将cudnn 文件夹下的lib、bin、include 文件夹复制到 CUDA12.2 文件夹下(默认为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2)
    • 从release页下载免安装windows 整合包并解压。
    • 进入FasterLivePortrait-windows后双击scripts/all_onnx2trt.bat对onnx文件进行转换,这会等上一段时间。
    • 网页端demo:双击webui.bat, 打开网页:http://localhost:9870/
    • 摄像头实时运行,双击camera.bat,按q停止。如果你想更换目标图像,命令行运行:camera.bat assets/examples/source/s9.jpg
  • 2024/07/18: MacOS支持(不需要Docker,python就可以了),M1/M2的速度比较快,但还是很慢😟

    • 安装ffmpeg: brew install ffmpeg
    • 安装python=3.10的虚拟环境,推荐可以用miniforge.conda create -n flip python=3.10 && conda activate flip
    • pip install -r requirements_macos.txt
    • 下载onnx文件: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
    • 测试: python webui.py --mode onnx
  • 2024/07/17: 增加docker环境的支持,提供可运行的镜像。