Sommaire
- Architecture technique et fonctionnement de SDXL
- Quoi de neuf dans SDXL ?
- Paramètres optimaux pour SDXL
- Échelle CFG
- Comprendre l’orientation de la diffusion
- Choisir la bonne pondération d'orientation
- Étapes d’échantillonage (steps)
- Comprendre la génération itérative
- Trouver l’équilibre entre vitesse et qualité
- Scheduler
- Prompt négatif
Stable Diffusion XL a marqué un tournant dans la génération d’image par IA en apportant une solution Open Source capable de créer des images de qualité en haute définition. Il représente aussi véritable progrès dans la composition d’image et le rendu photoréaliste, en particulier pour les visages.
Dans cet article, nous allons voir ensemble ce qui a changé avec Stable Diffusion XL (SDXL), quelle est son architecture actuelle et quels sont les paramètres optimaux pour exploiter tout son potentiel.
Architecture technique et fonctionnement de SDXL
SDXL introduit plusieurs améliorations majeures.
L’U-Net, véritable colonne vertébrale de l’IA générative, est plus grand et combine un plus grand nombre de blocs d'attention et un contexte d'attention croisée plus étendu.
Comme pour précédentes version de Stable Diffusion 1.5 et 2.1, le modèle fonctionne sur base de plusieurs composants experts. Au départ, le modèle de base génère un bruit latent, qui est ensuite affinés lors des étapes de débruitage. Pour cela, le modèle de diffusion utilise une approche unique en deux temps :
- Forward Diffusion : Un bruit aléatoire est introduit en quantité controllée sur une image.
- Reverse Diffusion : L’image est débruitée pour en reconstruire le contenu original.
C’est le réseau U-Net qui soutient ce processus : il a été entrainé à prédire le bruit à partir d'une image aléatoirement bruitée et à calculer la perte entre le bruit prédit et le bruit réel. Avec un grand ensemble de données et de multiples étapes de bruitage, le modèle devient alors capable de faire des prédictions précises sur la manière dont le bruits modifie les images. Grâce à cela, le modèle peut identifier si un bruit est plus ou moins proche d’une image finale et orienter la suppression de bruit en fonction.
Quoi de neuf dans SDXL ?
SDXL introduit un nouvel encodeur de texte. Celui-ci a été entrainé avec des descriptions (prompts) plus verbeuses et détaillées et associés à des images de meilleure résolution. Cela permet à SDXL de mieux comprendre ce qui lui est demandé.
Parmi les autres améliorations notables de SDXL, nous pouvons aussi noter que :
- SDXL 1.0 dispose d'un plus grand nombre de paramètres U-Net, ce qui permet de générer des images plus complexes.
- Contrairement à ses prédécesseurs, SDXL adopte une distribution non uniforme, ouvrant la voie à des capacités d'apprentissage améliorées.
- Avec l'inclusion d'OpenCLIP ViT-bigG et d'un codeur de texte supplémentaire, CLIP ViT-L, SDXL intègre efficacement les informations textuelles dans le processus de génération d'images.
- L'introduction des paramètres "Size-Conditioning", "Crop-Conditioning" et "Multi-Aspect Conditioning" permet au modèle d'adapter sa génération d'images en fonction de divers indices.
- L’ajout d’un second modèle d’affinement, le Refiner capable de traiter des données de haute qualité et de haute résolution, et de capturer des détails locaux complexes. Il est conçu pour améliorer les images de scène à faible bruit, ce qui permet d'obtenir des images à haute fréquence de qualité supérieure. Le Refiner sert alors de modèle de suivi qui intervient après le modèle de base pour améliorer la qualité de l'image.
Dans l'ensemble, SDXL 1.0 surpasse ses prédécesseurs et se place au premier rang des générateurs d'images les plus modernes.
Paramètres optimaux pour SDXL
Pour exploiter tout le potentiel de SDXL 1.0, il est essentiel de comprendre ses principaux paramètres :
Échelle CFG
Egalement appelée échelle d’orientation (Guidance Scale), elle détermine la force du classificateur qui guide la processus d’échantillonnage.
Comprendre l’orientation de la diffusion
Même si les modèles de Diffusion sont très efficaces pour l’échantillonnage, la qualités et la diversités des échantillons obtenus restent imparfaites.
Traditionnellement, on utilise donc un classificateur externe pour orienter le processus d'échantillonnage, garantissant ainsi une meilleure qualité de l'échantillon. Mais cette méthode ajoute une complexité puisqu’elle nécessite d’entrainer ce classificateur supplémentaire.
Stable Diffusion utilise une autre méthode Classifier-Free Guidance (orientation par diffusion sans classificateur). Cette approche innovante utilise un double modèle de diffusion : un modèle conditionnel (adapté à des conditions spécifiques) et un modèle inconditionnel (pour la génération de formes libres). En fusionnant les résultats de ces deux modèles, SDXL parvient à un équilibre entre la qualité et la diversité de l'échantillon, sans avoir recours à un classificateur externe.
Cette méthode est non seulement plus simple, puisqu'elle évite d'avoir recours à un classificateur supplémentaire mais est un peu plus lente puisqu'elle implique un double traitement à chaque étape.
Choisir la bonne pondération d'orientation
Le poids de l’orientation est essentiel pour déterminer la qualité et l'alignement des images générées par rapport au prompt donné.
Il s'agit d'un indicateur qui va contrôlé la force du modèle conditionnel par rapport au texte, le degré d'adhérence à votre saisie.
Une valeur de 0 produira des images pratiquement aléatoires, sans vraiment tenir compte du prompt. Une valeur plus élevée renforce l’importance du modèle conditionné et l’adhérence au texte.
Optez donc pour des valeurs plus faibles si vous êtes d'humeur à obtenir des résultats plus aléatoire ou créatifs mais qui s’éloigneront plus de votre description. À l'inverse, des valeurs plus élevées produiront des images qui reflèteront plus fidèlement votre prompt, mais qui risquent d'être moins imaginatives (et même moins qualitatives).
Avec SDXL, la fourchette idéale se situe entre 3 et 13.
Voici par exemple 6 images, produites avec le même prompts mais avec des échelles CFG différentes :
Voir le prompt
cinematic film still humanoid goat wearing a black suit, detailed photo, depicting everyday life, sitting on a bench at the park, upper body shot. shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, grainy
Pour en savoir plus sur le CFG et son fonctionnement, consultez également notre guide du CFG Scale
Étapes d’échantillonage (steps)
Il s'agit du nombre d'étapes d’échantillonnage (ou de débruitage) effectuées.
Comprendre la génération itérative
Les modèles de diffusion sont des processus itératifs. Ils commence par générer un bruit aléatoire. A chaque étape, une partie de ce bruit est supprimée, ce qui permet d'obtenir une image de meilleure qualité.
Le paramètre d’étapes détermine le nombre d'itérations ou de cycles que le modèle subira. Un plus grand nombre de ces steps permet généralement d'obtenir une image de meilleure qualité au détriment d'un calcul d’inférence plus lent.
Trouver l’équilibre entre vitesse et qualité
Bien qu'un plus grand nombre d'étapes de débruitage améliore la qualité du résultat, il est faut chercher trouver l’équilibre entre qualité et vitesse - d’autant plus que passé un certains cap, les nouvelles étapes n’apportent plus vraiment de changement pertinents.
Pour SDXL, il faut compter sur environ 30 étapes d'échantillonnage pour obtenir des images de bonne qualité. Au-delà de la trentaine, chaque étape offre un rendement décroissant. Et à partir de 50, il n'est pratiquement plus possible de gagner en qualité d’image.
Comme mentionné ci-dessus, SDXL est livré avec deux modèles : le modèle de base et le Refiner. Lorsque le second est actif, il prend la place du premier après un certains nombre d’étapes, définies en %. A 0,8, il prends donc le relais à 80% des érapes. Soit, à partir de l’étape 24 sur 30.
Voici un exemple en 6 images produites avec le même prompts mais en variant le nombre d’étapes :
Voir le prompt
cinematic film still humanoid crocodile wearing a moutarde suit, detailed photo, depicting everyday life, sitting in a bar, upper body shot. shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, grainy
Scheduler
Dans le contexte de la diffusion stable, les scheduler sont des algorithmes utilisés avec la composante U-Net. Ils jouent un rôle central dans le processus de débruitage et opèrent plusieurs à chaque étape de l’itération pour produire une image propre à partir d'une image-bruit entièrement aléatoire.
La fonction principale de ces algorithmes de planification est de perturber progressivement les données avec un bruit aléatoire croissant (connu sous le nom de processus de "diffusion"), puis d'éliminer séquentiellement ce bruit. C’est pour cela qu’ils sont parfois aussi appelés "échantillonneurs" (sampler en anglais).
Avec SDXL 1.0, certains scheduler peuvent générer une image satisfaisante en seulement 20 étapes. Parmi eux, UniPC et Euler Ancestral sont réputés pour fournir les résultats les plus distincts et les plus rapides par rapport à leurs homologues. Beaucoup d’utilisateurs leur préfèrent cependant des schedulers comme les DPM++ 2M qui demandent plus d’étapes mais atteignent souvent de meilleur résultats.
Voici par exemple 4 images générée avec le même prompts et le même nombre d’étape (25) mais avec diffèrent scheduler.
voir le prompt
cinematic film still humanoid panda wearing a pink suit, detailed photo, depicting everyday life, sitting on a wooden chair, upper body shot. shallow depth of field, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, grainy
Prompt négatif
Le prompt négatif est une technique qui permet de spécifier ce que vous ne souhaitez pas voir dans le résultat généré, sans fournir d'informations supplémentaires.
Bien que les prompts négatifs ne soient pas aussi essentielles que le prompt principale, ils jouent un rôle crucial dans la prévention de la génération d'images indésirables ou étranges. Leur utilisation garantit que le contenu généré s'aligne plus strictement sur l'intention de l'utilisateur en excluant explicitement les éléments indésirables.
Avec SDXL vous pouvez vous contenter d’un prompt négatif par défaut court, et l’enrichir au cas pas cas si besoin.
Exemple de prompt négatif à utiliser par défaut : blurry, text, watermark, logo, signature, sketch, ugly.
Consultez également notre article sur l’art du negative prompting.
Voilà, vous connaissez maintenant les pricnipaux paramètres de la génération d’image avec Stable Diffusion XL et savez comment les utiliser de manière optimale. Il ne vous reste plus qu’à vous y mettre pour créer vos images avec l’IA.
Ecrit par