Aller au contenu principal

Module 2 — Consignes positives et négatives

Le module précédent a laissé entier un point crucial : la consigne texte ne parle pas au U-Net, elle passe par un encodeur (CLIP ou son équivalent). Or CLIP n'est pas un modèle de langage : il a été entraîné à rapprocher une image et sa légende, pas à raisonner. Cette différence explique presque tous les résultats surprenants qu'on rencontre.

Une consigne visuelle n'est pas une phrase, c'est un empilement

Le mode d'emploi qui circule sous le nom « prompt engineering » vaut pour les LLM ; pour la diffusion, il faut désapprendre certaines habitudes. La consigne efficace ressemble davantage à une liste de qualificatifs ordonnée qu'à une phrase construite. Cinq blocs se retrouvent dans les banques de consignes qui marchent : le sujet principal, le style, le cadrage, l'éclairage, les paramètres techniques.

une chaise scandinave en chene clair,
style photographie produit, fond neutre pastel,
plan rapproche, angle de trois quarts,
lumiere naturelle de matin,
haute definition, mise au point nette

L'ordre importe modérément — l'encodage réordonne l'information — mais les tokens du début de la consigne ont un poids un peu plus fort que ceux de la fin. C'est empirique et pas garanti d'une version à l'autre, mais suffisamment reproductible pour qu'on place le sujet en tête et les décorations à la fin.

Pondération des termes

Un mot qui n'apparaît pas assez peut être renforcé, un mot trop dominant peut être atténué. La syntaxe la plus répandue, portée par les interfaces populaires (Automatic1111, ComfyUI) et implémentée dans diffusers via compel, utilise des parenthèses avec un multiplicateur :

(chene clair:1.3), (fond pastel:0.7), lumiere de matin

Un poids de 1,3 augmente d'environ 30 % l'attention accordée au terme ; un poids de 0,7 la diminue d'autant. En pratique, on reste dans une fourchette de 0,6 à 1,5 — au-delà, le modèle sature ou se dégrade. Un piège fréquent : empiler trois ou quatre synonymes du même concept, chacun boosté, produit rarement l'effet cumulatif attendu. Un seul terme bien choisi à 1,3 vaut mieux que trois termes à 1,0.

Autre limite structurelle à connaître : la consigne est tronquée à 77 tokens dans SD 1.5 (deux fois plus dans SDXL grâce à ses deux encodeurs, mais toujours finie). Les extensions dites « long prompt » découpent en fragments et concatènent les embeddings ; elles fonctionnent, mais chaque fragment perd le contexte des autres. Une consigne concise et hiérarchisée bat une consigne fleuve.

La consigne négative, et ce qu'elle corrige vraiment

La consigne négative est une seconde consigne, passée en parallèle, qui indique ce que l'image ne doit pas contenir. Techniquement, le guidage sans classifieur (classifier-free guidance) calcule deux prédictions à chaque étape — une conditionnée par la consigne positive, une par la négative — et éloigne la trajectoire de la seconde.

Elle sert à corriger deux catégories de problèmes distinctes.

Les défauts anatomiques et techniques : mains deformees, doigts en trop, texte illisible, flou de bouge, artefacts jpeg, filigrane, signature. Ce sont des motifs récurrents que le modèle a appris de ses données d'entraînement — les mains bâclées sont légion dans les jeux d'images, les filigranes signalent des banques d'images payantes, et les images floues sont partout. Nommer explicitement le défaut oriente le modèle à l'écart.

Les glissements stylistiques indésirables : sur SDXL, une consigne trop courte glisse fréquemment vers un rendu photo réaliste par défaut. Une consigne négative de type photographie, hyperealiste remet le modèle sur un rail illustré si c'est ce qu'on veut.

En revanche, elle n'est pas un mécanisme pour retirer des concepts qu'on a soi-même mis dans la consigne positive : écrire « chien » puis « chien » en négatif ne produit pas un chat. Elle n'est pas non plus une garantie ; elle réduit la probabilité, elle ne l'annule pas.

Ce que CLIP ne comprend pas

Trois familles de consignes échouent régulièrement, quelle que soit la formulation, et il faut le savoir pour ne pas y perdre son temps.

Le comptage précis : « exactement trois pommes » produit deux, trois ou quatre pommes selon les runs. CLIP capte « pommes » et « quelques », mais le nombre exact reste hors de portée.

La négation dans la consigne positive : « une pièce sans lampe » a de fortes chances de contenir une lampe, parce que le mot est présent. La négation appartient à la consigne négative.

Les relations spatiales et compositionnelles : « le livre rouge sur le livre bleu » n'est pas fiable ; les couleurs peuvent s'échanger. C'est précisément le rôle de ControlNet (module 6) que de fournir cette information par une autre voie que le texte.

image = pipeline(
prompt="une chaise scandinave en chene clair, atelier lumineux, "
"photographie produit, plan rapproche, (grain film:1.2)",
negative_prompt="floue, artefacts jpeg, filigrane, mains dans le cadre, "
"distorsion de perspective, texte, watermark",
num_inference_steps=30,
guidance_scale=7.0,
).images[0]
La consigne négative n'est pas un fourre-tout

Empiler cinquante termes négatifs, comme on le voit dans certaines banques, ne rend pas l'image « meilleure » — chaque terme éloigne la trajectoire dans une direction, et l'accumulation finit par sur-corriger. Une consigne négative de dix à quinze termes, ciblée sur les défauts effectivement observés dans vos générations, suffit largement.

En résumé

  • CLIP rapproche image et légende, il ne raisonne pas : la consigne s'écrit comme un empilement de qualificatifs hiérarchisé, pas comme une phrase.
  • La pondération entre 0,6 et 1,5 renforce ou atténue un terme ; un seul mot bien choisi vaut mieux que trois synonymes empilés.
  • La consigne négative corrige des défauts (mains, filigranes, artefacts) et des glissements stylistiques ; elle n'inverse pas ce qu'on a écrit en positif.
  • Comptage précis, négation dans le positif, relations spatiales : trois limites structurelles à ne pas essayer de forcer par le texte.

Module suivant : les trois hyperparamètres qui décident du reste — nombre d'étapes, échelle de guidage et graine aléatoire.