Skip to content

Files

Latest commit

a843413 · Aug 4, 2024

History

History
115 lines (102 loc) · 7.21 KB

README_CN.md

File metadata and controls

115 lines (102 loc) · 7.21 KB

FasterLivePortrait:Bring portrait to life in Real Time!

English | 中文

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

新增功能:

  • 通过TensorRT实现在RTX 3090显卡上实时运行LivePortrait,速度达到 30+ FPS. 这个速度是实测渲染出一帧的速度,而不仅仅是模型的推理时间。
  • 实现将LivePortrait模型转为Onnx模型,使用onnxruntime-gpu在RTX 3090上的推理速度约为 70ms/帧(~12 FPS),方便跨平台的部署。
  • 无缝支持原生的gradio app, 速度快了好几倍,同时支持对多张人脸的同时推理,一些效果可以看:pr105
  • 对代码结构进行了重构,不再依赖pytorch,所有的模型用onnx或tensorrt推理。

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

result2.mp4

日志

  • 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后双击all_onnx2trt.bat对onnx文件进行转换,这会等上一段时间。
    • 网页端demo:双击app.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 app.py --mode onnx
  • 2024/07/17: 增加docker环境的支持,提供可运行的镜像。

环境安装

  • 方式1:Docker(推荐),提供了一个镜像,不用再自己安装onnxruntime-gpu和TensorRT。

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

    • 请先安装ffmpeg
    • pip install -r requirements.txt
    • 再根据以下教程安装onnxruntime-gpu或TensorRT,注意只有在Linux系统下实验过。

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

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

Gradio App

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

关于我

欢迎关注我的视频号,会持续分享我做的AIGC的内容。有合作需求欢迎私信。

视频号