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 :

  1. Finetuner Stable Diffusion sur n’importe quel concept que nous voulons en utilisant Dreambooth,
  2. Pousser le modùle vers le Hub d’Hugging Face,
  3. Remplir la carte du modĂšle,
  4. 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 :

  1. Lowpoly World : Ce modĂšle gĂ©nĂšre des mondes low poly đŸ€ŻđŸŒ
  2. Future Diffusion : Ce modĂšle gĂ©nĂšre des images dans des concepts de science-fiction futuristes đŸ€–
  3. 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 :

Référentiel

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.

Métadonnées

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 đŸ¶

Dreambooth App

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”.

New Space

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

Space Configuration

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.

Spaces Landing

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

New Space Landing

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 avec wild-card afin 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