Tout savoir du CFG Scale

Qu’est ce que le CFG Scale et comment l’utiliser avec Stable Diffusion ?

Tout savoir du CFG Scale
Do not index
Do not index
Publish
Publish
Parmi tous les paramètres de génération d’image avec Stable Diffusion, la Classifier-Free Guidance, appelée CFG Scale, se distingue comme un levier essentiel, dictant le degré de conformité des images générées aux instructions textuelles.
Comprendre ce CFG Scale et son utilisation est donc primordial pour exploiter pleinement le potentiel de Stable Diffusion.

Qu'est-ce que le CFG Scale ?

Le CFG Scale est un paramètre qui régule l'influence des instructions textuelles sur les images générées.
Il s'agit d'une valeur numérique, généralement comprise entre 1 et 20, qui influence la manière dont Stable Diffusion interprète et suit le prompt textuel fourni par l'utilisateur. Plus la valeur est élevée, plus cette Classifier-Free Guidance sera forte.
En pratique, le CFG Scale agit principalement en modulant la propagation d'informations entre l'invite textuelle et les couches latentes du modèle de diffusion et en définissant la pondération des vecteurs de bruit utilisés pendant l’inférence.
Une valeur élevée renforce la propagation des informations textuelles et augmente la pondérations des vecteurs cohérents - ce qui favorise un meilleur respect de instructions du prompt et des images plus réalistes.
A l’inverse, une valeur plus faible réduit la propagation et réduit la pondération - ce qui permet l’introduction de concepts plus divergents et surprenants dans l’image.

Que fait le CGF Scale ?

Voyons comme la modification du CFG Scale modifie le résultat d’un prompt. Pour cette expérience, j’utilise le prompt ci-dessous et génère les images en conservant le seed avec le modèle JuggernautXL.
portrait of an humanoid tiger wearing a colorful jacket, geometric patterns, colorful, bokeh, cinematic, epic, dramatic light, beautiful, sharp focus, elegant, ambient dynamic composition, bright colors, cheerful
CFG Scale : 1
CFG Scale : 1
CGG Scale : 3
CGG Scale : 3
CFG Scale : 7
CFG Scale : 7
CFG Scale : 10
CFG Scale : 10
CFG Scale : 15
CFG Scale : 15
CFG Scale : 20
CFG Scale : 20
Avec une valeur de 1, le prompt est vaguement suivis, mais il manque des détails et éléments. Les couleurs manque de peps et l’image est un peu fade.
A 3, le résultat est déjà plus intéressant et les styles et détails du prompt commencent à ressortir.
Avec une échelle de 7, l’ensemble du prompt est respecté et l’image a gagné en vivacité.
Augmenter la valeur en CFG ne va alors plus beaucoup changer le respect du prompt mais va surtout renforcer la saturation des couleurs et les contrastes : A partir de 10 cet effet commence à se ressentir fortement et finit par endommager l’image plus qu’autre chose.
L’effet est globalement le même avec d’autres prompts ou en changeant de modèle :
A captivating portrait of a 43 years old bearded man, rain drop, amazing skin details. Dreamlike scenes with epic composition, high quality photo, selective focus, bokeh, hall of mirrors. Shot with a Nikon Z9, 50mm f/1.2 lens (modèle Dreamshaper XL)
CFG Scale : 1
CFG Scale : 1
CFG Scale : 7
CFG Scale : 7
CFG Scale : 15
CFG Scale : 15
sunday morning, warm venetian shadows, summer, a woman laying in bed, peaceful place, closed eyes, daily life, graphic novel illustration, comics, laced hatching, sketch, low lighting, pale blue gradient, warm gradient, subtle outline (modèle Cheyenne)
CFG Scale : 1
CFG Scale : 1
CFG Scale : 7
CFG Scale : 7
CFG Scale : 15
CFG Scale : 15

Utiliser le CFG Scale

Nous l’avons vu, l’effet de valeurs extrêmes comme 1 ou 15 est très net. Mais selon les prompts et les modèle, les valeurs entre 3 et 10 apportent des changements plus subtil.

Quelle est la meilleure valeur à utiliser ?

Le choix de la bonne valeur dépend donc des résultats que vous souhaitez obtenir et de la complexité du prompt. La décision vous appartient, mais il est souvent préférable d'expérimenter différentes valeur pour voir si des résultats plus créatifs ou des résultats respectant strictement la descriptions sont plus adaptés à vos envies ou besoins.
7 est une bonne valeur de départ pour vos tests. 5 vous conviendra peut être mieux pour un résultat créatif à partir d’un prompt simple - et 10 pour un prompt complexe que vous voulez voir mieux respecté.
notion image
N’oubliez pas que le CFG Scale est toujours un compromis entre la précision et la diversité - Vos images sont plus précises et proches du prompt avec une valeur plus haute, au détriment de la diversité des images.

CFG et modèle distillés (LCM, Turbo & Lightning)

Les version distillées de SDXL comme Turbo ou Lightning fonctionnant avec beaucoup moins d’étapes de génération d’image, l’effet du CFG scale est modifié et les valeurs recommandées sont différentes.
Pour ces modèles, le CFG recommandé est beaucoup plus bas : utilisez des valeurs entre 1 er 3.

Comprendre le CFG

Le CFG est donc une Classifier Free Guidance, c’est à qu’elle oriente le modèle de diffusion sans utiliser de classificateur. Mais pour comprendre ce que cela signifie, il faut d’abord que je vous explique ce qu’est une guidance avec classificateur.

Classifier guidance

La Classifier Guidance est une technique utilisée dans les modèles de diffusion d'images, comme Stable Diffusion, pour influencer la génération d'images en fonction d'étiquettes ou de descriptions textuelles.
En assignant des étiquettes aux images, ce processus oriente le modèle pour qu'il génère des images spécifiques, comme des chiens, en réponse à l'étiquette "chien" (dog).
Imaginons un modèle simplifié avec 3 groupes d’images qualifiées par 3 étiquettes : chien, robot et humain. Sans aucune guidance, le modèle utilisera toutes les images d’un groupe pour créer une image de son étiquette. Mais il. pourrait alors utiliser des images qui correspondent à deux étiquettes, comme un humain jouant avec un chien ou un chien-robot.
C’est là qu’intervient la guidance et son échelle (Guidance Scale). Ce paramètre ajuste la précision avec laquelle le modèle sit l'étiquette donnée, permettant ainsi un contrôle plus fin sur les résultats de génération d'images.
L’échelle de guidance (basse, moyenne ou haute) détermine quelles images sont prise en compte parmi toutes celles qui correspondent à une étiquette.
L’échelle de guidance (basse, moyenne ou haute) détermine quelles images sont prise en compte parmi toutes celles qui correspondent à une étiquette.
Avec un échelle basse, l’image produite va donc utiliser presque toutes les images disponibles pour une étiquette. Mais avec une échelle haute, le résultat sera très fortement orienté vers les images les moins équivoques. Pour un chien, il prendra uniquement les images qui ne représentent qu’un chien et rien d’autres, en excluant toutes les images qui pourraient représenter autre chose.
Pour parvenir à ce résultat, le Guidance utilise un Classifier, un modèle spécifique qui fournit la guidance et permet au modèle de diffusion d’orienter ses résultats.

Classifier Free Guidance

La Guidance avec classifier permet d’améliorer fortement le résultat des images générée par un modèle de diffusion en orientant les résultats vers des images non-équivoques qui correspondent au prompt textuel. Mais cette technique requiert un modèle supplémentaire qui complique l’entrainement du modèle de diffusion et son utilisation.

Classification sans classifier

Les chercheur ont donc mis au point une solution pour obtenir une guidance similaire, mais sans utiliser de classifier. Plutôt que d’utiliser deux modèles séparés (diffusion et guidance), ils vont créer un modèle de diffusion conditionel.
Techniquement, l’effort de classification est pris en charge par le U-Net qui prédit le bruits lors de l’échantillonnage. La guidance n’est donc pas vraiment sans classifier, mais celui-ci est intégré au modèle principal.

Classifier Free Guidance Scale

Tout comme pour la guidance avec classifier, nous avons besoin de pouvoir contrôler à quel point l’image générée va suivre la guidance sans classifier. C’est notre CFG Scale.
Le CFG Scale va donc contrôle à quel point le prompt oriente le résultat de la diffusion.
Reprenons notre modèle d’exemple et ses trois étiquettes et envisageons comment l’échelle CFG va influencer la generation d’une image avec un prompt simple comme “un robot” :
notion image
En désactivant la guidance (CFG Scale: -1), le prompt est complètement ignoré. La diffusion utilise l’ensemble des images et a autant de change de créer une image de chien que de robot ou d’humain.
Avec une CFG Scale moyenne (entre 7 et 10), on oriente le modèle pour qu’il ne prenne plus en compte que les images correspondants au prompt (avec peu d’ambiguïté). Les images générées représenteront toujours des robots, mais il seront diffèrents.
notion image
notion image
En montant encore le CFG Scale pour atteindre des valeur hautes, le modèle ne prendra alors plus en compte que les images de robots les moins ambigües et les plus stéréotypée. Les images générées représenteront des robots assez similaires les uns avec les autres.

CFG et inférence

En pratique, le CFG intervient à chaque étape d’échantillonnages de la génération d’image :
  1. On commence avec une image aléatoire.
  1. On calcule un bruit totalement aléatoire et un autre bruit conditionné par le prompt.
  1. L’image est modifié pour se rapprocher du résultat entre les deux bruits calculés. Le CFG Scale détermine l’importance de cette modification.
  1. On ajuste le bruit sur l’image avec le noise scheduler.
On répète ensuite les étape 2 à 4 pour chaque étape.
Le CFG est donc appliqué à chaque étape et implique le calcul de deux bruits - le premier étant conditionné par le texte, l’autre non.

Entrainement du modèle pour la CFG

Le modèle sans classifier doit donc prédire le bruit avec et sans conditionnement. En principe, il faudrait donc entrainer un modèle conditionné et un modèle non conditionné.
En pratique, on peut simplifier les chose en n’entrainant qu’un seul modèle capable de calculer le bruit avec et sans conditionnement. Pour ce faire, il suffit d’ignorer occasionnellement le conditionnement lors de l’entrainement en remplaçant le texte conditionnel par une description vide.

Créer avec le CFG Scale

Le CFG Scale, ou Classifier-Free Guidance Scale, est donc paramètre crucial pour exploiter pleinement le potentiel de Stable Diffusion.
J’espères qu’en vous aidant à mieux comprendre son fonctionnement du CFG Scale et son impact sur la génération d’image, vous pourrez affiner votre utilisation de Stable Diffusion et créer des images toujours plus impressionnantes et fidèles à vos inspirations.
N'oubliez pas que le CFG Scale est un compromis entre la précision et la diversité. Des valeurs élevées favorisent la fidélité au prompt, tandis que des valeurs plus basses laissent plus de place à la variété et la surprise. Explorez ses différentes possibilités et laissez libre cours à votre imagination pour générer des chefs-d'œuvre uniques grâce à Stable Diffusion.
 

Profitez de toute la puissance de SDXL sans rien installer et depuis n'importe quel ordinateur.

Stable Diffusion sur le Cloud

Créer avec Diffus

Ecris par