英語 | 中国語
元のリポジトリ: LivePortrait、共有してくれた作者に感謝
新機能:
TensorRT を使用して RTX 3090 GPU で LivePortrait のリアルタイム実行を実現し、30 FPS 以上の速度に達しました。これは、モデルの推論速度だけでなく、前処理と後処理を含む単一フレームのレンダリングの速度です。
LivePortrait モデルから Onnx モデルへの変換を実装し、RTX 3090 上の onnxruntime-gpu を使用して約 70 ミリ秒/フレーム (~12 FPS) の推論速度を達成し、クロスプラットフォームの展開を容易にしました。
数倍高速なネイティブ gradio アプリのシームレスなサポートと、複数の顔と動物モデルの同時推論のサポート。
このプロジェクトが役立つと思われた場合は、スターを付けてください✨✨
変更履歴
2024/08/11: past_back の速度を最適化し、いくつかのバグを修正しました。
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
一部の GPU でエラーやその他のバグを引き起こす Xpose 操作の問題を修正しました。最新の Docker イメージを使用してください: docker pull shaoguo/faster_liveportrait:v3
2024/08/07:動物モデルと MediaPipe モデルのサポートが追加されたため、著作権の問題を心配する必要がなくなりました。
Web で使用する場合: python app.py --mode trt --mp
またはpython app.py --mode onnx --mp
ローカル Web カメラの場合: python run.py --src_image assets/examples/source/s12.jpg --dri_video 0 --cfg configs/trt_mp_infer.yaml
動物の ONNX ファイルをダウンロードします: huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
、TRT 形式に変換します。
Docker イメージを更新します: docker pull shaoguo/faster_liveportrait:v3
。動物モデルの使用: python run.py --src_image assets/examples/source/s39.jpg --dri_video 0 --cfg configs/trt_infer.yaml --realtime --animal
Windows ユーザーは、最新の Windows オールインワン パッケージをリリース ページからダウンロードし、解凍して使用できます。
簡単な使用方法のチュートリアル:
動物モデルのサポートが追加されました。
MediaPipe モデルを使用して InsightFace を置き換える
2024/07/24: Windows 統合パッケージ、インストール不要、ワンクリックで実行、TensorRT と OnnxruntimeGPU をサポート。この問題に貢献してくれた @zhanghongyong123456 に感謝します。
CUDA 12.2 をダウンロードし、exe をダブルクリックして、デフォルト設定に従って段階的にインストールします。
cuDNN zip ファイルをダウンロードして解凍し、lib、bin、および include フォルダーを cuDNN フォルダーから CUDA 12.2 フォルダーにコピーします (デフォルトは C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2)。
[オプション] Windows コンピューターに CUDA と cuDNN をすでにインストールしている場合は、この手順をスキップしてください。 CUDA 12.2でのみ検証しました。 CUDA をインストールしていない場合、または CUDA 関連のエラーが発生した場合は、次の手順に従う必要があります。
インストール不要の Windows 統合パッケージをリリース ページからダウンロードして解凍します。
FasterLivePortrait-windows
と入力し、 all_onnx2trt.bat
ダブルクリックして onnx ファイルを変換します。これには時間がかかります。
Web デモの場合: app.bat
ダブルクリックし、Web ページを開きます: 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 huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
テスト: python app.py --mode onnx
2024/07/17: Docker 環境のサポートを追加し、実行可能なイメージを提供しました。
オプション 1: Docker (推奨)。onnxruntime-gpu と TensorRT を手動でインストールする必要をなくすために、Docker イメージが提供されます。
docker run -it --gpus=all --name fast_liveportrait -v $FasterLivePortrait_ROOT:/root/FasterLivePortrait --restart=常に -p 9870:9870 shaoguo/faster_liveportrait:v3 /bin/bash
システムに応じて Docker をインストールする
イメージをダウンロードします: docker pull shaoguo/faster_liveportrait:v3
コマンドを実行し、 $FasterLivePortrait_ROOT
FasterLivePortrait をダウンロードしたローカル ディレクトリに置き換えます。
オプション 2: 新しい Python 仮想環境を作成し、必要な Python パッケージを手動でインストールします。
まずはffmpegをインストールします
pip install -r requirements.txt
実行します。
次に、以下のチュートリアルに従って onnxruntime-gpu または TensorRT をインストールします。これは Linux システムでのみテストされていることに注意してください。
まず、変換された onnx モデル ファイルをダウンロードします ( huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
。
(Docker では無視されます) onnxruntime CPU 推論を使用する場合は、単にpip install onnxruntime
。ただし、CPU 推論は非常に遅いため、推奨されません。最新の onnxruntime-gpu はまだ Grid_sample cuda をサポートしていませんが、それをサポートするブランチを見つけました。ソースからonnxruntime-gpu
インストールするには、次の手順に従います。
./build.sh --Parallel --build_shared_lib --use_cuda --cuda_バージョン 11.8 --cuda_home /usr/local/cuda --cudnn_home /usr/local/cuda/ --config リリース --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
git clone https://github.com/microsoft/onnxruntime
git checkout liqun/ImageDecoder-cuda
。 cuda 実装を使用した Grid_sample を提供してくれた liqun に感謝します。
次のコマンドを実行してコンパイルし、マシンに応じてcuda_version
とCMAKE_CUDA_ARCHITECTURES
を変更します。
onnxruntime を使用してパイプラインをテストします。
python run.py --src_image assets/examples/source/s10.jpg --dri_video assets/examples/driving/d14.mp4 --cfg configs/onnx_infer.yaml
(Docker では無視されます) TensorRT をインストールします。 TensorRT のインストール パスを覚えておいてください。
(Docker では無視されます) モデルは、ネイティブの Grid_sample オペレーターではサポートされていない 5D 入力を必要とするグリッド サンプルを使用するため、grid_sample TensorRT プラグインをインストールします。
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.py
およびsrc/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
およびsh scripts/all_onnx2trt_animal.sh
を実行します。
tensorrt を使用してパイプラインをテストします。
Python run.py --src_image アセット/examples/source/s10.jpg --dri_video アセット/例/運転/d14.mp4 --cfg configs/trt_infer.yaml
カメラを使用してリアルタイムで実行するには:
Python run.py --src_image アセット/examples/source/s10.jpg --dri_video 0 --cfg configs/trt_infer.yaml - リアルタイム
onnxruntime: python app.py --mode onnx
tensorrt: python app.py --mode trt
デフォルトのポートは 9870 です。Web ページを開きます: http://localhost:9870/
AIGC コンテンツの継続的な更新については、shipinhao チャンネルをフォローしてください。コラボレーションの機会については、お気軽にメッセージをください。