Clause de non-responsabilité
Il s'agit d'un projet de recherche, PAS d'un produit commercial. Les utilisateurs ont la liberté de créer des images à l'aide de cet outil, mais ils doivent se conformer aux lois locales et l'utiliser de manière responsable. Les développeurs n'assument aucune responsabilité en cas d'utilisation abusive potentielle par les utilisateurs.
Nouvelles et mise à jour
- [29 janvier] Mise à jour pour prendre en charge les diffuseurs == 0.24.0 !
- [23 octobre] Le code et les données de DragBench sont publiés ! Veuillez consulter le fichier README sous "drag_bench_evaluation" pour plus de détails.
- [16 octobre] Intégrez FreeU lors du déplacement de l'image générée.
- [3 octobre] Accélération de la formation LoRA lors de l'édition d'images réelles. ( Maintenant seulement environ 20 secondes sur l'A100 ! )
- [3 septembre] Sortie v0.1.0.
- Activez le déplacement des images générées par diffusion.
- Présentation d'un nouveau mécanisme de guidage qui améliore considérablement la qualité des résultats de glissement. (Inspiré par MasaCtrl)
- Activer le glissement d'images avec un rapport hauteur/largeur arbitraire
- Ajout de la prise en charge de DPM++Solver (images générées)
- [18 juillet] Sortie v0.0.1.
- Intégrez la formation LoRA dans l’interface utilisateur. Pas besoin d'utiliser un script de formation et tout peut être facilement fait dans l'interface utilisateur !
- Optimisez la disposition de l’interface utilisateur.
- Activer l'utilisation d'une meilleure VAE pour les yeux et les visages (voir ceci)
- [8 juillet] Sortie v0.0.0.
- Implémenter la fonction de base de DragDiffusion
Installation
Il est recommandé d'exécuter notre code sur un GPU Nvidia avec un système Linux. Nous n'avons pas encore testé sur d'autres configurations. Actuellement, il faut environ 14 Go de mémoire GPU pour exécuter notre méthode. Nous continuerons d'optimiser l'efficacité de la mémoire
Pour installer les bibliothèques requises, exécutez simplement la commande suivante :
conda env create -f environment.yaml
conda activate dragdiff
Exécuter DragDiffusion
Pour commencer, en ligne de commande, exécutez ce qui suit pour démarrer l'interface utilisateur de gradio :
Vous pouvez consulter notre GIF ci-dessus qui démontre l'utilisation de l'interface utilisateur étape par étape.
Fondamentalement, cela comprend les étapes suivantes :
Cas 1 : faire glisser des images réelles d'entrée
1) former une LoRA
- Déposez notre image d’entrée dans la case la plus à gauche.
- Saisissez une invite décrivant l'image dans le champ "invite"
- Cliquez sur le bouton "Train LoRA" pour entraîner une LoRA à partir de l'image d'entrée.
2) faire l'édition "glisser"
- Dessinez un masque dans la case la plus à gauche pour spécifier les zones modifiables.
- Cliquez sur la poignée et les points cibles dans la zone du milieu. Vous pouvez également réinitialiser tous les points en cliquant sur "Annuler le point".
- Cliquez sur le bouton "Exécuter" pour exécuter notre algorithme. Les résultats modifiés seront affichés dans la case la plus à droite.
Cas 2 : faire glisser des images générées par diffusion
1) générer une image
- Remplissez les paramètres de génération (par exemple, invite positive/négative, paramètres sous Generation Config & FreeU Parameters).
- Cliquez sur "Générer une image".
2) faire "glisser" sur l'image générée
- Dessinez un masque dans la case la plus à gauche pour spécifier les zones modifiables
- Cliquez sur les points de poignée et les points cibles dans la zone du milieu.
- Cliquez sur le bouton "Exécuter" pour exécuter notre algorithme. Les résultats modifiés seront affichés dans la case la plus à droite.
Licence
Le code lié à l'algorithme DragDiffusion est sous licence Apache 2.0.
BibTeX
Si vous trouvez notre dépôt utile, pensez à laisser une étoile ou à citer notre article :)
@article { shi2023dragdiffusion ,
title = { DragDiffusion: Harnessing Diffusion Models for Interactive Point-based Image Editing } ,
author = { Shi, Yujun and Xue, Chuhui and Pan, Jiachun and Zhang, Wenqing and Tan, Vincent YF and Bai, Song } ,
journal = { arXiv preprint arXiv:2306.14435 } ,
year = { 2023 }
}
Contact
Pour toute question sur ce projet, veuillez contacter Yujun ([email protected])
Reconnaissance
Cette œuvre est inspirée de l'incroyable DragGAN. Le code de formation lora est modifié à partir d'un exemple de diffuseurs. Les échantillons d'images sont collectés à partir d'Unsplash, Pexels, Pixabay. Enfin, un grand bravo à tous les incroyables modèles et bibliothèques de diffusion open source.
Liens connexes
- Faites glisser votre GAN : manipulation interactive basée sur des points sur le collecteur d'images génératives
- MasaCtrl : contrôle mutuel de l'auto-attention sans réglage pour une synthèse et une édition d'images cohérentes
- Correspondance émergente issue de la diffusion d’images
- DragonDiffusion : activation de la manipulation par glisser-déposer sur les modèles de diffusion
- FreeDrag : le suivi des points n'est pas nécessaire pour l'édition d'images interactive basée sur des points
Problèmes courants et solutions
- Pour les utilisateurs qui ont du mal à charger des modèles depuis huggingface en raison de contraintes Internet, veuillez 1) suivre ces liens et télécharger le modèle dans le répertoire « local_pretrained_models » ; 2) Exécutez "drag_ui.py" et sélectionnez le répertoire de votre modèle pré-entraîné dans "Paramètres d'algorithme -> Configuration du modèle de base -> Chemin du modèle de diffusion".