Anglais | Chine
Dépôt original : LivePortrait, merci aux auteurs pour le partage
Nouvelles fonctionnalités :
Exécution en temps réel de LivePortrait sur le GPU RTX 3090 à l'aide de TensorRT, atteignant des vitesses de plus de 30 FPS. Il s'agit de la vitesse de rendu d'une seule image, y compris le pré- et post-traitement, et pas seulement de la vitesse d'inférence du modèle.
Implémentation de la conversion du modèle LivePortrait en modèle Onnx, atteignant une vitesse d'inférence d'environ 70 ms/image (~ 12 FPS) à l'aide de onnxruntime-gpu sur RTX 3090, facilitant le déploiement multiplateforme.
Prise en charge transparente de l'application gradio native, avec une vitesse plusieurs fois plus rapide et prise en charge de l'inférence simultanée sur plusieurs visages et modèles animaux.
Si vous trouvez ce projet utile, merci de lui donner une étoile ✨✨
Journal des modifications
11/08/2024 : optimisation de la vitesse de Paste_back et correction de quelques bugs.
Utilisation de torchgeometry + cuda pour optimiser la fonction paste_back, améliorant considérablement la vitesse. Exemple : 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
Correction de problèmes avec les opérations Xpose provoquant des erreurs sur certains GPU et d'autres bugs. Veuillez utiliser la dernière image Docker : docker pull shaoguo/faster_liveportrait:v3
07/08/2024 : Ajout de la prise en charge des modèles animaux et des modèles MediaPipe, vous n'avez donc plus à vous soucier des problèmes de droits d'auteur.
Pour une utilisation Web : python app.py --mode trt --mp
ou python app.py --mode onnx --mp
Pour la webcam locale : python run.py --src_image assets/examples/source/s12.jpg --dri_video 0 --cfg configs/trt_mp_infer.yaml
Téléchargez le fichier animal ONNX : huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
, puis convertissez-le au format TRT.
Mettez à jour l'image Docker : docker pull shaoguo/faster_liveportrait:v3
. Utilisation d'un modèle animal : python run.py --src_image assets/examples/source/s39.jpg --dri_video 0 --cfg configs/trt_infer.yaml --realtime --animal
Les utilisateurs Windows peuvent télécharger le dernier package Windows tout-en-un à partir de la page de version, puis le décompresser et l'utiliser.
Tutoriel d'utilisation simple :
Ajout de la prise en charge des modèles animaux.
Utilisation du modèle MediaPipe pour remplacer InsightFace
2024/07/24 : package d'intégration Windows, aucune installation requise, exécution en un clic, prend en charge TensorRT et OnnxruntimeGPU. Merci à @zhanghongyong123456 pour sa contribution à ce numéro.
Téléchargez CUDA 12.2, double-cliquez sur l'exe et installez-le en suivant les paramètres par défaut étape par étape.
Téléchargez le fichier zip cuDNN, extrayez-le et copiez les dossiers lib, bin et include du dossier cuDNN vers le dossier CUDA 12.2 (la valeur par défaut est C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2)
[Facultatif] Si vous avez déjà installé CUDA et cuDNN sur votre ordinateur Windows, veuillez ignorer cette étape. Je n'ai vérifié que sur CUDA 12.2. Si vous n'avez pas installé CUDA ou si vous rencontrez des erreurs liées à CUDA, vous devez suivre ces étapes :
Téléchargez le package d'intégration Windows sans installation à partir de la page de version et extrayez-le.
Entrez FasterLivePortrait-windows
et double-cliquez sur all_onnx2trt.bat
pour convertir les fichiers onnx, ce qui prendra un certain temps.
Pour une démo Web : double-cliquez sur app.bat
, ouvrez la page Web : http://localhost:9870/
Pour le fonctionnement de la caméra en temps réel, double-cliquez sur camera.bat
et appuyez sur q
pour arrêter. Si vous souhaitez modifier l'image cible, exécutez en ligne de commande : camera.bat assets/examples/source/s9.jpg
18/07/2024 : Ajout du support macOS (Pas besoin de Docker, Python suffit). Les puces M1/M2 sont plus rapides, mais c'est quand même assez lent ?
Installer ffmpeg : brew install ffmpeg
Configurez un environnement virtuel Python 3.10. Recommander d'utiliser miniforge : conda create -n flip python=3.10 && conda activate flip
Exigences d'installation : pip install -r requirements_macos.txt
Téléchargez les fichiers ONNX : huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
Test : python app.py --mode onnx
17/07/2024 : Ajout de la prise en charge de l'environnement Docker, fournissant une image exécutable.
Option 1 : Docker (recommandé). Une image Docker est fournie pour éliminer le besoin d'installer manuellement onnxruntime-gpu et TensorRT.
docker run -it --gpus=all --name plus rapide_liveportrait -v $FasterLivePortrait_ROOT:/root/FasterLivePortrait --restart=toujours -p 9870:9870 shaoguo/faster_liveportrait:v3 /bin/bash
Installez Docker en fonction de votre système
Téléchargez l'image : docker pull shaoguo/faster_liveportrait:v3
Exécutez la commande, remplacez $FasterLivePortrait_ROOT
par le répertoire local dans lequel vous avez téléchargé FasterLivePortrait :
Option 2 : créez un nouvel environnement virtuel Python et installez manuellement les packages Python nécessaires.
Tout d'abord, installez ffmpeg
Exécutez pip install -r requirements.txt
Suivez ensuite les tutoriels ci-dessous pour installer onnxruntime-gpu ou TensorRT. Notez que cela n'a été testé que sur les systèmes Linux.
Tout d’abord, téléchargez les fichiers du modèle Onnx convertis : huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
.
(Ignoré dans Docker) Si vous souhaitez utiliser l'inférence CPU onnxruntime, pip install onnxruntime
. Cependant, l’inférence CPU est extrêmement lente et n’est pas recommandée. Le dernier onnxruntime-gpu ne prend toujours pas en charge grid_sample cuda, mais j'ai trouvé une branche qui le prend en charge. Suivez ces étapes pour installer onnxruntime-gpu
à partir des sources :
./build.sh --parallèle --build_shared_lib --use_cuda --cuda_version 11.8 --cuda_home /usr/local/cuda --cudnn_home /usr/local/cuda/ --config Version --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
. Merci à liqun pour l'implémentation de grid_sample avec cuda !
Exécutez les commandes suivantes pour compiler, en modifiant cuda_version
et CMAKE_CUDA_ARCHITECTURES
en fonction de votre machine :
Testez le pipeline à l'aide d'onnxruntime :
python run.py --src_image assets/examples/source/s10.jpg --dri_video assets/examples/driving/d14.mp4 --cfg configs/onnx_infer.yaml
(Ignoré dans Docker) Installez TensorRT. N'oubliez pas le chemin d'installation de TensorRT.
(Ignoré dans Docker) Installez le plug-in Grid_sample TensorRT, car le modèle utilise un exemple de grille qui nécessite une entrée 5D, ce qui n'est pas pris en charge par l'opérateur natif grid_sample.
git clone https://github.com/SeanWangJS/grid-sample3d-trt-plugin
Modifiez la ligne 30 dans CMakeLists.txt
en : 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
, remplacez $TENSORRT_HOME par votre propre répertoire racine TensorRT.
make
, rappelez-vous l'adresse du fichier .so, remplacez /opt/grid-sample3d-trt-plugin/build/libgrid_sample_3d_plugin.so
dans scripts/onnx2trt.py
et src/models/predictor.py
par votre propre chemin de fichier .so
Téléchargez les fichiers du modèle ONNX : huggingface-cli download warmshao/FasterLivePortrait --local-dir ./checkpoints
. Convertissez tous les modèles ONNX en TensorRT, exécutez sh scripts/all_onnx2trt.sh
et sh scripts/all_onnx2trt_animal.sh
Testez le pipeline à l'aide de tensorrt :
python run.py --src_image actifs/exemples/source/s10.jpg --dri_video actifs/exemples/conduite/d14.mp4 --cfg configs/trt_infer.yaml
Pour exécuter en temps réel à l'aide d'une caméra :
python run.py --src_image actifs/exemples/source/s10.jpg --dri_video 0 --cfg configs/trt_infer.yaml --temps réel
onnxruntime : python app.py --mode onnx
tensorrt : python app.py --mode trt
Le port par défaut est 9870. Ouvrez la page Web : http://localhost:9870/
Suivez ma chaîne shipinhao pour des mises à jour continues sur mon contenu AIGC. N'hésitez pas à m'envoyer un message pour des opportunités de collaboration.