Sprint Dreambooth en Keras
Cette paget rĂ©sume toutes les informations pertinentes requises pour lâĂ©vĂ©nement. đ.
Introduction
Dreambooth est une technique de finetuning permettant dâenseigner de nouveaux concepts visuels Ă des modĂšles de diffusion conditionnĂ©s par le texte en utilisant seulement 3 Ă 5 images. Avec Dreambooth, vous pouvez gĂ©nĂ©rer des images drĂŽles et rĂ©alistes de votre chien, de vous-mĂȘme et de nâimporte quel concept avec quelques images en utilisant Stable Diffusion. DreamBooth a Ă©tĂ© proposĂ© dans DreamBooth : Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation par Ruiz et al. (2022)
Nous allons entraĂźner les modĂšles Dreambooth Ă lâaide de KerasCV et construire des dĂ©monstrations sur ces modĂšles.
Dates importantes
- Lancement de lâĂ©vĂ©nement : 6 mars 2023
Avec Nataniel Ruiz sur DreamBooth, François Chollet sur KerasCV et Apolinario Passos sur đ€ Diffusers
- Début du sprint : 7 mars 2023
- Fin du sprint : 1er avril 2023
- Résultats : 7 avril 2023
DĂ©marrer đ
Pour commencer, rejoignez-nous sur hf.co/join/discord et prenez le rĂŽle #open-source, et rencontrez-nous sur le canal #keras-working-group.
Nous hĂ©bergerons nos dĂ©monstrations dans cette organisation sur Hugging Face Hub : keras-dreambooth, envoyez une demande ici si vous souhaitez soumettre une proposition đ
Nous allons :
- Finetuner Stable Diffusion sur nâimporte quel concept que nous voulons en utilisant Dreambooth,
- Pousser le modĂšle vers le Hub dâHugging Face,
- Remplir la carte du modĂšle,
- Construire une démo à partir du modÚle.
Avertissement: Les modĂšles entraĂźnĂ©s doivent ĂȘtre dans lâune des 4 catĂ©gories mentionnĂ©es dans la section Soumission. Veuillez y jeter un coup dâĆil avant dâentraĂźner votre modĂšle.
EntraĂźnement du modĂšle
Vous pouvez trouver le notebook ici (en anglais) et lâadapter Ă votre propre jeu de donnĂ©es.
Quelques inspirations pour le finetuning :
- Lowpoly World : Ce modĂšle gĂ©nĂšre des mondes low poly đ€Żđ
- Future Diffusion : Ce modĂšle gĂ©nĂšre des images dans des concepts de science-fiction futuristes đ€
- Fantasy sword : Ce modĂšle gĂ©nĂšre des Ă©pĂ©es pour des jeux Ă thĂšme fantastique đ§ââïž
Si vous avez besoin de plus dâindications sur lâimplĂ©mentation de Dreambooth avec Keras, vous pouvez consulter ce dĂ©pĂŽt.
Dreambooth avec KerasCV
Pour lâinstant, les options dâinfĂ©rence et de dĂ©ploiement de KerasCV sont limitĂ©es, et câest lĂ que la bibliothĂšque diffusers vient Ă la rescousse. Avec seulement quelques lignes de code, nous pouvons convertir un modĂšle KerasCV en un modĂšle diffusers et utiliser les pipelines diffusers pour effectuer lâinfĂ©rence. Vous pouvez obtenir plus dâinformations ici. Consultez aussi ce Space pour convertir votre modĂšle KerasCV en un modĂšle diffusers.
Les dĂ©pĂŽts diffusers sur le Hub bĂ©nĂ©ficient dâune API dâinfĂ©rence gratuite et de petits widgets dans la page du modĂšle oĂč les utilisateurs peuvent jouer avec le modĂšle.
from diffusers import StableDiffusionPipeline
# point de contrĂŽle de Stable Diffusion converti de KerasCV
model_ckpt = "sayakpaul/text-unet-dogs-kerascv_sd_diffusers_pipeline"
pipeline = StableDiffusionPipeline.from_pretrained(model_ckpt)
pipeline.to("cuda")
unique_id = "sks"
class_label = "dog"
prompt = f"A photo of {unique_id} {class_label} in a bucket"
image = pipeline(prompt, num_inference_steps=50).images[0]
Hébergement du modÚle
Ă la fin du notebook vous verrez une section dĂ©diĂ©e Ă lâhĂ©bergement, et une section sĂ©parĂ©e pour lâinfĂ©rence. Nous utiliserons les fonctions de chargement et de poussĂ©e de modĂšles spĂ©cifiques Ă Keras de la bibliothĂšque huggingface_hub : push_to_hub_keras et from_pretrained_keras. Nous allons dâabord pousser le modĂšle en utilisant push_to_hub_keras. Une fois le modĂšle poussĂ©, vous verrez que le modĂšle est hĂ©bergĂ© avec une carte de modĂšle comme ci-dessous :

Pour mieux versionner les modĂšles, permettre la dĂ©couvrabilitĂ© et la reproductibilitĂ©, nous allons remplir la carte de modĂšle. Cliquez sur *Edit model card*. Nous allons dâabord remplir la section Metadata de la fiche de modĂšle. Si votre modĂšle est entraĂźnĂ© avec un jeu de donnĂ©es du Hub, vous pouvez remplir la section des jeux de donnĂ©es avec le jeu de donnĂ©es. Nous allons remplir pipeline_tag avec text-to-image et choisir une licence pour notre modĂšle.

Ensuite, nous remplirons la partie markdown. Les hyperparamĂštres et le graphe sont automatiquement gĂ©nĂ©rĂ©s, nous pouvons donc Ă©crire une courte explication pour la description, lâutilisation prĂ©vue et le jeu de donnĂ©es.
Vous pouvez trouver lâexemple de dĂ©pĂŽt ci-dessous ici.
Démo
Nous allons utiliser Gradio pour construire nos dĂ©monstrations pour les modĂšles que nous avons entraĂźnĂ©s. Avec la classe Interface, câest simple :
from huggingface_hub import from_pretrained_keras
from keras_cv import models
import gradio as gr
sd_dreambooth_model = models.StableDiffusion(
img_width=512, img_height=512
)
db_diffusion_model = from_pretrained_keras("merve/dreambooth_diffusion_model")
sd_dreambooth_model._diffusion_model = db_diffusion_model
# générer des images
def infer(prompt):
generated_images = sd_dreambooth_model.text_to_image(
prompt
)
return generated_images
output = gr.Gallery(label="Outputs").style(grid=(2,2))
# la fonction de passage, le type d'entrée pour le prompt, la sortie pour les images multiples
gr.Interface(infer, inputs=["text"], outputs=[output]).launch()
Vous pouvez consulter le fichier app.py de lâapplication ci-dessous et le rĂ©utiliser pour votre modĂšle !
Dreambooth Submission - a Hugging Face Space par keras-dreambooth
Cette application gĂ©nĂšre des images dâun corgi đ¶

Hébergement de la démonstration sur Spaces
Une fois notre application terminĂ©e, nous pouvons crĂ©er un Space sur Hugging Face pour hĂ©berger notre application. Vous pouvez aller sur huggingface.co, cliquer sur votre profil en haut Ă droite et sĂ©lectionner âNew Spaceâ.

Nous pouvons nommer notre Space, choisir une licence et sélectionner « Gradio » comme Space SDK.

AprĂšs avoir créé le Space, vous pouvez utiliser soit les instructions ci-dessous pour cloner le dĂ©pĂŽt localement, ajouter vos fichiers et pousser, OU, lâinterface graphique pour crĂ©er les fichiers et Ă©crire le code dans le navigateur.

Pour télécharger votre fichier, cliquez sur « Add File » et faites glisser/déposer votre fichier.

Enfin, nous devons créer un fichier appelé requirements.txt et ajouter les conditions du projet Dreambooth comme ci-dessous :
keras-cv
tensorflow
huggingface-hub
Et votre application devrait ĂȘtre opĂ©rationnelle !
Nous hĂ©bergerons nos modĂšles et nos Spaces sous cette organisation. Vous pouvez transporter vos modĂšles et Spaces dans lâonglet paramĂštres sous Rename or transfer this model et sĂ©lectionner keras-dreambooth dans le menu dĂ©roulant.
Si vous ne voyez pas keras-dreambooth dans la liste dĂ©roulante, il est probable que vous ne soyez pas membre de lâorganisation. Utilisez ce lien pour demander Ă rejoindre lâorganisation.
Soumission
Vous pouvez soumettre votre projet dans trois thĂšmes :
- Nature et animaux (
nature) - Univers de science-fiction/fantastique (
sci-fi) - Conscient (
consentful) : Associez-vous Ă un artiste pour finetuner son style avec son consentement ! Assurez-vous dâinclure une rĂ©fĂ©rence au consentement explicite de lâartiste (par exemple un tweet) dans votre carte de modĂšle. - Carte blanche (
wild-card) : Si votre soumission appartient Ă une catĂ©gorie qui nâest pas mentionnĂ©e ci-dessus, nâhĂ©sitez pas Ă lâĂ©tiqueter avecwild-cardafin que nous puissions lâĂ©valuer en dehors de cette catĂ©gorie.
Ajoutez les catégories et leurs identifiants à votre carte modÚle et ajoutez keras-dreambooth aux métadonnées dans la section des tags. Voici un exemple de carte de modÚle. Toutes les soumissions seront compilées dans ce classement et classées en fonction du nombre de likes sur un espace donné afin de déterminer les gagnants.
Prix
Nous choisirons trois gagnants parmi les applications soumises, en fonction du nombre de likes accordés à un espace dans une catégorie donnée.
đïž Le premier remportera un bon dâachat de 100$ sur hf.co/shop ou un an dâabonnement Ă Hugging Face Pro
đïž La deuxiĂšme remportera un bon dâachat de 50$ sur hf.co/shop ou le livre Natural Language Processing with Transformers.
đïž Le troisiĂšme remportera un bon dâachat de 30$ sur hf.co/shop ou trois mois dâabonnement Ă Hugging Face Pro