Réponse courte
Un prompt négatif est une deuxième ligne de texte, distincte, qui énumère ce que vous ne voulez pas dans l’image, comme « blurry, watermark, extra fingers » (flou, filigrane, doigts en trop), et Stable Diffusion éloigne chaque étape du dessin de ces éléments. Gardez-le court, concret et fait de noms et d’adjectifs simples, et changez une seule chose à la fois en gardant la graine fixe pour voir son effet.
Question de suivi Quels réglages comptent le plus pour la qualité?
Quand vous écrivez un prompt pour Stable Diffusion, vous décrivez ce que vous voulez : le sujet, le style, l’éclairage. Un prompt négatif est la liste inverse, tapée dans sa propre boîte ou transmise comme un réglage à part : les choses que vous voulez tenir à l’écart. Bien des gens s’en servent d’abord pour faire le ménage, en éliminant le flou, du texte égaré ou une tache en forme de filigrane dans un coin.
L’idée est née dans la communauté des utilisateurs de Stable Diffusion, et depuis la semaine dernière, elle fait aussi partie de la bibliothèque gratuite diffusers de Hugging Face. La version 0.4.0, publiée le 6 octobre, permet au pipeline de Stable Diffusion de recevoir côte à côte un prompt positif et un prompt négatif.
Comment fonctionne un prompt négatif
Stable Diffusion est un modèle de diffusion : il part d’un bruit aléatoire et en retire un peu à chaque étape jusqu’à ce qu’une image apparaisse. Pour que l’image reste fidèle au sujet, il utilise une astuce appelée guidage sans classificateur (classifier-free guidance). À chaque étape, le modèle fait deux prédictions, l’une guidée par votre prompt et l’autre par un prompt vide, puis il éloigne le résultat de la version vide pour le rapprocher de votre prompt. L’échelle CFG (dans le code, guidance_scale) détermine la force de cette poussée.
Un prompt négatif prend simplement la place de ce prompt vide. Au lieu de s’éloigner de « rien en particulier », chaque étape s’éloigne de « blurry, watermark, extra fingers ». C’est pourquoi le prompt négatif ne fonctionne que lorsque le guidage est activé : dans diffusers, il est ignoré si l’échelle de guidage est inférieure à 1.
Cela explique aussi une surprise fréquente. Si vous écrivez « a street with no cars » (une rue sans voitures) dans le prompt principal, le mot « cars » se trouve toujours dans le texte que le modèle lit. Mettre « cars » dans le prompt négatif est la consigne la plus claire.
Un exemple concret : le même prompt, avec et sans
Voici un prompt de portrait (la photo d’un vieux pêcheur en imperméable jaune, un port à l’aube, lumière douce), lancé deux fois avec la même graine pour que seul le prompt négatif change. Les deux blocs sont en anglais, tels qu’on les tape dans l’outil; le second ajoute comme prompt négatif : flou, basse résolution, dessin animé, peinture, texte, filigrane, doigts en trop, mains déformées.
Prompt: portrait photo of an elderly fisherman in a yellow raincoat, harbor at dawn, soft light, 85mm, detailed skin
Negative prompt: (none)Prompt: portrait photo of an elderly fisherman in a yellow raincoat, harbor at dawn, soft light, 85mm, detailed skin
Negative prompt: blurry, low resolution, cartoon, painting, text, watermark, extra fingers, deformed handsLe tableau ci-dessous décrit le genre de différence que les gens observent habituellement. Les résultats sont donnés à titre d’illustration, pas mesurés; votre propre graine donnera des images différentes.
| Ce qu’il faut regarder | Sans prompt négatif | Avec prompt négatif |
|---|---|---|
| Netteté | Visage correct, arrière-plan flou | Plus net dans l’ensemble |
| Style | Dérive parfois vers la peinture | Reste photographique |
| Marques parasites | Des lettres de temps en temps sur une enseigne ou dans un coin | Moins nombreuses |
| Mains | Souvent étranges | Parfois meilleures, toujours peu fiables |
Trois habitudes rendent les prompts négatifs utiles :
- Utilisez des mots simples pour des choses visibles. « Watermark » (filigrane), « text » (texte), « frame » (cadre), « cartoon » (dessin animé) donnent au modèle quelque chose de concret à éviter. Des mots vagues comme « bad » (mauvais) font peu de chose.
- Gardez la liste courte. Les prompts sont découpés en jetons, et l’encodeur de texte qu’utilise Stable Diffusion lit une fenêtre fixe de 77 jetons; tout ce qui dépasse est coupé. Une liste serrée de cinq à dix termes est plus facile à tester.
- Testez un changement à la fois. Fixez la graine, générez l’image, ajoutez un terme négatif, générez de nouveau. C’est la seule façon de savoir quel mot a fait le travail.
En Python avec diffusers 0.4.0, l’appel ressemble à ceci :
generator = torch.Generator("cuda").manual_seed(1024)
image = pipe(prompt, negative_prompt="blurry, text, watermark",
num_inference_steps=50, guidance_scale=7.5,
generator=generator).images[0]
À essayer : choisissez un prompt et une graine. Générez quatre images : sans prompt négatif, puis avec « blurry », puis avec « blurry, text, watermark », puis avec la liste complète ci-dessus. Alignez-les et écrivez une phrase sur ce que chaque ajout a changé. Vous apprendrez vite quels termes méritent leur place.
Quels réglages comptent le plus pour la qualité?
Quatre réglages font l’essentiel du travail, et la documentation de diffusers donne des points de départ sensés pour Stable Diffusion 1.x :
| Réglage | Ce qu’il contrôle | Bon point de départ |
|---|---|---|
Étapes (num_inference_steps) | Le nombre de passes de retrait du bruit | 50 (par défaut); beaucoup moins, comme 15, réduit visiblement la qualité |
Échelle CFG (guidance_scale) | À quel point l’image suit le prompt (et évite le prompt négatif) | De 7 à 8,5; 7,5 par défaut |
| Graine (seed) | Le bruit de départ; la même graine et les mêmes réglages donnent la même image | N’importe quel nombre; notez-le quand un résultat vous plaît |
| Taille (largeur × hauteur) | La toile | 512 × 512, la taille sur laquelle le modèle a été entraîné |
Les étapes ajoutent du détail jusqu’à un certain point. Plus d’étapes donnent généralement une image plus propre, mais une génération plus lente, et au-delà de la valeur par défaut, les gains sont minces pour un usage courant.
L’échelle CFG est une question d’équilibre. Augmentez-la et le modèle colle davantage à vos mots, au prix d’une certaine variété et parfois de la qualité de l’image. Des valeurs très élevées peuvent donner un effet saisissant, mais des images qui se ressemblent. Si une image semble trop cuite, baissez l’échelle avant de réécrire le prompt.
La graine est ce qui rend possibles des tests rigoureux. Changez le prompt en gardant la graine, et vous voyez l’effet de vos mots. Changez la graine en gardant tout le reste, et vous voyez l’éventail de ce que le prompt peut produire.
La taille est facile à mal régler. La largeur et la hauteur doivent être des multiples de 8. Descendre sous 512 tend à réduire la qualité, et dépasser 512 dans les deux directions peut amener le modèle à répéter des parties de la scène. Pour un format paysage ou portrait, gardez un côté à 512 et étirez l’autre.
Une bonne routine : commencez à 50 étapes, CFG 7,5 et 512 × 512, trouvez une graine qui vous plaît, puis peaufinez le prompt et le prompt négatif en gardant cette graine fixe.
Sources
- diffusers v0.4.0 release notes — Hugging Face on GitHub, 6 octobre 2022
- Stable Diffusion with Diffusers — Hugging Face, 22 août 2022
- CompVis/stable-diffusion (README) — CompVis (LMU Munich) on GitHub, 22 août 2022