ControlNet pour Stable Diffusion : le guide complet pour contrôler vos images
ControlNet est une architecture de réseau de neurones qui ajoute des conditions spatiales supplémentaires (contours, profondeur, pose humaine, segmentation…) à Stable Diffusion, vous permettant de contrôler précisément la composition, la structure et la pose de vos images générées.
Sans ControlNet, vous êtes à la merci du hasard : un bon prompt peut donner un résultat magnifique, mais la composition exacte reste imprévisible. ControlNet résout ce problème en injectant une « carte de contrôle » (contours d’une image, squelette d’une pose, carte de profondeur…) directement dans le processus de diffusion. Le résultat : vous gardez la puissance créative de Stable Diffusion tout en dictant précisément la structure de l’image finale.
Ce guide couvre l’installation, tous les modèles disponibles (SD 1.5, SDXL, SD 3.5), les cas d’usage concrets et les réglages avancés pour tirer le maximum de ControlNet.
- Type
- Extension / architecture de contrôle pour modèles de diffusion
- Créateur
- Lvmin Zhang (Stanford), article publié en février 2023
- Compatibilité
- SD 1.5, SD 2.x, SDXL, SD 3.5 Large
- Interfaces
- AUTOMATIC1111, ComfyUI, Forge, Diffusers (Python)
- Prix
- Gratuit Open Source
- Dépôt
- github.com/lllyasviel/ControlNet
Comment fonctionne ControlNet
Pour comprendre ControlNet, il faut d’abord saisir le fonctionnement de base de Stable Diffusion. Le modèle de diffusion prend un prompt textuel et génère une image en partant de bruit pur, en le « débruitant » progressivement. Le texte guide ce processus, mais il ne contrôle pas la composition spatiale de l’image : où placer les objets, quelle pose adopter, quelle perspective utiliser.
ControlNet résout ce problème avec une architecture ingénieuse. Il copie les poids du réseau U-Net de Stable Diffusion en deux jeux : une copie « verrouillée » qui préserve les connaissances acquises pendant l’entraînement, et une copie « entraînable » qui apprend à interpréter les nouvelles conditions spatiales. Les deux copies sont connectées par des couches appelées « zero convolutions » (des convolutions 1×1 initialisées à zéro).
Le principe des zero convolutions
L’astuce clé est l’initialisation à zéro. Au démarrage de l’entraînement, toutes les zero convolutions produisent des sorties nulles. Le ControlNet ne cause donc aucune distorsion du modèle original. Progressivement, pendant l’entraînement, ces couches apprennent à injecter la bonne quantité de signal conditionnel. Cette approche a deux avantages majeurs : elle protège le modèle de base contre toute dégradation, et elle permet un entraînement efficace même avec de petits jeux de données (moins de 50 000 images).
Le pipeline de génération avec ControlNet
En pratique, une génération avec ControlNet suit trois étapes :
1. Prétraitement (annotation) : votre image source est convertie en « carte de contrôle » par un préprocesseur. Par exemple, le détecteur Canny extrait les contours, OpenPose détecte le squelette humain, Midas estime la profondeur. Vous pouvez aussi fournir directement une carte de contrôle créée manuellement.
2. Conditionnement : la carte de contrôle est injectée dans le modèle de diffusion via le ControlNet, en parallèle du prompt textuel. Le modèle reçoit donc deux sources d’information : ce que l’image doit représenter (texte) et comment elle doit être structurée (carte de contrôle).
3. Génération : Stable Diffusion produit l’image en respectant les deux conditions simultanément. Le résultat combine le contenu décrit par le prompt avec la structure spatiale dictée par la carte de contrôle.
Installation de ControlNet
Sur AUTOMATIC1111 (Stable Diffusion WebUI)
L’installation dans AUTOMATIC1111 se fait en deux temps : l’extension puis les modèles.
Étape 1 : Installer l’extension
Ouvrez AUTOMATIC1111 et naviguez vers l’onglet Extensions puis Install from URL. Collez l’URL suivante :
https://github.com/Mikubill/sd-webui-controlnet
Cliquez sur « Install », puis redémarrez l’interface. Vous pouvez aussi passer par l’onglet Available, chercher « sd-webui-controlnet » et l’installer directement (c’est l’extension la plus populaire avec plus de 12 000 étoiles sur GitHub).
Étape 2 : Télécharger les modèles
Les modèles ControlNet ne sont pas inclus dans l’extension. Vous devez les télécharger séparément depuis Hugging Face et les placer dans le dossier :
stable-diffusion-webui/extensions/sd-webui-controlnet/models/
Téléchargez les fichiers .pth ou .safetensors. Les fichiers .safetensors sont recommandés car ils sont plus légers (environ 723 Mo au lieu de 1,45 Go par modèle).
Étape 3 : Activer le Multi-ControlNet (optionnel)
Par défaut, un seul ControlNet est actif. Pour en combiner plusieurs, allez dans Settings → ControlNet → Multi ControlNet: Max models amount et définissez le nombre d’instances souhaitées (jusqu’à 10). Redémarrez l’interface.
Sur ComfyUI
Dans ComfyUI, ControlNet est supporté nativement. Vous avez besoin de deux éléments :
Les modèles ControlNet : placez-les dans le dossier ComfyUI/models/controlnet/.
Les préprocesseurs : installez le pack de nœuds comfyui_controlnet_aux via le ComfyUI Manager ou manuellement :
cd ComfyUI/custom_nodes
git clone https://github.com/Fannovel16/comfyui_controlnet_aux
cd comfyui_controlnet_aux
pip install -r requirements.txt
Dans ComfyUI, le workflow typique consiste à connecter un nœud Load ControlNet Model et un nœud Apply ControlNet entre votre image de conditionnement et le sampler. Le pack comfyui_controlnet_aux ajoute des nœuds de prétraitement pour chaque type de détection (Canny, OpenPose, Depth, etc.).
Via Diffusers (Python)
Pour les développeurs, la bibliothèque Diffusers de Hugging Face offre un support natif :
pip install diffusers transformers accelerate
Exemple minimal avec Canny :
from diffusers import ControlNetModel, StableDiffusionControlNetPipeline
import torch
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/control_v11p_sd15_canny",
torch_dtype=torch.float16
)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
torch_dtype=torch.float16
).to("cuda")
# control_image = votre image Canny pré-traitée
image = pipe("votre prompt", image=control_image).images[0]
Tous les modèles ControlNet expliqués
Chaque modèle ControlNet est entraîné pour interpréter un type spécifique de carte de contrôle. Le choix du bon modèle dépend de ce que vous voulez contrôler dans votre image. Voici l’inventaire complet, classé par catégorie.
Détection de contours
Canny est le modèle le plus utilisé. Il utilise l’algorithme de détection de contours Canny pour extraire les bords nets d’une image. Le résultat est une image en noir et blanc montrant les contours principaux. C’est le choix idéal pour reproduire la structure d’une image existante avec un style différent, ou pour transformer une photo en illustration tout en conservant la composition.
Les paramètres du préprocesseur Canny (seuils bas et haut) déterminent la sensibilité de la détection. Un seuil bas capte plus de détails fins, un seuil haut ne retient que les contours les plus marqués. Pour une utilisation standard, les valeurs par défaut (100/200) fonctionnent bien. Réduisez-les si votre image manque de détails dans la carte de contrôle.
HED (Soft Edge) produit des contours plus doux et progressifs que Canny. Il préserve davantage de détails, ce qui le rend particulièrement adapté à la recoloration et à la stylisation. Si Canny est trop « dur » pour votre usage (contours trop nets qui contraignent trop la génération), essayez HED.
Lineart extrait un dessin au trait de l’image source. Deux variantes existent : lineart_standard pour un trait classique et lineart_anime optimisé pour le style manga/anime. C’est le modèle à utiliser pour transformer des croquis en illustrations détaillées.
M-LSD (ligne droite) détecte uniquement les segments de ligne droite. Spécialisé pour l’architecture et les scènes d’intérieur, il capture les arêtes géométriques des bâtiments, meubles et structures. Inutile pour les sujets organiques comme les portraits.
PiDiNet (Soft Edge) est une alternative plus légère à HED, avec des résultats similaires mais un traitement plus rapide. En pratique, HED reste généralement préféré pour la qualité finale.
Profondeur et structure 3D
Depth (Midas/DPT) estime la profondeur de la scène et produit une carte de profondeur en niveaux de gris (clair = proche, sombre = éloigné). Le modèle ControlNet utilise cette carte pour respecter la perspective et le placement spatial des objets. Particulièrement puissant pour l’architecture, les paysages et les scènes complexes avec plusieurs plans.
Depuis ControlNet 1.1, le modèle Depth accepte une carte de profondeur complète en 512×512 pixels (contre 64×64 dans la version 1.0), ce qui améliore considérablement la précision spatiale.
Normal Map encode l’orientation des surfaces en utilisant les couleurs RGB (bleu = face avant, rouge = gauche, vert = haut). Ce modèle est utile pour les rendus 3D et la texturation d’assets. La version 1.1 utilise le protocole de ScanNet (via BAE), ce qui la rend compatible avec les normal maps générées par des moteurs de rendu 3D comme Blender.
Pose humaine
OpenPose détecte les points clés du corps humain (tête, épaules, coudes, genoux, pieds…) et les représente sous forme de squelette coloré. C’est le modèle incontournable pour reproduire une pose spécifique sur un personnage généré. Plusieurs variantes de préprocesseur existent :
| Préprocesseur | Détection | Utilisation |
|---|---|---|
openpose |
Corps uniquement | Poses simples, personnages entiers |
openpose_hand |
Corps + mains | Gestes précis, doigts visibles |
openpose_face |
Corps + visage | Expressions faciales, orientation de la tête |
openpose_full |
Corps + mains + visage | Contrôle maximal, pose complète |
dw_openpose_full |
Corps + mains + visage (DWPose) | Détection plus précise, recommandée pour SDXL |
Vous pouvez aussi créer vos squelettes manuellement avec un logiciel de dessin ou un outil spécialisé comme Magic Poser, puis les utiliser directement en sélectionnant « None » comme préprocesseur.
Scribble et dessin
Scribble transforme des griffonnages approximatifs en images détaillées. C’est le modèle le plus « créatif » : dessinez une forme vague à la souris ou au stylet, et Stable Diffusion l’interprète comme une image complète. Quatre préprocesseurs sont disponibles : scribble_hed, scribble_pidinet, scribble_xdog et fake_scribble. Ce dernier synthétise un griffonnage à partir d’une image existante, utile quand vous ne voulez pas dessiner vous-même.
Segmentation et Tile
Segmentation utilise une carte de segmentation sémantique pour contrôler quelles zones de l’image correspondent à quels types d’objets (sol, ciel, bâtiment, végétation, personne…). Le modèle 1.1 supporte deux protocoles : ADE20K (environ 150 classes) et COCO (182 classes supplémentaires). Très puissant pour les paysages urbains et les scènes d’intérieur complexes.
Tile est un cas particulier. Plutôt que de contrôler la composition, il permet l’upscaling haute fidélité en traitant l’image par tuiles. Combiné avec des scripts comme « Ultimate SD Upscale », il produit des agrandissements avec un niveau de détail remarquable.
Autres modèles spécialisés
IP-Adapter transfère le style ou certains éléments visuels d’une image de référence vers l’image générée, sans les mentionner dans le prompt. Compatible SD 1.5 et SDXL, il utilise le préprocesseur clip_vision.
Reference Only est un mode spécial qui ne nécessite aucun modèle ControlNet séparé. Il connecte directement les couches d’attention de Stable Diffusion à une image de référence, permettant au modèle de s’en inspirer librement. Sélectionnez reference_only comme préprocesseur, sans modèle, et fournissez une image. Le résultat reprend l’ambiance et certains éléments visuels de la référence.
Instruction Pix2Pix (ip2p) permet de modifier des images existantes selon des instructions textuelles, comme « transformez le jour en nuit » ou « ajoutez de la neige ».
ControlNet par version de Stable Diffusion
La disponibilité des modèles ControlNet varie selon la version de Stable Diffusion utilisée. Voici un récapitulatif.
SD 1.5 (le plus complet)
SD 1.5 bénéficie de la couverture ControlNet la plus complète. La version 1.1 de ControlNet (publiée par Lvmin Zhang) inclut 14 modèles officiels couvrant tous les cas d’usage décrits plus haut. La communauté a aussi produit des dizaines de modèles supplémentaires disponibles sur CivitAI et Hugging Face.
Fichiers à télécharger (version 1.1, format .pth environ 1,45 Go chacun, ou .safetensors environ 723 Mo) :
| Modèle v1.1 | Préprocesseur principal | Taille (safetensors) |
|---|---|---|
control_v11p_sd15_canny |
Canny | ~723 Mo |
control_v11f1p_sd15_depth |
Midas / DPT / Zoe | ~723 Mo |
control_v11p_sd15_openpose |
OpenPose (toutes variantes) | ~723 Mo |
control_v11p_sd15_scribble |
Scribble / Fake Scribble | ~723 Mo |
control_v11p_sd15_softedge |
HED / PiDiNet | ~723 Mo |
control_v11p_sd15_lineart |
Lineart / Lineart Anime | ~723 Mo |
control_v11p_sd15_mlsd |
M-LSD | ~723 Mo |
control_v11p_sd15_normalbae |
Normal BAE | ~723 Mo |
control_v11p_sd15_seg |
OneFormer / UniFormer | ~723 Mo |
control_v11f1e_sd15_tile |
Tile | ~723 Mo |
control_v11e_sd15_shuffle |
Shuffle | ~723 Mo |
control_v11e_sd15_ip2p |
Instruction Pix2Pix | ~723 Mo |
SDXL
Il n’existe pas de ControlNet SDXL officiel de Lvmin Zhang. Les modèles disponibles sont développés par la communauté et des équipes tierces. Les plus fiables proviennent de Xinsir (Canny, OpenPose, Scribble, Depth, Tile), Kataragi et d’autres contributeurs sur Hugging Face et CivitAI.
Pour SDXL, les modèles doivent contenir « xl » dans le nom de fichier pour être correctement détectés par l’extension AUTOMATIC1111. La qualité varie davantage qu’avec SD 1.5 : testez plusieurs modèles pour trouver ceux qui correspondent à vos besoins.
SD 3.5 Large
Stability AI a publié trois modèles ControlNet officiels pour SD 3.5 Large (8 milliards de paramètres), sous licence communautaire Stability AI (libre pour usage commercial et non commercial) :
Blur : conçu pour l’upscaling ultra haute fidélité. Le principe : vous découpez une image basse résolution en tuiles, appliquez le ControlNet Blur sur chaque tuile, puis fusionnez le résultat. Résolutions possibles : 8K, voire 16K. La taille de tuile recommandée est entre 128 et 512 pixels.
Canny : mêmes principes que le Canny SD 1.5, adapté à l’architecture MMDiT de SD 3.5. Particulièrement efficace pour les illustrations.
Depth : utilise des cartes de profondeur générées par DepthFM. Idéal pour les rendus architecturaux et la texturation d’assets 3D.
Stability AI a annoncé que des modèles supplémentaires (dont des variantes pour SD 3.5 Medium 2B et de nouveaux types de contrôle) sont en préparation.
Pour les utiliser dans ComfyUI, les fichiers se téléchargent depuis Hugging Face et se placent dans models/controlnet/. Un support natif est disponible via le blog officiel de ComfyUI avec des exemples de workflows.
Via le code Python de Stability AI :
from huggingface_hub import hf_hub_download
hf_hub_download(
"stabilityai/stable-diffusion-3.5-controlnets",
"sd3.5_large_controlnet_canny.safetensors",
local_dir="models"
)
# Inférence
python sd3_infer.py
--model models/sd3.5_large.safetensors
--controlnet_ckpt models/sd3.5_large_controlnet_canny.safetensors
--controlnet_cond_image input/canny.png
--prompt "votre prompt ici"
Réglages et paramètres clés
La maîtrise de ControlNet passe par la compréhension de ses paramètres. Voici ceux qui comptent le plus.
Control Weight (poids du contrôle)
Le paramètre le plus important. Il détermine l’influence du ControlNet sur la génération. Une valeur de 1.0 signifie que le modèle suit strictement la carte de contrôle. Réduire à 0.5-0.7 donne plus de liberté créative à Stable Diffusion. Si vous constatez des artefacts de couleur ou des distorsions, réduisez le Control Weight en premier.
En pratique : commencez à 1.0 pour vérifier que la carte de contrôle est bien interprétée, puis réduisez progressivement jusqu’à trouver l’équilibre entre fidélité structurelle et qualité esthétique.
Starting/Ending Control Step
Ces paramètres définissent à quel moment du processus de diffusion le ControlNet intervient. Par défaut, il agit sur toute la durée (de 0 à 1). Modifier ces valeurs permet des effets subtils :
Réduire le Ending Step (par exemple à 0.5) fait que le ControlNet guide les premières étapes (composition globale) puis laisse Stable Diffusion affiner les détails librement. Utile pour obtenir une composition inspirée de la carte de contrôle sans être trop rigide.
Augmenter le Starting Step (par exemple à 0.2) laisse Stable Diffusion établir sa propre base avant d’appliquer le contrôle spatial. Rarement utile en pratique.
Pixel Perfect Mode
Disponible dans l’extension AUTOMATIC1111. Quand activé, le ControlNet calcule automatiquement la meilleure résolution pour le préprocesseur, de sorte que chaque pixel de la carte de contrôle corresponde parfaitement à la résolution de génération. Activez-le systématiquement sauf si vous avez une raison précise de contrôler manuellement la résolution du préprocesseur.
Résolution du préprocesseur
Si vous n’utilisez pas le mode Pixel Perfect, ce paramètre définit la résolution à laquelle le préprocesseur analyse l’image source. Une résolution plus élevée capte plus de détails dans la carte de contrôle, mais peut aussi capter du bruit indésirable. Pour SD 1.5, 512 pixels est la valeur standard. Pour SDXL, montez à 1024.
Control Mode (Guess Mode)
Un mode expérimental où le ControlNet tente de « deviner » le contenu de la carte de contrôle même sans prompt. En mode Guess, le modèle interprète la carte de contrôle avec plus d’autonomie, produisant des résultats parfois surprenants. Pour ce mode, Lvmin Zhang recommande 50 steps et un guidance scale entre 3 et 5 (plus bas que la normale).
Cas d’usage concrets
Reproduire une pose depuis une photo
Le cas d’usage le plus populaire. Prenez une photo (de vous-même, d’une image stock, d’un personnage existant), appliquez le préprocesseur OpenPose pour extraire le squelette, puis générez un personnage dans un style complètement différent qui adopte exactement la même pose.
Configuration recommandée : préprocesseur openpose_full ou dw_openpose_full, modèle control_v11p_sd15_openpose, Control Weight 0.8-1.0. Pour les mains, openpose_hand est indispensable car le modèle de base ne détecte pas les doigts.
Design d’intérieur et architecture
Combinez Depth (pour la perspective) et M-LSD (pour les lignes droites) afin de générer des rendus architecturaux à partir de photos de pièces existantes. Le prompt contrôle le style (moderne, industriel, scandinave…), tandis que le ControlNet préserve la géométrie de l’espace. C’est l’un des cas d’usage professionnels les plus concrets de ControlNet.
Du croquis à l’image finale
Avec le modèle Scribble, dessinez un griffonnage rapide dans n’importe quel logiciel de dessin (même MS Paint suffit), puis laissez Stable Diffusion le transformer en image détaillée. Le prompt détermine le style et les détails, le scribble détermine la composition. Idéal pour le prototypage créatif rapide.
Recoloration et changement de style
Utilisez HED (Soft Edge) pour préserver la structure détaillée d’une image tout en modifiant radicalement son style. Par exemple, transformer une photo en peinture à l’huile, en illustration manga, ou en rendu 3D, tout en gardant la même composition exacte.
Upscaling avec Tile
Le ControlNet Tile, combiné avec le script « Ultimate SD Upscale » dans AUTOMATIC1111, permet d’agrandir des images tout en ajoutant des détails cohérents. Le principe : l’image est découpée en tuiles, chaque tuile est re-générée avec le ControlNet Tile pour ajouter de la netteté et des détails, puis les tuiles sont fusionnées. Le résultat est nettement supérieur à un simple upscaling algorithmique.
Cohérence de personnage
Pour maintenir un personnage cohérent à travers plusieurs images (utile pour les bandes dessinées, les storyboards ou le contenu sériel), combinez Reference Only (pour le style et l’apparence) avec OpenPose (pour des poses variées). IP-Adapter offre une alternative plus contrôlée en transférant les caractéristiques visuelles d’une image de référence.
Erreurs courantes et solutions
Artefacts de couleur ou images déformées
Cause probable : Control Weight trop élevé. Solution : réduisez-le à 0.6-0.8. Si le problème persiste, vérifiez que vous utilisez le bon modèle avec le bon préprocesseur (Canny avec le modèle Canny, pas Depth avec le modèle Canny).
Le modèle n’apparaît pas dans la liste
Vérifiez que le fichier est au bon emplacement. Cliquez sur l’icône « refresh » à côté du menu déroulant des modèles. Pour les modèles SDXL, assurez-vous que le nom de fichier contient « xl ».
Manque de VRAM
ControlNet ajoute environ 700 millions de paramètres au modèle de diffusion. Sur un GPU avec 8 Go de VRAM, cela peut poser problème, surtout avec des résolutions élevées ou le Multi-ControlNet. Solutions : activez --lowvram ou --medvram dans les arguments de lancement, utilisez les modèles en demi-précision (.safetensors fp16), ou optez pour les variantes LoRA de ControlNet (environ 136 Mo par modèle au lieu de 723 Mo).
La carte de contrôle est presque vide
Le préprocesseur n’a pas détecté suffisamment d’éléments dans votre image source. Pour Canny, réduisez les seuils (low threshold). Pour OpenPose, assurez-vous qu’un corps humain est clairement visible dans l’image. Pour Depth, vérifiez que la scène a une réelle profondeur spatiale (une image plate comme un logo ne produira pas une bonne carte de profondeur).
Génération très lente
Chaque ControlNet actif ralentit la génération. Avec le Multi-ControlNet (2-3 instances), attendez-vous à un temps de génération 1.5× à 2× plus long. Préférez le mode Pixel Perfect (qui optimise automatiquement la résolution) plutôt que de forcer manuellement une résolution de préprocesseur trop élevée.
ControlNet vs les alternatives
ControlNet n’est pas la seule méthode de contrôle spatial pour les modèles de diffusion. Voici comment il se compare.
| Critère | ControlNet | T2I-Adapter | IP-Adapter | ControlLoRA |
|---|---|---|---|---|
| Taille du modèle | ~723 Mo (fp16) | ~80 Mo | ~100 Mo | ~136 Mo |
| Qualité de contrôle | Excellente | Bonne | Style uniquement | Bonne |
| Types de contrôle | 14+ modèles | 8+ modèles | Style / composition | Variable |
| Impact VRAM | Élevé (+700M params) | Faible | Modéré | Faible |
| Combinaison multi-modèle | Jusqu’à 10 | Limité | Avec ControlNet | Limité |
| Maturité écosystème | Très mature | Mature | En croissance | Communautaire |
Notre verdict : ControlNet reste le standard de facto pour le contrôle spatial dans Stable Diffusion. Sa couverture de cas d’usage est inégalée, son intégration dans les interfaces populaires est excellente, et sa communauté est la plus active. T2I-Adapter est une bonne alternative si la VRAM est un problème, mais avec un écosystème moins riche. IP-Adapter complète ControlNet (il ne le remplace pas) pour le transfert de style. ControlLoRA est intéressant pour les configurations avec très peu de VRAM.
Bonnes pratiques pour des résultats optimaux
Commencez toujours par visualiser la carte de contrôle avant de lancer une génération. Activez la prévisualisation dans AUTOMATIC1111 (icône 💥) pour vérifier que le préprocesseur a bien capté les éléments que vous voulez contrôler. Si la carte est mauvaise, aucun réglage ne sauvera le résultat.
Adaptez le Control Weight au type de modèle. Canny et Depth fonctionnent bien à 0.8-1.0 (ils donnent des signaux clairs). OpenPose est souvent mieux à 0.7-0.9 (pour laisser de la flexibilité sur les vêtements et le décor). Scribble bénéficie d’un poids plus bas (0.5-0.7) pour laisser le modèle interpréter le griffonnage avec créativité.
Utilisez le Pixel Perfect Mode systématiquement. Il élimine les problèmes d’alignement liés à des résolutions de préprocesseur mal choisies.
Pour le Multi-ControlNet, ordonnez les priorités. Les ControlNets actifs en premier ont plus d’influence. Placez le contrôle le plus important en Unit 0. Par exemple, pour une image architecturale avec personnage : Depth en Unit 0 (priorité à la perspective), OpenPose en Unit 1 (pose du personnage secondaire).
Préférez les modèles ControlNet 1.1 aux 1.0 pour SD 1.5. La version 1.1 corrige des problèmes de jeux de données (images en niveaux de gris dupliquées, images de basse qualité) et améliore significativement les résultats.
Verdict
ControlNet est l’extension la plus transformatrice de l’écosystème Stable Diffusion. Sans lui, la génération d’images par diffusion est un exercice de loterie contrôlée par le texte. Avec lui, vous obtenez un véritable outil de création visuelle où la composition, la pose, la perspective et la structure sont sous votre contrôle direct.
Pour les créatifs sérieux, ControlNet est non négociable. Il fait la différence entre « j’ai généré une image sympa » et « j’ai créé exactement l’image que j’avais en tête ». Son principal défaut est la consommation de VRAM, mais les variantes LoRA et les optimisations des interfaces modernes comme ComfyUI et Forge atténuent ce problème.
Si vous utilisez Stable Diffusion et que vous n’avez pas encore installé ControlNet, c’est la première chose à faire. Commencez par Canny et OpenPose, les deux modèles les plus polyvalents, puis explorez Depth et Scribble selon vos besoins.
Questions fréquentes sur ControlNet
ControlNet fonctionne-t-il avec SDXL et SD 3.5 ?
Oui, mais avec des nuances. Pour SDXL, il n’existe pas de modèles ControlNet officiels de l’auteur original. Les modèles disponibles sont développés par la communauté (Xinsir, Kataragi, etc.) et couvrent les types principaux (Canny, Depth, OpenPose, Scribble). Pour SD 3.5 Large, Stability AI a publié trois modèles officiels (Blur, Canny, Depth) sous licence communautaire. L’écosystème est moins mature que pour SD 1.5, où 14+ modèles ControlNet 1.1 couvrent tous les cas d’usage.
De combien de VRAM ai-je besoin pour utiliser ControlNet ?
ControlNet ajoute environ 700 millions de paramètres au modèle de diffusion, ce qui représente environ 1,5 Go de VRAM supplémentaire en fp16. Pour SD 1.5 + un ControlNet, comptez 6 à 8 Go de VRAM au minimum. Pour SDXL + ControlNet, 10 à 12 Go sont recommandés. Le Multi-ControlNet (2-3 instances) peut doubler ces besoins. Les variantes LoRA de ControlNet (136 Mo) réduisent significativement la consommation.
Peut-on utiliser plusieurs ControlNets en même temps ?
Oui, c’est le Multi-ControlNet. Dans AUTOMATIC1111, activez-le dans Settings → ControlNet → Multi ControlNet: Max models amount (jusqu’à 10 instances). Dans ComfyUI, connectez simplement plusieurs nœuds ControlNet en série. Les combinaisons courantes incluent Depth + OpenPose (architecture avec personnages), Canny + Depth (structure + perspective), et OpenPose + Reference Only (pose + cohérence visuelle).
Quelle différence entre ControlNet et img2img ?
img2img utilise une image de départ comme base bruitée puis la transforme globalement via le processus de diffusion. Le contrôle est indirect et agit sur l’ensemble de l’image. ControlNet, en revanche, extrait des informations structurelles spécifiques (contours, profondeur, pose) et les injecte comme condition supplémentaire. Vous contrôlez précisément quels aspects de la structure sont préservés. Les deux approches sont complémentaires : vous pouvez combiner img2img et ControlNet pour un contrôle maximal.
Comment créer ses propres modèles ControlNet ?
L’entraînement d’un modèle ControlNet nécessite un jeu de données d’images pairées (image source + carte de contrôle correspondante). Grâce à l’architecture zero convolution, un jeu de données relativement petit (moins de 50 000 paires) suffit pour obtenir des résultats utilisables. L’entraînement peut se faire sur un seul GPU consommateur (24 Go de VRAM recommandé). Le code d’entraînement est disponible dans le dépôt GitHub officiel. Pour des résultats professionnels, visez 200+ heures GPU sur A100.