Prompts régionaux dans ComfyUI : séparer plusieurs sujets avec Set Area, RegionalPrompt et Cutoff

"Le code source principal de ComfyUI définit les paramètres et la conversion en zone latente de ConditioningSetArea, ConditioningSetAreaPercentage et ConditioningCombine."
Vous préparez une image 1024x768 avec une femme aux cheveux courts et vêtue de rouge à gauche, et un homme en veste bleue à droite. Le résultat place du rouge sur la veste droite et du bleu dans les cheveux à gauche : vêtements et couleurs se contaminent. Ce n’est ni un problème de seed ni un modèle trop faible. L’encodeur texte CLIP lit toute la phrase comme contexte : dans « red hair, blue jacket », red peut glisser vers jacket et blue vers hair. Les nodes de conditioning régional limitent le prompt dans l’espace latent, mais l’embedding conserve le contexte global. Trois voies sont utiles : régions coordonnées natives avec ConditioningSetArea + Combine, liaison d’attributs avec Cutoff et sampling régional par masque avec Impact Pack Regional. Chacune répond à un problème différent et possède ses limites.
Pourquoi les prompts de plusieurs sujets se mélangent
CLIP encode le contexte global
L’encodeur texte CLIP de Stable Diffusion n’encode pas chaque mot indépendamment : il traite toute la phrase. Dans « blue hair, yellow eyes », blue peut influencer eyes, car les tokens interagissent pendant la création de l’embedding. ConditioningSetArea limite le conditioning à une région latente, mais l’embedding vient toujours du contexte global ; le bleu peut donc atteindre les yeux. Les prompts régionaux réduisent le mélange spatial, par exemple le rouge gauche qui influence la droite, mais n’empêchent pas le mélange d’attributs au niveau des tokens.
Trois types de mélange
| Type | Symptôme typique | Solution |
|---|---|---|
| Mélange spatial | Le vêtement rouge à gauche influence la droite ; le bleu du premier plan influence le fond | Conditioning régional (Set Area / RegionalPrompt) |
| Mélange d’attributs | Dans « blue hair, yellow eyes », blue influence les yeux | Liaison d’attributs (Cutoff) |
| Identité incohérente | Le même personnage change de visage avec un autre seed | FaceID / LoRA (hors sujet ici) |
Tableau de choix : problème → approche → outil → mauvais usage
| Problème | Approche recommandée | Nodes | Mauvais usage |
|---|---|---|---|
| Personnages gauche et droit | Régions coordonnées natives | ConditioningSetArea + ConditioningCombine | Masques complexes, car les coordonnées doivent être calculées |
| Mélange de couleurs ou vêtements | Liaison d’attributs | Cutoff BasePrompt + Set Region + Regions To Conditioning | Régions coordonnées ; SDXL doit être testé, le README signalant de faibles résultats avec SDXL 0.9 |
| Régions de masque complexes | Sampling régional par masque | Impact Pack: RegionalPrompt + CombineRegionalPrompts + RegionalSampler | Nécessite Impact Pack et peut provoquer des nodes absents |
| Masques simples par aplats | Nodes régionaux simplifiés | Inspire Pack: Regional Conditioning By Color Mask | Dépend d’Impact Pack ou d’IPAdapter Plus |
| Pose incorrecte | Contrôle de pose | ControlNet (OpenPose / Canny / Depth) | Ne corrige pas le mélange d’attributs |
| Identité incohérente | Fixation de l’identité | FaceID / ReActor / LoRA | Ne corrige pas les prompts régionaux |
Une combinaison pratique suit cet ordre : prompts régionaux pour la position → OpenPose pour la pose → conditioning global de faible strength (0.3-0.5) pour unifier l’ambiance. Les positions d’OpenPose, ControlNet ou IPAdapter doivent être alignées manuellement sur les régions. Les nodes ne savent pas que la personne OpenPose de gauche appartient au prompt gauche.
Voie native : ConditioningSetArea + Combine
Paramètres de coordonnées
| Paramètre | Signification | Unité | Plage | Remarque |
|---|---|---|---|---|
| x / y | Coordonnée supérieure gauche | Pixels | 0 - MAX_RESOLUTION | L’origine se trouve en haut à gauche |
| width / height | Largeur et hauteur de la région | Pixels | 64 - MAX_RESOLUTION, pas de 8 | Le pas UI vaut 8 car le code divise par 8 pour le latent |
| strength | Poids du conditioning régional | Flottant | 0 - 10, valeur 1.0 | Les poids des régions superposées sont normalisés au sampling |
Le pas vaut 8 parce que ConditioningSetArea.append() écrit la zone latente sous la forme (height // 8, width // 8, y // 8, x // 8). Une image 512x512 devient 64x64 dans le latent ; les coordonnées doivent donc s’aligner sur des multiples de 8. ConditioningSetAreaPercentage accepte des valeurs de 0 à 1 si vous préférez les proportions aux pixels.
Connexion du prompt au sampler
Cet exemple partage un canevas 1024x768 entre deux sujets :
Étape 1 : région du prompt gauche
- Prompt du sujet gauche → CLIP Text Encode (sortie conditioning)
- Conditioning → ConditioningSetArea (x=0, y=0, width=512, height=768, strength=1.0)
- Sortie du conditioning marqué par la région
Étape 2 : région du prompt droit
- Prompt du sujet droit → CLIP Text Encode (sortie conditioning)
- Conditioning → ConditioningSetArea (x=512, y=0, width=512, height=768, strength=1.0)
- Sortie du conditioning marqué par la région
Étape 3 : combiner les conditionings
- Sortie Set Area gauche → ConditioningCombine (entrée 1)
- Sortie Set Area droite → ConditioningCombine (entrée 2)
- Sortie Combine → conditioning positive du KSampler
Étape facultative : conditioning global du fond
- Prompt de fond → CLIP Text Encode
- Conditioning → ConditioningSetArea (x=0, y=0, width=1024, height=768, strength=0.3-0.5)
- Combinaison avec les conditionings régionaux à faible strength pour harmoniser l’ambiance
Point essentiel : strength n’est pas une « opacité », mais le poids de la prédiction de bruit. Lorsque les régions se chevauchent, les poids des conditionings sont normalisés avant le sampling ; aucun total manuel n’est nécessaire.
Régions superposées et réglage de strength
Lorsque les régions se chevauchent, strength règle le mélange de leurs conditionings. Le sampling normalise automatiquement les poids. Commencez à strength=1.0 pour les sujets du premier plan et strength=0.3-0.5 pour le fond global. Réduire le fond limite son interférence, sans la supprimer complètement : des couleurs contradictoires dans les deux prompts peuvent encore interagir via le contexte global de CLIP.
Liaison d’attributs : Cutoff
Cas d’usage et fonctionnement
Le cas classique est blue qui influence eyes dans « blue hair, yellow eyes », car CLIP encode la phrase entière. Cutoff cherche à limiter un attribut à une partie désignée du prompt. Il masque les target tokens, régénère l’embedding puis utilise la direction obtenue pour mieux isoler les relations d’attributs.
Cutoff n’est pas un prompt régional par coordonnées. Il traite les relations entre tokens, pas les positions. Ses nodes sont Cutoff BasePrompt, Cutoff Set Region, Cutoff Regions To Conditioning et Cutoff Regions To Conditioning (ADV), sous conditioning > cutoff.
Avertissement SDXL : le README signale de mauvais résultats avec SDXL 0.9. Les versions actuelles de SDXL ou FLUX doivent être testées ; Cutoff n’est pas une solution universelle stable.
Installation et utilisation
Installation :
- Recherchez
ComfyUI_Cutoffdans ComfyUI-Manager - Ou clonez
git clone https://github.com/BlenderNeko/ComfyUI_Cutoffdanscustom_nodes - Redémarrez ComfyUI après l’installation
Flux de base :
- Saisissez le prompt complet dans BasePrompt, par exemple « blue hair, yellow eyes »
- Définissez la liaison dans Set Region, par exemple « blue » vers « hair »
- Produisez le conditioning avec Regions To Conditioning
- Passez éventuellement ce conditioning dans Set Area pour limiter sa position
Limites et précautions
Cutoff ne convient pas aux découpages par coordonnées. Il lie les attributs des tokens mais ne place pas « vêtement rouge à gauche, vêtement bleu à droite ». Pour traiter les deux problèmes, liez d’abord les attributs avec Cutoff, puis limitez le résultat avec Set Area.
L’efficacité avec SDXL reste incertaine. Le README mentionne de faibles résultats avec SDXL 0.9 et les versions actuelles demandent des essais. Si vous utilisez surtout SDXL, testez d’abord Cutoff sur un exemple de couleurs simple.
Sampling régional par masque : Impact Pack Regional
Nodes RegionalPrompt et RegionalSampler
| Node | Entrée | Sortie | Rôle |
|---|---|---|---|
| RegionalPrompt | mask + advanced_sampler + variation_seed/strength/method | REGIONAL_PROMPTS | Lie un masque à un sampler pour créer un prompt régional |
| CombineRegionalPrompts | Plusieurs REGIONAL_PROMPTS | REGIONAL_PROMPTS | Combine plusieurs prompts régionaux |
| RegionalSampler | base_sampler + REGIONAL_PROMPTS + overlap_factor + restore_latent | latent | Applique le sampling aux régions à chaque étape |
| RegionalSamplerAdvanced | Entrées RegionalSampler + contrôle des steps | latent | Contrôle par steps plutôt que par denoise |
Paramètres :
overlap_factor: contrôle l’étendue de transition hors de la régionrestore_latent: restaure le base latent hors du masque pendant le sampling régional pour limiter le bruit supplémentaire
RegionalSampler applique le sampling régional à chaque étape. À l’inverse, TwoSamplersForMask effectue un sampling global avant la combinaison par masque. Le premier offre un contrôle plus fin du processus de chaque région.
Installation et dépannage
Installation :
- Recherchez
ComfyUI Impact Packdans ComfyUI-Manager - Redémarrez ComfyUI et actualisez le navigateur après l’installation
Problèmes courants :
- Node rouge ou absent → importer un workflow et installer les nodes manquants
- Problème de dépendance Python → consultez le futur article sur le dépannage et la maintenance de ComfyUI
Voie simplifiée : Inspire Pack Regional Conditioning (facultatif)
Si vous ne voulez pas calculer les coordonnées Set Area, un masque par aplats simplifie le flux. Inspire Pack fournit :
| Node | Rôle |
|---|---|
| Regional Prompt Simple (Inspire) | Entrée de prompt régional simplifiée |
| Regional Prompt By Color Mask (Inspire) | Définit les régions par un masque d’aplats |
| Regional Conditioning Simple (Inspire) | Conditioning régional simplifié |
| Regional Conditioning By Color Mask (Inspire) | Définit les régions de conditioning par un masque d’aplats |
| Regional IPAdapter Mask / By Color Mask / Encoded Mask | Nodes régionaux liés à IPAdapter |
Certains nodes dépendent d’Impact Pack ou d’IPAdapter Plus. Vérifiez les dépendances du README avant utilisation.
Cette voie convient si vous avez déjà un masque par aplats, par exemple rouge à gauche et bleu à droite, et souhaitez éviter les calculs manuels de pixels.
Limites des combinaisons et risques au second pass
Combinaison avec ControlNet, IPAdapter et LoRA
| Outil | Ce qu’il contrôle | Ce qu’il ne résout pas |
|---|---|---|
| Prompt régional (Set Area / Regional) | Position et attribution du prompt | Cohérence d’identité ; mélange d’attributs, non résolu par Set Area |
| ControlNet (OpenPose / Canny / Depth) | Pose et structure | Mélange d’attributs ; attribution de position |
| IPAdapter | Influence d’une image de référence sur le style ou la composition | Isolation régionale ; identité fixe, car IPAdapter influence le style global |
| FaceID / LoRA | Cohérence de l’identité ou du style | Prompts régionaux ; mélange d’attributs |
L’ordre pratique est : prompts régionaux pour la position → OpenPose pour la pose → conditioning global faible pour une ambiance commune. Les positions d’OpenPose, ControlNet ou IPAdapter doivent être alignées manuellement avec les régions ; « la personne de gauche » n’est pas liée automatiquement.
Mélange de couleurs au second pass, à l’upscale ou à l’inpaint
Sans conditioning régional au second pass, à l’upscale ou pendant la réparation du visage, le modèle peut rechercher à nouveau une cohérence globale et mélanger les couleurs de cheveux ou de vêtements séparées au premier pass. L’exemple Area Composition avertit que les cheveux peuvent fusionner sans prompt régional au second pass.
Décidez si les passes ultérieurs doivent conserver le conditioning régional ou si un Inpaint local convient mieux. Après une séparation avec Set Area, vous pouvez redéfinir les régions à l’upscale afin que la cohérence globale ne dégrade pas la séparation des sujets.
Étapes suivantes et lectures associées
Le prompt régional n’est qu’une partie d’une composition multi-sujets. Le contrôle de pose, la cohérence d’identité, les images de référence et la réparation haute résolution demandent d’autres outils.
Déjà publiés :
- Importer des workflows et installer les nodes manquants : résout l’installation des custom nodes et les nodes absents
- Modèles de prompt Stable Diffusion : bases pour les cas où un seul prompt décrit mal plusieurs sujets
- Guide ComfyUI ControlNet : contrôle la pose et la structure avec le positionnement régional
- Guide ComfyUI LoRA : maintient personnages ou styles et distingue le mélange multi-LoRA du mélange des prompts régionaux
Des articles séparés traiteront IPAdapter, FaceID et la cohérence du visage, l’entraînement LoRA, la réparation haute résolution et Inpainting. Combinés aux prompts régionaux, ces outils réduisent encore l’incertitude des scènes multi-sujets.
Créer des régions gauche et droite avec Set Area
Sur un canevas de 1024×768, attribuez le positive conditioning de chaque sujet à une moitié, puis unifiez l’ambiance avec un conditioning global de faible strength.
⏱️ Estimated time: 20 min
- 1
Step 1: Définir le canevas final
Réglez le latent ou Empty Latent Image sur 1024×768 et calculez toutes les coordonnées à partir de cette taille finale. - 2
Step 2: Écrire le prompt du sujet gauche
Utilisez un CLIP Text Encode séparé pour le sujet gauche. Gardez sa couleur, ses vêtements et sa coiffure uniquement dans cette branche locale. - 3
Step 3: Définir la région gauche
Reliez le conditioning gauche à ConditioningSetArea avec x=0, y=0, width=512, height=768 et strength=1.0. - 4
Step 4: Définir la région droite
Créez un second CLIP Text Encode et ConditioningSetArea pour le sujet droit avec x=512, y=0, width=512, height=768 et strength=1.0. - 5
Step 5: Combiner les conditionings locaux
Fusionnez les deux branches marquées par une région avec ConditioningCombine, puis reliez la sortie au positive du KSampler. - 6
Step 6: Ajouter un conditioning global faible
Pour harmoniser l’éclairage ou le fond, ajoutez un conditioning plein cadre avec strength 0.3-0.5 afin de ne pas écraser les branches locales. - 7
Step 7: Aligner le contrôle de pose
Pour les positions ou gestes de deux personnes, ajoutez OpenPose, Depth ou Canny et alignez manuellement la pose sur les régions. - 8
Step 8: Vérifier les passes suivants
Avant un upscale, un second pass ou un inpaint, décidez de conserver le conditioning régional pour éviter que couleurs et attributs se mélangent à nouveau.
FAQ
x, y, width et height sont-ils des pixels ou des pourcentages ?
Pourquoi utiliser des coordonnées Set Area multiples de 8 ?
Cutoff est-il un outil de prompt régional ?
Quand choisir RegionalPrompt plutôt que Set Area ?
Comment régler strength lorsque les régions se chevauchent ?
Pourquoi le prompt ne correspond-il pas aux deux personnes d’OpenPose ?
Que faire si un node est rouge ou absent ?
9 min de lecture · Publié le: 28 août 2026 · Mis à jour le: 28 août 2026
Guide pratique ComfyUI et Stable Diffusion
Si vous arrivez depuis la recherche, le plus rapide est de passer à l’article précédent ou suivant de cette série.
Précédent
Entraîner son propre LoRA avec ComfyUI : données, tags et validation
Préparez le dataset et les captions, réglez dim, alpha, learning rates, steps et options VRAM, repérez le surapprentissage puis validez le LoRA dans ComfyUI.
Partie 10 sur 16
Suivant
Agrandir et retoucher une image dans ComfyUI : Hires Fix, FaceDetailer et inpainting
Comparez upscaling pixel, rééchantillonnage latent, FaceDetailer, inpainting et tuiles, puis corrigez dérive du visage, raccords et débordement du masque.
Partie 12 sur 16



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire