Implémentation de recherche de LivePortrait
Kuaishou Technology · animation de portraits · workflows d’images et de vidéos
Donnez vie aux portraits à partir d’une image source et d’une direction de mouvement choisie.
🔥 Mises à jour
2025/06/01: 🌍 Au cours de l’année écoulée, LivePortrait est devenu une solution efficace d’animation de portraits pour les humains, les chats et les chiens, utilisée sur les plateformes vidéo, dans les outils créatifs et les workflows de recherche.2025/01/01: 🐶 Nous avons mis à jour le modèle Animals avec des données d’entraînement supplémentaires et actualisé les ressources d’exemple. Les détails sont disponibles ici.2024/10/18: ❗ Les versions des dépendances ont été mises à jour afin d’améliorer la sécurité et la cohérence de l’installation. Consultez les notes de modification.2024/08/29: 📦 Le package Windows a été actualisé avec un parcours d’installation simplifié et la prise en charge des mises à jour.2024/08/19: 🖼️ Le mode piloté par image et le contrôle régional sont désormais pris en charge pour orienter les portraits avec davantage de précision.2024/08/06: 🎨 La retouche précise des portraits a été ajoutée à l’interface pour un contrôle plus détaillé des expressions.2024/08/05: 📦 Les utilisateurs de Windows peuvent accéder au package en un clic pour les modes Humans et Animals.2024/08/02: 😸 Un nouveau modèle Animals est arrivé avec plusieurs améliorations supplémentaires.2024/07/25: 📦 Le package téléchargeable inclut désormais un parcours d’exécution direct pour les utilisateurs de Windows.2024/07/24: 🎨 La modification de la pose des portraits sources a été ajoutée, avec un seuil de détection par défaut plus bas.2024/07/19: ✨ La modification de vidéos de portraits, également appelée v2v, est prise en charge pour les workflows compatibles.2024/07/17: 🍎 La prise en charge d’Apple Silicon a été ajoutée au workflow Humans.2024/07/10: 💪 La concaténation audio et vidéo, le recadrage automatique des vidéos pilotes et la création de modèles de mouvement sont pris en charge.2024/07/09: 🤗 Une démo en ligne a été publiée pour tester le workflow sans configuration locale.2024/07/04: 😊 Le code et les modèles d’inférence initiaux ont été publiés à des fins de recherche et d’expérimentation.2024/07/04: 🔥 La page d’accueil du projet et le rapport technique ont été publiés avec la première implémentation publique.
Introduction 📖
Ce dépôt, nommé LivePortrait, contient une implémentation officielle sous PyTorch pour l’animation efficace de portraits avec contrôle de l’assemblage et du reciblage. Le flux de travail transforme un portrait source en mouvement expressif tout en conservant l’identité d’origine et la cohérence de la structure visuelle.
LivePortrait est activement amélioré pour la recherche, l’exploration créative et les expériences pratiques de conversion d’image en vidéo. Si vous rencontrez un problème ou avez une suggestion, utilisez le flux de travail du projet pour le partager.
Bien démarrer 🏁
1. Cloner le code et préparer l’environnement 🛠️
Remarque
Assurez-vous que votre système dispose de git, conda, ainsi que de FFmpeg installés avant d’exécuter le flux de travail local.
git clone https://github.com/KlingTeam/LivePortrait
cd LivePortrait
# create env using conda
conda create -n LivePortrait python=3.10
conda activate LivePortrait
Pour les utilisateurs de Linux 🐧 ou Windows 🪟
La dépendance X-Pose est requise par le mode Animals. La vérification de la version de CUDA est facultative si vous souhaitez uniquement exécuter le mode Humans.
Vérifier vos versions de CUDA
Commencez par vérifier la version de CUDA installée :
nvcc -V # example versions: 11.1, 11.8, 12.1, etc.
Installez ensuite la version correspondante de torch. Voici des exemples de commandes :
# for CUDA 11.1
pip install torch==1.10.1+cu111 torchvision==0.11.2 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
# for CUDA 11.8
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu118
# for CUDA 12.1
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121
Enfin, installez les dépendances restantes :
pip install -r requirements.txt
Pour les utilisateurs de macOS avec Apple Silicon
La dépendance X-Pose ne prend pas en charge macOS et peut donc être ignorée. Le mode Humans fonctionne normalement, tandis que le mode Animals n’est pas pris en charge sur cette plateforme.
# for macOS with Apple Silicon users
pip install -r requirements_macOS.txt
2. Télécharger les poids préentraînés 📥
La manière la plus simple de télécharger les poids préentraînés consiste à utiliser le client en ligne de commande de Hugging Face :
# !pip install -U "huggingface_hub[cli]"
huggingface-cli download KlingTeam/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
Si le miroir principal n’est pas disponible, utilisez le point de terminaison alternatif :
# !pip install -U "huggingface_hub[cli]"
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download KlingTeam/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
Vous pouvez également télécharger le paquet complet de poids depuis les ressources du projet liées et placer les fichiers décompressés dans ./pretrained_weights.
Assurez-vous que la structure des répertoires correspond à la disposition attendue avant de commencer l’inférence.
3. Inférence 🚀
Prise en main rapide (humains) 👤
# For Linux and Windows users
python inference.py
# For macOS users with Apple Silicon
PYTORCH_ENABLE_MPS_FALLBACK=1 python inference.py
Une exécution réussie produit une vidéo de sortie nommée animations/s6--d0_concat.mp4. Elle combine la vidéo d’animation, l’image ou la vidéo source et le résultat généré.
Vous pouvez modifier l’entrée en spécifiant les arguments source et driving :
# source input is an image
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4
# source input is a video
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d0.mp4
# more options
python inference.py -h
Prise en main rapide (animaux) 🐱🐶
Le mode animaux est testé sous Linux et Windows avec un GPU NVIDIA.
Construisez d’abord l’opération MultiScaleDeformableAttention , puis exécutez le script d’inférence pour les animaux :
cd src/utils/dependencies/XPose/models/UniPose/ops
python setup.py build install
cd -
python inference_animals.py -s assets/examples/source/s39.jpg -d assets/examples/driving/wink.pkl --driving_multiplier 1.75 --no_flag_stitching
Une exécution réussie produit animations/s39--wink_concat.mp4.
Recadrage automatique de la vidéo d’animation 📢📢📢
Important
Pour votre propre vidéo d’animation, nous recommandons de :
- Recadrer selon un format d’image de 1:1 ou activer
--flag_crop_driving_video. - Garder la zone de la tête bien visible et minimiser les mouvements des épaules.
- Utiliser un visage de face avec une expression neutre dans la première image.
Voici un exemple de recadrage automatique :
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d13.mp4 --flag_crop_driving_video
Ajustez --scale_crop_driving_video et --vy_ratio_crop_driving_video lorsque le recadrage automatique doit être affiné.
Création de modèles de mouvement
Les modèles de mouvement générés automatiquement et se terminant par .pkl peuvent accélérer l’inférence et contribuer à protéger la confidentialité de la vidéo source :
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d5.pkl # portrait animation
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d5.pkl # portrait video editing
4. Interface Gradio 🤗
Le projet inclut une interface Gradio pour un flux de travail plus accessible :
# For Linux and Windows users
python app.py
# For macOS with Apple Silicon
PYTORCH_ENABLE_MPS_FALLBACK=1 python app.py
Le mode Animaux dispose d’une interface distincte et est testé sous Linux avec un GPU NVIDIA :
python app_animals.py
Vous pouvez spécifier --server_port, --share, ainsi que --server_name selon vos besoins.
Le mode facultatif --flag_do_torch_compile peut accélérer les inférences ultérieures après son étape d’optimisation initiale :
# enable torch.compile for faster inference
python app.py --flag_do_torch_compile
Remarque: torch.compile n’est pas pris en charge sous Windows et macOS.
Ou essayez le flux de travail en ligne via LivePortrait 🤗
5. Évaluation de la vitesse d’inférence 🚀🚀🚀
Utilisez le script de mesure de la vitesse pour évaluer le temps d’inférence de chaque module :
# For NVIDIA GPU
python speed.py
Les notes de mesure sont disponibles dans les ressources du projet.
Ressources communautaires 🤗
Découvrez les outils et ressources d’apprentissage proposés par la communauté LivePortrait.
Projets développés par la communauté
| Dépôt | Description | Auteur / Liens |
|---|---|---|
| AVTR-1 | Modèle de tête parlante conversationnelle en temps réel utilisant un conditionnement audio dyadique et un moteur de déformation de portrait de type LivePortrait. | @avaturn-live |
| ditto-talkinghead | Tête parlante pilotée par l’audio en temps réel. | ArXiv, Page d’accueil |
| FasterLivePortrait | Version en temps réel plus rapide utilisant TensorRT. | @warmshao |
| AdvancedLivePortrait-WebUI | WebUI dédié basé sur Gradio, créé à partir d’un workflow avancé de nœuds LivePortrait. | @jhj0517 |
| FacePoke | Application de transformation de la tête en temps réel contrôlée par le curseur. | @jbilcke-hf |
| FaceFusion | FaceFusion intègre LivePortrait comme processeur de restauration des expressions et de retouche faciale. | @henryruhs |
| sd-webui-live-portrait | Extension WebUI ajoutant les fonctionnalités de LivePortrait à un workflow Stable Diffusion existant. | @dimitribarbot |
| ComfyUI-LivePortraitKJ | Nœud ComfyUI utilisant MediaPipe comme alternative à InsightFace. | @kijai |
| ComfyUI-AdvancedLivePortrait | Nœud ComfyUI plus rapide avec aperçu en temps réel, qui a inspiré de nombreux outils communautaires. | @PowerHouseMan |
| comfyui-liveportrait | Nœud ComfyUI prenant en charge plusieurs visages et l’interpolation des expressions. | @shadowcz007 |
Playgrounds, 🤗 Espaces HuggingFace et autres
- Espace FacePoke
- Espace Expression Editor
- Expression Editor sur Replicate
- Démo de contrôle du visage en temps réel sur FAL
- Playground Replicate
- Nuke peut utiliser LivePortrait via un nœud communautaire ; les détails sont disponibles ici.
- LivePortrait est également disponible via Poe.
Tutoriels vidéo
- Flux de travail de LivePortrait, de vidéo à vidéo par @curiousrefuge
- Tutoriel Google Colab par @Planet Ai
- Lecture de l'article par @TwoMinutePapers
- LivePortrait avancé pour ComfyUI par TutoView
- Exploration de LivePortrait et Une analyse approfondie de LivePortrait par TheoreticallyMedia
- Tutoriel pratique sur LivePortrait par @AI Search
- Tutoriel ComfyUI par @Sebastian Kamph
- Un tutoriel sur BiliBili
Et les nombreuses contributions de la communauté continuent d’enrichir l’écosystème LivePortrait 💖
Remerciements 💐
Nous remercions les contributeurs de FOMM, Open Facevid2vid, SPADE, InsightFace et X-Pose, ainsi que l’ensemble de la communauté de la recherche ouverte, pour leurs travaux et leurs contributions.
Considérations éthiques 🛡️
Les technologies d’animation de portraits présentent des risques sociaux, notamment celui d’être utilisées pour créer des contenus trompeurs. Utilisez ce flux de travail de manière responsable, obtenez l’autorisation d’utiliser les images sources et signalez clairement les résultats synthétiques ou retouchés lorsque cela est nécessaire. Les résultats générés actuellement peuvent présenter des artefacts visuels susceptibles de faciliter leur détection. Le projet décline toute responsabilité juridique concernant les résultats générés.
Citation 💖
Si LivePortrait vous est utile dans le cadre de votre projet ou de vos recherches, citez ces travaux à l’aide du BibTeX suivant :
@article{liveportrait2024,
title = {LivePortrait: Efficient Portrait Animation with Stitching and Retargeting Control},
author = {LivePortrait Research Team},
journal = {arXiv preprint},
year = {2024}
}
Vive la recherche ouverte.
Contact 📧
Recherche LivePortrait; pour toute question ou proposition de collaboration, vous pouvez commencer par le flux de travail du projet.
Historique des étoiles 🌟
Cliquez pour voir le graphique des étoiles