Skip to content
Aidez à Construire une Meilleure Base de Connaissances ComfyUI Devenir Parrain
Aucun article pour le moment. Revenez plus tard !

Tutoriel ControlNet : Utilisation de ControlNet dans ComfyUI pour un contrôle précis de la génération d’images

Dans le processus de génération d’images par IA, contrôler précisément la génération n’est pas une tâche facile. Généralement, il faut plusieurs tentatives pour obtenir une image satisfaisante. Cependant, avec l’apparition de ControlNet, ce problème a été résolu de manière efficace.

ControlNet offre plus d’une dizaine de modèles de réseaux de contrôle, permettant de maîtriser davantage le style, les détails, les poses des personnages, la structure de l’image, etc. Ces conditions rendent la génération d’images par IA beaucoup plus contrôlable, et il est possible d’utiliser plusieurs modèles ControlNet simultanément pour obtenir de meilleurs résultats.

Vous pouvez considérer ControlNet comme un assistant de traduction qui convertit nos images de référence en instructions compréhensibles par l’IA, puis les transmet au modèle d’IA pour générer des images correspondant à nos exigences.

openpose ControlNet

Par exemple, dans cette image, en entrant une image de personnage, les conditions de contrôle sont extraites par le préprocesseur, puis appliquées via le modèle ControlNet pour générer une image de personnage avec une pose cohérente.

Ce tutoriel couvrira :

  • Une introduction basique à ControlNet
  • Le workflow de ControlNet dans ComfyUI
  • Les ressources liées à ControlNet
  • La composition d’un workflow ControlNet typique dans ComfyUI

Nous expliquerons ensuite comment utiliser des modèles ControlNet spécifiques avec des exemples dans d’autres articles de ComfyUI-Wiki relatifs à ControlNet.

Introduction simple à ControlNet

ControlNet est un modèle de génération conditionnelle basé sur des modèles de diffusion (comme Stable Diffusion), proposé initialement par Lvmin Zhang et Maneesh Agrawala en 2023. Ce modèle améliore significativement le contrôle de la génération d’images et la capacité de restauration des détails en introduisant des conditions d’entrée multimodales (comme la détection de contours, les cartes de profondeur, les points clés de pose, etc.).

Voici quelques liens relatifs à ControlNet :

Types de contrôle courants avec ControlNet

Avec le développement de ControlNet ces dernières années et les contributions de la communauté, ControlNet prend désormais en charge plus d’une dizaine de types de contrôle. Voici quelques types courants, chacun ayant ses scénarios appropriés :

1. Contrôle par lignes

  • Canny : Génère des contours précis par détection de bords, idéal pour imiter fidèlement la structure de l’image originale.
  • MLSD : Détecte uniquement les lignes droites, adapté aux scènes architecturales et designs d’intérieur.
  • Lineart : Reconnaissance de contours de nouvelle génération, plus fine que Canny, supporte l’extraction de lignes de style anime.
  • SoftEdge : Détection de contours doux, privilégie les grands contours, adapté aux scènes ne nécessitant pas une imitation précise.
  • Scribble/Sketch : Contrôle par croquis, supporte la reconnaissance de contours approximatifs ou les esquisses dessinées à la main.

2. Profondeur et structure

  • Depth : Distingue les relations de profondeur avant/arrière-plan par la luminosité, les zones blanches étant à l’avant, les noires à l’arrière.
  • NormalMap : Cartes de normales, contrôlent la texture de surface des objets (comme les effets d’enfoncement des fenêtres).
  • OpenPose : Reconnaissance de poses squelettiques, peut détecter automatiquement ou éditer manuellement les postures humaines.

3. Sémantique et segmentation

  • Segmentation : Segmentation sémantique, génère des images selon des catégories d’objets représentées par des couleurs (comme le bleu pour le ciel).
  • Inpaint/régénération locale : Modification locale d’images, maintient la cohérence avec le style original.

4. Style et couleur

  • Shuffle : Mélange aléatoire, réorganise les éléments sémantiques de l’image de référence pour créer des scènes diverses.
  • Recolor : Recoloration d’images en noir et blanc, supporte la définition automatique ou guidée par texte des couleurs.
  • IP-Adapter : Imitation de style/visage, maintient la cohérence des images générées.

5. Extensions fonctionnelles

  • InstructP2P : Modifie les images par instructions textuelles (comme faire “prendre feu” à une maison).
  • Instant_ID : Échange de visages IA, maintient la cohérence faciale et supporte la fusion multi-images.
  • Tile/Blur : Amélioration haute définition et renforcement des détails d’images floues.

Non compatible avec les processeurs spéciaux pour visage/mains OpenPose et certains préprocesseurs de segmentation sémantique.

Workflow de ControlNet dans ComfyUI

Dans ComfyUI, ControlNet fonctionne comme un contrôleur conditionnel impliquant généralement les étapes suivantes. Comme il existe de nombreuses versions de modèles ControlNet dans ComfyUI, les processus spécifiques peuvent varier. Nous utiliserons les modèles ControlNet V1.1 comme exemple, et détaillerons les workflows spécifiques dans les tutoriels suivants.

  1. Prétraitement d’image

Nous devons télécharger une image de référence. Le préprocesseur ControlNet extrait les caractéristiques clés de l’image (comme les contours, lignes, poses). Par exemple, l’image du personnage en début d’article est transformée en condition de contrôle OpenPose.

  1. Injection de conditions

ControlNet convertit les caractéristiques extraites en “signaux conditionnels” transmis à l’échantillonneur (comme K-sampler). Ces signaux indiquent à l’IA : “Lors de la génération d’image, essaie de respecter les lignes/poses/structures de l’image de référence.”

  1. Génération d’image par l’échantillonneur

L’échantillonneur (comme K-sampler), pendant le processus de débruitage, prend en compte les signaux conditionnels fournis par ControlNet pour produire une image qui correspond à la fois à la description textuelle et aux caractéristiques de l’image de référence.

Workflow ControlNet

Workflow ControlNet sans préprocesseur

Cette section présentera un workflow ControlNet SD1.5 typique sans dépendre d’aucun plugin tiers.

1. Préparation des fichiers modèles

Pour utiliser ce workflow, assurez-vous d’avoir installé :

💡

Dans ComfyUI, les modèles ControlNet ne sont pas universellement compatibles entre différentes versions de modèles de génération. Par exemple, les modèles ControlNet SD1.5 ne fonctionneront pas avec les modèles Flux, et vice versa. Je vous recommande donc de créer des sous-dossiers pour identifier les versions de modèles lors de leur sauvegarde, comme :

  • ComfyUI/models/checkpoints/sd1.5
  • ComfyUI/models/controlnet/sd1.5

2. Workflow et ressources associées

Cliquez sur le bouton ci-dessous pour télécharger le workflow correspondant, puis faites-le glisser dans l’interface ComfyUI ou utilisez le menu Workflows -> Open(Ctrl+O) pour le charger.

L’image ci-dessous servira d’image de référence, veuillez la télécharger et la sauvegarder.

Image de référence Openpose

3. Exécution du workflow

Suivez les numéros sur l’image pour compléter ce workflow ControlNet.

Workflow de base ControlNet SD1.5

  1. Assurez-vous que le modèle SD1.5 est chargé dans le nœud Load Checkpoint
  2. Assurez-vous que le modèle control_v11p_sd15_openpose.pth est reconnu et chargé dans le nœud Load ControlNet Model
  3. Chargez l’image de référence fournie ci-dessus dans le nœud Load Image
  4. Une fois ces opérations terminées, cliquez sur le bouton Queue ou utilisez le raccourci Ctrl(cmd) + Enter pour générer l’image

Essayez d’ajuster différents paramètres dans le nœud Apply ControlNet et observez comment différentes intensités (Strength) et différents pourcentages de début (start_percent) et de fin (end_percent) affectent le résultat généré

4. Explication du workflow

Dans le processus ci-dessus, comparons ce workflow avec notre workflow de génération texte-image Workflow texte-image ComfyUI

Vous remarquerez que la principale différence est que dans le workflow original texte-image, nous avons ajouté des conditions de contrôle via le nœud Apply ControlNet, puis transmis les conditions de sortie à l’entrée de condition du nœud KSampler.

Vous pouvez voir que le personnage est bien généré, et les erreurs courantes de membres dans les modèles SD1.5 n’apparaissent pas dans ce workflow.

Après avoir complété ces opérations, essayez de modifier la taille du nœud Empty Latent Image, par exemple en la définissant à 512x512, puis générez à nouveau pour observer les différences entre l’image générée et l’image de référence.

Modification de la taille Empty Latent Image dans ComfyUI

Vous devriez voir que l’image finale n’utilise que la zone centrale de l’image de référence. De plus, différents types d’images de référence nécessitent différents types de modèles ControlNet. Par exemple, OpenPose nécessite le modèle control_v11p_sd15_openpose.pth, tandis que les images Canny nécessitent le modèle control_v11p_sd15_canny.pth.

Dans le workflow ci-dessus, nous pourrions nous demander si l’image de référence (OpenPose) n’est pas très courante. Pouvons-nous utiliser d’autres images de référence plus communes pour générer des images correspondantes ? C’est là qu’interviennent les préprocesseurs, que nous aborderons dans la section suivante.

Workflow ControlNet avec préprocesseur

Qu’est-ce qu’un préprocesseur ?

Par exemple, dans l’image ci-dessous, nous avons utilisé le préprocesseur Canny de ComfyUI qui extrait les caractéristiques de contour de l’image.

Préprocesseur ControlNet

C’est le rôle du préprocesseur : convertir notre image de référence (photo, line art, croquis, etc.) en une carte de caractéristiques structurée que le modèle ControlNet peut comprendre et utiliser pour guider la génération.

Il existe de nombreux préprocesseurs courants comme :

  • Préprocesseurs de line art (comme canny, lineart) : extraient les contours d’une image, générant un line art noir et blanc.
  • Préprocesseurs de carte de profondeur (comme depth_midas) : calculent les niveaux de profondeur des objets dans l’image, générant une carte de profondeur en niveaux de gris.
  • Préprocesseurs de pose (comme openpose) : identifient les points clés du squelette humain, générant une image de squelette “bonhomme allumette”.

Cependant, dans ComfyUI, seul le préprocesseur Canny est disponible nativement. Nous devons donc utiliser d’autres plugins pour compléter le travail de prétraitement d’image, comme nous le verrons dans le workflow suivant.

1. Installation du plugin nécessaire

Ce tutoriel nécessite le plugin ComfyUI ControlNet Auxiliary Preprocessors

Pour l’installation des plugins, consultez le Tutoriel d’installation de plugins ComfyUI

2. Préparation des fichiers modèles

Dans cet exemple, nous conserverons les mêmes fichiers modèles que précédemment :

3. Workflow et image d’entrée

Téléchargez le workflow ci-dessous :

Après avoir lancé ComfyUI, faites glisser le workflow ou utilisez le raccourci Ctrl+O pour ouvrir ce fichier de workflow.

Veuillez télécharger l’image ci-dessous et la charger dans le nœud Load Image : Image d'entrée OpenPose ControlNet

Image du workflow SD1.5 OpenPose ControlNet

  1. Chargez l’image d’entrée dans le nœud 1 Load Image
  2. Sélectionnez votre modèle installé dans le nœud 2 Load Checkpoint
  3. Sélectionnez le modèle control_v11f1p_sd15_openpose.pth dans le nœud 3 Apply ControlNet
  4. Utilisez Queue ou le raccourci Ctrl+Enter pour exécuter le workflow et générer l’image

4. Explication du workflow

Ce workflow, par rapport au précédent, ajoute simplement une étape de prétraitement d’image. Nous avons transmis l’image au nœud de préprocesseur OpenPose Pose fourni par ComfyUI ControlNet Auxiliary Preprocessors pour compléter le prétraitement d’image.

Voilà donc une introduction simple à ControlNet dans ComfyUI. Dans les prochains tutoriels sur ControlNet, nous présenterons davantage de modèles ControlNet avec des exemples correspondants.