ControlNet dans ComfyUI : maîtriser pose et cadrage avec OpenPose, Canny et Depth

"La documentation officielle d’Apply ControlNet décrit les entrées, la plage de strength et le rôle de start_percent et end_percent."
Une image de référence doit imposer une pose, des lignes et un cadrage. Pourtant, le personnage se déforme, les contours s’effacent et la composition change.
ControlNet ajoute cette contrainte structurelle : OpenPose pour la pose, Canny pour les contours et Depth pour les relations spatiales. Restent les réglages concrets : quelle valeur pour strength, comment lire start_percent et end_percent, et comment éviter les conflits entre plusieurs contrôles ?
Choisissez d’abord préprocesseur et poids selon l’objectif. Réglez ensuite force et plage d’action. Si le résultat dérive encore, vérifiez dans l’ordre les connexions, la compatibilité du modèle de base et les signaux concurrents.
Choisir ControlNet selon l’objectif
La première décision porte sur la structure à conserver, pas sur strength.
| Objectif | Type de contrôle | Préprocesseur | Poids SD1.5 courants |
|---|---|---|---|
| Générer une personne dans une pose précise | Pose | OpenPose / DWPose | control_v11p_sd15_openpose |
| Reprendre les lignes d’une référence | Contours | Canny | control_v11p_sd15_canny |
| Préserver plans et composition | Profondeur | Depth (MiDaS / LeReS) | control_v11f1p_sd15_depth |
| Guider avec un croquis | Croquis | Scribble | control_v11p_sd15_scribble |
| Préserver des contours souples | Contours doux | SoftEdge (HED / PiDiNet) | control_v11p_sd15_softedge |
Deux points sont essentiels :
-
OpenPose et DWPose produisent des points clés de pose. DWPose est souvent plus complet pour le corps, les mains et le visage, utile pour les gestes et expressions.
-
La sortie du préprocesseur doit correspondre aux poids. Une carte OpenPose exige un modèle de pose. Une carte, des poids ou une architecture incompatibles donnent peu d’effet ou une erreur.
Les poids vont généralement dans ComfyUI/models/controlnet. Redémarrez ComfyUI ou actualisez la liste, puis sélectionnez-les dans Load ControlNet Model.
Tableau des paramètres ControlNet
strength, start_percent et end_percent définissent l’influence et le moment d’action. Utilisez les limites officielles et les valeurs initiales suivantes comme base reproductible.
| Paramètre | Plage | Départ | Effet | Méthode de test |
|---|---|---|---|---|
strength | 0–10 | 1.0 | Influence de la carte | Garder le seed et varier légèrement autour de 1.0 ; 0.5–1.5 est la plage de test courante indiquée officiellement |
start_percent | 0–1 | 0 | Début d’action | Pose et composition commencent généralement à 0 ; retarder seulement après validation du réglage de base |
end_percent | 0–1 | 1 | Fin d’action | Si le résultat est trop rigide, tester 0.8 ou moins pour libérer les détails tardifs |
Comprendre start_percent et end_percent
Ces valeurs définissent un intervalle, pas un délai. Avec start_percent=0.2 et end_percent=0.8, ControlNet agit seulement entre 20 % et 80 % de la diffusion.
Pose et composition se forment tôt. Pour stabiliser la pose, commencez à 0. Si le résultat est trop contraint, gardez start_percent=0 et passez end_percent de 1 à 0.8 afin de laisser la fin affiner les détails.
La plage complète (start_percent=0, end_percent=1) fournit une base claire. Confirmez d’abord l’effet, puis modifiez un seul paramètre à la fois.
Choisir la valeur de strength
strength règle l’influence de ControlNet. À 0, le contrôle est désactivé. Une valeur plus élevée impose généralement davantage la carte, avec une réponse différente selon les modèles.
Commencez autour de 1.0. Montez par petits pas si la carte est ignorée ; baissez si l’anatomie ou les lignes deviennent rigides. La plage 0.5–1.5 est un repère officiel raisonnable, pas une zone sûre universelle.
Construire le workflow
La chaîne essentielle consiste à charger le modèle de base et ControlNet, prétraiter la référence, appliquer le contrôle aux conditionings positive et negative, puis les envoyer à KSampler.
Étape 1 : charger le modèle de base
Nœud : Load Checkpoint
- Sélectionnez le checkpoint Stable Diffusion.
- Identifiez son architecture SD1.5, SDXL ou autre ; ControlNet doit être compatible.
- Continuez le graphe texte-vers-image avec les sorties
MODEL,CLIPetVAE.
Étape 2 : charger le modèle ControlNet
Nœud : Load ControlNet Model
- Sélectionnez des poids compatibles avec l’architecture et le type de carte.
- La sortie
CONTROL_NETalimente Apply ControlNet.
Étape 3 : charger et prétraiter la référence
Nœuds : Load Image et un préprocesseur tel que OpenPose Preprocessor.
Load Image: importez la référence.- Préprocesseur : convertissez-la en squelette, contours ou profondeur.
- Comfy Core ne fournit pas tous les préprocesseurs ; installez au besoin
comfyui_controlnet_auxavec ComfyUI Manager.
ControlNet lit la carte prétraitée. Prévisualisez-la pour repérer membres manquants, contours coupés ou profondeur plate avant la génération.
Étape 4 : relier Apply ControlNet
Nœud : Apply ControlNet
control_net: depuis Load ControlNet Model.image: depuis le préprocesseur, pas depuis l’image brute.positive: conditioning du prompt positif.negative: conditioning du prompt négatif.strength: commencez à 1.0.start_percent: commencez à 0.end_percent: commencez à 1.
Apply ControlNet produit de nouveaux conditionings positive et negative. Reliez-les à KSampler. Si le sampler reçoit encore les conditionings d’origine, ControlNet est hors de la chaîne.
Étape 5 : générer et comparer
Nœud : KSampler
model: depuis Load Checkpoint.positive/negative: depuis Apply ControlNet.latent_image: depuis Empty Latent Image ou une autre source latente.- Fixez le seed pour comparer activation et réglages ; sinon le hasard masque l’effet.
Vérifiez trois connexions :
- positive et negative traversent Apply ControlNet jusqu’au nœud suivant.
- L’entrée
imagereçoit la carte prétraitée. Apply ControlNet(Old)est obsolète ; utilisez le nœud standard actuel.
Associer le modèle de base
Les poids et implémentations SD1.5, SDXL et FLUX ne sont pas interchangeables. Identifiez le modèle de base et choisissez une compatibilité explicitement documentée.
Compatibilité entre préprocesseur et modèle
| Préprocesseur | Poids SD1.5 courants | Règle SDXL | Règle FLUX |
|---|---|---|---|
| Canny | control_v11p_sd15_canny | Poids SDXL acceptant explicitement Canny | Poids documentés pour le FLUX cible et Canny |
| OpenPose / DWPose | control_v11p_sd15_openpose | Poids SDXL acceptant les points de pose | Poids documentés pour le FLUX cible et Pose |
| Depth (MiDaS / LeReS) | control_v11f1p_sd15_depth | Poids SDXL acceptant une carte Depth | Poids documentés pour le FLUX cible et Depth |
| Scribble | control_v11p_sd15_scribble | Poids SDXL acceptant Scribble | Vérifier la fiche ; tous les modèles Union ne gèrent pas Scribble |
| SoftEdge (HED / PiDiNet) | control_v11p_sd15_softedge | Poids SDXL acceptant SoftEdge | Vérifier la fiche et le workflow pour l’entrée correspondante |
Les modèles Union regroupent plusieurs modes et constituent une option courante avec FLUX. Modes, nœuds et forces utiles dépendent du modèle précis et de la version du workflow.
Tableau de compatibilité des modèles de base
| Modèle de base | Choix de ControlNet | Dossier | Attention |
|---|---|---|---|
| SD1.5 | La famille control_v11*_sd15_* est courante | ComfyUI/models/controlnet | sd15 désigne SD1.5, pas SDXL |
| SDXL | Utiliser des poids explicitement marqués SDXL | ComfyUI/models/controlnet | Plusieurs implémentations existent ; suivre la fiche du modèle |
| FLUX | Utiliser ControlNet ou Union compatible avec le FLUX cible | ComfyUI/models/controlnet | Nœuds, modes et force sont spécifiques ; ne pas reprendre les valeurs SD1.5 |
Choisir le modèle de base
Si le modèle de base n’est pas choisi, consultez le guide de sélection des modèles Stable Diffusion. Il compare caractéristiques et ressources ; ici, seule la compatibilité ControlNet est traitée.
Où placer le fichier du modèle ?
Les poids vont généralement dans ComfyUI/models/controlnet. Après téléchargement, redémarrez ComfyUI ou actualisez la liste et sélectionnez-les dans Load ControlNet Model.
Avec beaucoup de fichiers, utilisez des sous-dossiers si votre installation les accepte. Conservez surtout la source et la fiche du modèle : un préfixe ajouté au nom ne prouve pas la compatibilité.
Régler plusieurs ControlNet
Vous pouvez chaîner Apply ControlNet pour contrôler pose et composition. Validez chaque contrôle seul, sinon deux erreurs se confondent dans le même graphe.
Chaîner les nœuds Apply ControlNet
Reliez les sorties positive et negative du premier nœud aux entrées correspondantes du second.
-
Premier ControlNet :
- Chargez OpenPose et une carte de pose.
- Testez
strength=1.0,start_percent=0,end_percent=0.7.
-
Second ControlNet :
- Chargez Depth et une carte de profondeur.
- Commencez plus bas :
strength=0.6,start_percent=0,end_percent=0.6.
-
Ordre de connexion :
- Conditioning du prompt → premier Apply ControlNet → second Apply ControlNet → KSampler.
- Gardez le même ordre pour positive et negative.
Ces valeurs servent au diagnostic, pas d’optimum. Pose et profondeur décrivent des structures précoces ; démarrez à 0 et différenciez leurs rôles par force et fin d’action.
Principes de réglage
Commencez par la priorité et la plage d’action.
Définissez la priorité :
- Testez le contrôle principal autour de 1.0.
- Démarrez le contrôle secondaire plus bas, par exemple 0.5–0.7.
- Si l’image est tirée dans deux directions, baissez le secondaire avant d’augmenter les deux.
Définissez la plage :
- Pose et composition doivent agir tôt ; gardez d’abord
start_percentà 0. - Utilisez des
end_percentdifférents, par exemple 0.7 et 0.6. - Pour libérer les détails tardifs, terminez plus tôt plutôt que de déplacer arbitrairement l’action dans la seconde moitié.
Vérifiez ensuite :
- Deux contrôles du même type ne sont pas interdits, mais des cartes décrivant la même structure ajoutent souvent conflit et réglage.
- Préférez des signaux complémentaires comme OpenPose + Depth ou OpenPose + Canny.
- Fixez le seed et comparez un contrôle avec les deux.
- Ne démarrez pas avec deux strengths élevés.
- Changez un seul paramètre et sauvegardez un workflow reproductible.
- N’ajoutez le second ControlNet qu’après un effet visible du premier.
Liste de dépannage
| Problème | Cause probable | Vérification |
|---|---|---|
| L’image est identique sans ControlNet | Carte non reliée, strength proche de 0, conditioning d’origine ou architecture incompatible | Prévisualiser la carte ; vérifier image et conditioning ; comparer avec seed fixe ; contrôler l’architecture |
| Pose ou lignes ne correspondent pas | Mauvais préprocesseur, carte incomplète ou influence faible | Examiner squelette/contours ; essayer DWPose ou Canny ; monter progressivement strength |
| Image rigide ou déformée | Force trop élevée, carte bruitée ou contrôle jusqu’à la fin | Baisser strength ; nettoyer la carte ; passer end_percent de 1 à 0.8 ou moins |
| Préprocesseur absent | Custom node non installé ou dépendance en échec | Installer comfyui_controlnet_aux ; redémarrer ; lire les erreurs d’import au démarrage |
| Poids SDXL/FLUX sans effet | Architecture ou nœud incompatible | Vérifier modèle, nœuds et exemple dans la fiche ; ne pas se fier au seul nom de fichier |
| Apply ControlNet(Old) absent | Nœud obsolète masqué par défaut | Utiliser Apply ControlNet standard ; afficher les nœuds obsolètes seulement pour un ancien workflow |
| Plusieurs ControlNet se contredisent | Cartes opposées, secondaire trop fort ou plusieurs changements simultanés | Tester seuls ; fixer le seed ; baisser le secondaire ; raccourcir la plage ; changer une valeur |
| Les paramètres semblent sans effet | Seed variable, carte pauvre ou chaîne contournant ControlNet | Fixer seed et sampler ; examiner la carte ; vérifier les sources positive et negative de KSampler |
Étapes suivantes
ControlNet prend en charge les structures difficiles à imposer par prompt. Quand le graphe fonctionne, poursuivez avec :
- Installer ComfyUI et comprendre l’interface : point de départ si ComfyUI n’est pas encore installé.
- Réutiliser et dépanner les workflows ComfyUI : sauvegarder, charger et corriger les nœuds manquants.
- Créer des modèles de prompt Stable Diffusion : ControlNet pour la structure, prompt pour le sujet, le style et les détails.
Construire un workflow ControlNet simple dans ComfyUI
Prétraiter une référence et injecter son signal structurel dans la chaîne d’échantillonnage.
- 1
Step 1: Identifier l’architecture de base
Déterminez si le checkpoint est SD1.5, SDXL ou FLUX, puis choisissez des poids ControlNet explicitement compatibles. - 2
Step 2: Charger et prétraiter la référence
Produisez une carte de pose, de contours ou de profondeur avec OpenPose, Canny ou Depth. - 3
Step 3: Charger le modèle ControlNet
Placez-le dans ComfyUI/models/controlnet et sélectionnez les poids correspondant au préprocesseur. - 4
Step 4: Relier Apply ControlNet
Connectez positive, negative, control_net et l’image prétraitée, puis transmettez le conditioning à KSampler. - 5
Step 5: Régler avec un seed fixe
Testez d’abord strength 1.0, start_percent 0 et end_percent 1, puis changez une valeur à la fois. - 6
Step 6: Valider avant de chaîner
Testez chaque ControlNet seul, puis réduisez la force ou la plage du contrôle secondaire.
FAQ
Quelle différence entre OpenPose et DWPose ?
Quelle valeur de strength utiliser ?
Que signifient start_percent et end_percent ?
Peut-on utiliser plusieurs ControlNet ?
Quel ControlNet choisir pour FLUX ?
9 min de lecture · Publié le: 19 juil. 2026 · Mis à jour le: 19 juil. 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
Guide des prompts Stable Diffusion : modèles pour produits, avatars, affiches et assets de jeu
Vous ne savez pas comment écrire un prompt Stable Diffusion réutilisable ? Ce guide part de quatre cas concrets, produit, avatar, affiche et asset de jeu, puis détaille prompt positif, Negative prompt, pondération, itération dans ComfyUI et vérifications commerciales.
Partie 4 sur 5
Suivant
C’est le dernier article publié dans cette série pour le moment.



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire