Ce référentiel est l'implémentation officielle d'AnimateDiff [ICLR2024 Spotlight]. Il s'agit d'un module plug-and-play transformant la plupart des modèles de conversion texte-image communautaires en générateurs d'animation, sans nécessiter de formation supplémentaire.
AnimateDiff : animez vos modèles de diffusion texte-image personnalisés sans réglage spécifique
Yuwei Guo, Ceyuan Yang✝, Anyi Rao, Zhengyang Liang, Yaohui Wang, Yu Qiao, Maneesh Agrawala, Dahua Lin, Bo Dai (✝Auteur correspondant)
Remarque : la branche main
concerne Stable Diffusion V1.5 ; pour Stable Diffusion XL, veuillez vous référer à la branche sdxl-beta
.
Plus de résultats peuvent être trouvés dans la Galerie. Certains d’entre eux sont apportés par la communauté.
Modèle : ToonYou
Modèle : Vision réaliste V2.0
Remarque : AnimateDiff est également officiellement pris en charge par les diffuseurs. Visitez le didacticiel des diffuseurs AnimateDiff pour plus de détails. Les instructions suivantes concernent l'utilisation de ce référentiel .
Remarque : Pour tous les scripts, le téléchargement des points de contrôle sera automatiquement géré, de sorte que l'exécution du script peut prendre plus de temps lors de sa première exécution.
git clone https://github.com/guoyww/AnimateDiff.git
cd AnimateDiff
pip install -r requirements.txt
Les échantillons générés se trouvent dans le dossier samples/
.
python -m scripts.animate --config configs/prompts/1_animate/1_1_animate_RealisticVision.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_2_animate_FilmVelvia.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_3_animate_ToonYou.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_4_animate_MajicMix.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_5_animate_RcnzCartoon.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_6_animate_Lyriel.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_7_animate_Tusun.yaml
python -m scripts.animate --config configs/prompts/2_motionlora/2_motionlora_RealisticVision.yaml
python -m scripts.animate --config configs/prompts/3_sparsectrl/3_1_sparsectrl_i2v.yaml
python -m scripts.animate --config configs/prompts/3_sparsectrl/3_2_sparsectrl_rgb_RealisticVision.yaml
python -m scripts.animate --config configs/prompts/3_sparsectrl/3_3_sparsectrl_sketch_RealisticVision.yaml
Nous avons créé une démo Gradio pour rendre AnimateDiff plus facile à utiliser. Par défaut, la démo s'exécutera sur localhost:7860
.
python -u app.py
AnimateDiff vise à apprendre des a priori de mouvement transférables qui peuvent être appliqués à d'autres variantes de la famille Stable Diffusion. À cette fin, nous concevons le pipeline de formation suivant composé de trois étapes.
Dans l'étape 1. Atténuer les effets négatifs , nous entraînons l' adaptateur de domaine , par exemple v3_sd15_adapter.ckpt
, pour qu'il s'adapte aux artefacts visuels défectueux (par exemple, les filigranes) dans l'ensemble de données d'entraînement. Cela peut également bénéficier à l’apprentissage démêlé du mouvement et de l’apparence spatiale. Par défaut, l'adaptateur peut être supprimé lors de l'inférence. Il peut également être intégré au modèle et ses effets peuvent être ajustés par un scaler lora.
Dans l'étape 2. Learn Motion Priors , nous entraînons le module de mouvement , par exemple v3_sd15_mm.ckpt
, pour apprendre les modèles de mouvement du monde réel à partir de vidéos.
Dans l'étape 3. (facultatif) Adapter aux nouveaux modèles , nous entraînons MotionLoRA , par exemple v2_lora_ZoomIn.ckpt
, pour adapter efficacement le module de mouvement à des modèles de mouvement spécifiques (zoom de la caméra, roulement, etc.).
SparseCtrl vise à ajouter plus de contrôle aux modèles texte-vidéo en adoptant certaines entrées clairsemées (par exemple, quelques images RVB ou entrées d'esquisse). Ses détails techniques peuvent être trouvés dans le document suivant :
SparseCtrl : ajout de contrôles clairsemés aux modèles de diffusion texte-vidéo
Yuwei Guo, Ceyuan Yang✝, Anyi Rao, Maneesh Agrawala, Dahua Lin, Bo Dai (✝Auteur correspondant)
Dans cette version, nous utilisons Domain Adapter LoRA pour le réglage fin du modèle d'image, ce qui offre plus de flexibilité lors de l'inférence. Nous implémentons également deux encodeurs SparseCtrl (image RVB/gribouillage), qui peuvent prendre un nombre arbitraire de cartes de conditions pour contrôler le contenu de l'animation.
Nom | ÉtreindreVisage | Taper | Stockage | Description |
---|---|---|---|---|
v3_adapter_sd_v15.ckpt | Lien | Adaptateur de domaine | 97,4 Mo | |
v3_sd15_mm.ckpt.ckpt | Lien | Module de mouvement | 1,56 Go | |
v3_sd15_sparsectrl_scribble.ckpt | Lien | Encodeur SparseCtrl | 1,86 Go | état de gribouillage |
v3_sd15_sparsectrl_rgb.ckpt | Lien | Encodeur SparseCtrl | 1,85 Go | État de l'image RVB |
Entrée (par RealisticVision) | Animation | Saisir | Animation |
Gribouillage de saisie | Sortir | Gribouillis de saisie | Sortir |
Lancez le module Motion (version bêta) sur SDXL, disponible sur Google Drive / HuggingFace / CivitAI. Des vidéos haute résolution (c'est-à-dire des images de 1 024 x 1 024 x 16 avec différents formats d'image) pourraient être produites avec/sans modèles personnalisés. L'inférence nécessite généralement environ 13 Go de VRAM et des hyperparamètres ajustés (par exemple, des étapes d'échantillonnage), en fonction des modèles personnalisés choisis.
Rendez-vous sur la branche sdxl pour plus de détails sur l'inférence.
Nom | ÉtreindreVisage | Taper | Espace de stockage |
---|---|---|---|
mm_sdxl_v10_beta.ckpt | Lien | Module de mouvement | 950 Mo |
SDXL d'origine | Communauté SDXL | Communauté SDXL |
Dans cette version, le module de mouvement mm_sd_v15_v2.ckpt
(Google Drive / HuggingFace / CivitAI) est formé sur une résolution et une taille de lot plus grandes. Nous avons constaté que la formation à grande échelle contribue considérablement à améliorer la qualité et la diversité des mouvements.
Nous prenons également en charge MotionLoRA pour huit mouvements de caméra de base. Les points de contrôle MotionLoRA n'occupent que 77 Mo de stockage par modèle et sont disponibles sur Google Drive / HuggingFace / CivitAI.
Nom | ÉtreindreVisage | Taper | Paramètre | Stockage |
---|---|---|---|---|
mm_sd_v15_v2.ckpt | Lien | Module de mouvement | 453 M | 1,7 Go |
v2_lora_ZoomIn.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
v2_lora_ZoomOut.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
v2_lora_PanLeft.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
v2_lora_PanRight.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
v2_lora_TiltUp.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
v2_lora_TiltDown.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
v2_lora_RollingClockwise.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
v2_lora_RollingAnticlockwise.ckpt | Lien | MouvementLoRA | 19 M | 74 Mo |
Zoomer | Zoom arrière | Zoom panoramique vers la gauche | Zoom panoramique à droite | ||||
Inclinaison vers le haut | Inclinaison vers le bas | Rouler dans le sens inverse des aiguilles d'une montre | Rouler dans le sens des aiguilles d'une montre | ||||
Voici une comparaison entre mm_sd_v15.ckpt
(à gauche) et mm_sd_v15_v2.ckpt
amélioré (à droite).
La première version d'AnimateDiff !
Nom | ÉtreindreVisage | Paramètre | Espace de stockage |
---|---|---|---|
mm_sd_v14.ckpt | Lien | 417 M | 1,6 Go |
mm_sd_v15.ckpt | Lien | 417 M | 1,6 Go |
Veuillez consulter les étapes de la formation pour plus de détails.
AnimateDiff pour une interface Web à diffusion stable : sd-webui-animatediff (par @continue-revolution)
AnimateDiff pour ComfyUI : ComfyUI-AnimateDiff-Evolved (par @Kosinkadink)
Google Colab : Colab (par @camenduru)
Ce projet est destiné à un usage académique. Nous déclinons toute responsabilité quant au contenu généré par les utilisateurs. Veuillez également noter que notre seul site Web officiel est https://github.com/guoyww/AnimateDiff et https://animatediff.github.io, et que tous les autres sites Web ne sont PAS associés à nous à AnimateDiff.
Yuwei Guo : [email protected]
Ceyuan Yang : [email protected]
Bo Dai : [email protected]
@article{guo2023animatediff,
title={AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning},
author={Guo, Yuwei and Yang, Ceyuan and Rao, Anyi and Liang, Zhengyang and Wang, Yaohui and Qiao, Yu and Agrawala, Maneesh and Lin, Dahua and Dai, Bo},
journal={International Conference on Learning Representations},
year={2024}
}
@article{guo2023sparsectrl,
title={SparseCtrl: Adding Sparse Controls to Text-to-Video Diffusion Models},
author={Guo, Yuwei and Yang, Ceyuan and Rao, Anyi and Agrawala, Maneesh and Lin, Dahua and Dai, Bo},
journal={arXiv preprint arXiv:2311.16933},
year={2023}
}
Base de code basée sur Tune-a-Video.