ControlNet, le guide complet

Qu’est ce que ControlNet et comment l’utiliser avec Stable Diffusion ?

ControlNet, le guide complet
Do not index
Do not index
Publish
Publish
ControlNet est un modèle complémentaire pour Stable Diffusion qui permet de copier des compositions d’image ou des poses de personnages à partir d'une image de référence.
ControlNet est donc bien plus qu'un simple outil d'image-to-image. Il offre une précision inégalée, permettant aux utilisateurs de choisir avec précision les éléments de l'image d'origine qu'ils souhaitent conserver ou ignorer.
Les outils standards de génération d’image en text-to-image ou même en image-to-image offrent finalement peu de contrôle sur la composition des images. Les images restent aléatoires et il faut en générer un grand nombre pour finalement pouvoir choisir celle où le sujet et les autres éléments se trouvent et à quoi il ressemblent.
ControlNet change complètement la donne
Les modèles actuels se concentre essentiellement sur les poses et la composition de l’image - mais nous avons déjà vu de nouvelles utilisations apparaitre, comme les QR Code et les Images en pirales.
notion image
notion image

Découvrir ControlNet

Que peut faire ControlNet ?

Copie de la pose

Avec ControlNet, il est possible de conserver la pose ou la position d’un personnage tout en générant une nouvelle image.
La photo de départ (freepik)
La photo de départ (freepik)
L’image générée avec ControlNet
L’image générée avec ControlNet
On peut même utiliser une image qui reprend uniquement la pose sous forme de manequin 3D ou de schema Open Pose.
La version 3D créée par @Gilloute avec MagicPoser
La version 3D créée par @Gilloute avec MagicPoser
L’image générée avec ControlNet
L’image générée avec ControlNet
Un schema de positions proposé par @lekima
Un schema de positions proposé par @lekima
L’image générée avec ControlNet
L’image générée avec ControlNet
⚙️
Modèle utilisé pour la conservation de pose : control_openpose-fp16 (OpenPose)

Conservation de la profondeur d’image.

ControlNet peut aussi utiliser une depth map de l’image pour générer des images qui conservent les profondeurs de l’originale. Ca permet par exemple de modifier l’environement ou l’ambiance, tout en conservant les caractéristiques principales de l’image.
Regardez par exemple ces variation de la ville Whiterun (Skyrim) créées par @Lokitsar.
notion image
notion image
notion image
notion image
⚙️
Modèle utilisé pour la conservation des profondeurs : control_depth-fp16 (Depth)

Image à partir d’un croquis

N’importe quel croquis ou dessin d’enfant peut être transformé en oeuvre d’art avec ControlNet.
Un dessin de @pjgalbraith et son rendu par ControlNet
Un dessin de @pjgalbraith et son rendu par ControlNet
Le ‘S’ d’origine par @leakime
Le ‘S’ d’origine par @leakime
Un chateau par @viniciusfdb
Un chateau par @viniciusfdb
Un prêtre par @nybbleth
Un prêtre par @nybbleth
⚙️
Modèle utilisé pour les croquis : t2iadapter_sketch-fp16

Copie des contours

ControlNet dispose aussi d’un modèle qui extrait les contours d’une images sous forme de traitsavant de la redessiner.
L’image de départ (générée avec Lexica.art)
L’image de départ (générée avec Lexica.art)
Les contours détectés
Les contours détectés
L’image générée avec ControlNet
L’image générée avec ControlNet
⚙️
Modèle utilisé pour la detection des contours : control_canny-fp16
Il y’a d’autres modèles ControlNet qui peuvent être utilisé pour contrôler l’img2img en y ajoutant des contraintes, mais ceux quatre là sont les principaux.

Qu’est-ce que ControlNet ?

ControlNet est un modèle de réseau neuronal conçu pour contrôler les modèles de génération d’image de Stable Diffusion. Vous pouvez utiliser ControlNet avec diffèrents checkpoints Stable Diffusion.
L'utilisation la plus élémentaire des modèles Stable Diffusion se fait par le biais du text-to-image. Cette méthode emploie des indications textuelles comme élément de conditionnement pour orienter la création d'images, dans le but de générer des visuels en adéquation avec les indications fournies.
Avec ControlNet, un élément de conditionnement vient s'ajouter aux indications textuelles. Ce conditionnement additionnel peut prendre diverses formes au sein de ControlNet.
Voyons rapidement deux utilisation différentes de ControlNet pour comprendre comment il ajoute le conditionnement à la génération d’image : La détection des contours et la reconnaissance de pose.

Comment fonctionne ControlNet ?

ControlNet fonctionne en extrayant une image traitée à partir d'une image de référence que vous lui donnez. Cette image traitée est ensuite utilisée pour contrôler le processus de diffusion qui génère l’image lorsque vous utilisez l’img2img.
Techniquement, cela fonctionne en attachant des modules de réseau entraînables à différentes parties du U-Net (prédiction de bruit) de Stable Diffusion. Le poids du modèle est verrouillé de sorte qu'il ne soit pas modifié pendant l'entraînement. Seuls les modules attachés sont modifiés pendant l'entraînement de ControlNet.
Le schéma du modèle issu de l'article de recherche résume ce fonctionnement : Au départ, les poids du module de réseau attaché sont tous à zéro, ce qui permet au nouveau modèle de tirer parti du modèle entraîné et verrouillé.
notion image
Pendant l'entraînement, deux conditionnements sont fournis avec chaque image : une commande textuelle et une annotation telle que les keypoints OpenPose ou les bordure ‘Canny’. De cette manière, le modèle ControlNet peut apprendre à générer des images en fonction de ces deux entrées.
En fin de compte, cela permet d'apprendre à Stable Diffusion à imiter les motifs et les structures observés dans les images annotées, afin de pouvoir générer des images réalistes qui répondent aux conditionnements spécifiés.
Chaque méthode d'annotation est entraînée indépendamment. - ce qui veut dire que si on souhaite utiliser plusieurs conditionnement, il faut entraîner un modèle ControlNet différent pour chaque méthode.
👉
Pour des explications plus complètes et techniques avoir plus sur le sujet, consulter le dépôt Github officiel et la publication de recherche.

Comment installer ControlNet ?

Le moyen le plus simple d’installer et d’utiliser ControlNet, c’est de l’utiliser avec le WebUI d’AUTOMATIC1111. Il existe en effet une extension pour cette interface qui permet d’utiliser au mieux ControlNet et ses diffèrentes modèles. Elle est tellement pratique et bien faire qu’elle est devenu le standard de facto pour tous ceux qui veiulent utiliser ControtlNet.

Installer ControlNet sur AUTOMATIC1111

Si vous avez installer Automatic1111 sur votre ordinateur, vous pouvez assez facilement installer l’extension ControlNet.
Avant de commencer, vérifiez quand même que votre version d’Automatic1111 est à jour et, au besoin, faites la mise à jour.
Comment installer la mise à jour ?
Utilisez le terminal pour vous rendre dans le répertoire où est installé votre version d’Automatic1111 et exécuter la commande git pull origin master. Cela va lancer le téléchargement de la mise à jour qui va remplacer votre ancienne version.

Ajouter l’extension ControlNet

ControlNet s’installe donc comme une extensions pour l’interface graphique. Voici comment faire : Cliquez sur l’ongle principal Extension puis sur celui intitulé Install from URL. Là, indiquer l’adresse https://github.com/Mikubill/sd-webui-controlnet dans le premier champs (URL for extension’s git repository) puis cliquez sur le bouton Install.
notion image
Cliquez ensuite sur l’onglet Installed et cliquez sur le gros bouton Apply and restart UI pour recharger l’interface avec l’extension activée.
Si l’installation a correctement fonctionné, vous verrez une section déroulante appelée ControlNet en bas de l’onglet txt2img (juste au dessus du selecteur scrips).
notion image

Télécharger les modèles ControlNet

Comme nous l’avons expliqué, chaque conditionnement différents (Pose, contours, profondeur,…) correspond à un modèle différents.
Pour obtenir les principaux modèles à utiliser avec Stable Diffusion 1.5, rendez-vous sur la page de ControlNet 1.1 sur HuggingFace et téléchargez les différents fichiers .pth - Si cela vous semble trop de fichier, vous pouvez probablement vous contentez des modèles OpenPose (control_v11p_sd15_openpose.pth) et Canny (control_v11p_sd15_canny.pth) qui sont les plus fréquemment utilisé.
Pour les QR Codes et les Illusion (comme le célèbre village en spirale), vous aurez besoin du modèle QR Code Monster que vous pouvez également télécharger sur HuggingFace.
Enfin, sachez que des modèles compatibles avec le nouveau Stable Diffusion XL sont aussi disponibles - téléchargez les également depuis cette page HuggingFace.
Placez ensuite tous les modèles téléchargés dans le répertoire models/ControlNet de votre installation.
Si les modèles placés dans le répertoire ne sont pas visibles dans l’interface, cliquez sur l’icône 🔃 pour les recharger.
notion image

Alternative Cloud pour Automatic1111

Vous pouvez également utiliser Automatic1111 sur le Cloud avec Google Colab ou Diffus. C’est vraiment super simple : l’un et l’autre viennent avec l’extension pré-installée.
Suivez simplement notre Guide Diffus ou notre tutoriel d’utilisation de Stable Diffusion avec Google Colab (en acvitant controlnet). C’est aussi simple que ca !

Comment utiliser ControlNet ?

Pour utiliser ControlNet, vous devez l’activer, choisir une une image de référence et un modèle à utiliser en plus des autres de paramètres de configuration pour votre génération d’image. :
Cliquez sur la petite flèche pour ouvrir les contrôleurs ControlNet.
Cocher ensuite la case Enabled pour activer ControlNet et sélectionner un Preprocessor et le Model qui va avec (par exemple OpenPose + control_v11p_sd15_openpose).
notion image
Les version récentes de l’extension ControlNet vous permettent d’appliquer plusieurs contraintes différentes à votre génération. Ce sont les “Unit n” que vous pouvez activer (enabled) dans le panneau de contrôle ControlNet. Chaque contrainte se configure indépendamment des autres, avec ses propres paramètres.
Voyons ensemble deux exemple simple de l’utilisation de ControlNet pour générer une image à partir d’un prompt ou à partir d’une autre image.

Exemples d’utilisations de ControlNet

ControlNet en txt2img

Essayons d’utiliser ControlNet et son modèle OpenPose pour générer une image d’Harley Quinn fait du yoga. Pour cette expérience, j’ai choisis le modèle ToonYou.
Commençons juste un prompt très simple comme “(masterpiece, best quality), Harley Quinn doing yoga under the moon” auquel on ajoute un prompt négatif adapté à l’illustration.
Sans ControlNet, je vais obtenir des images variées avec des poses de yoga différentes et pas forcément très réalistes…
notion image
notion image
notion image
Pour forcer une pose particulière au personnage, nous allons donc devoir utiliser ControlNet :
  • Ouvrez la configuration ControlNet
  • Cliquez sur Enable pour activer une première unité.
  • Glissez-déposez une image de contrôle avec une personne dans la pose souhaitée dans la zone de téléchargement.
  • Choisissez openpose_full en Preprocessor et control_v11p_sd15_openpose comme Model
notion image
L’image de référence est importante puisque c’est elle qui va être utilisé pour déterminer la position du personnage. Le preprocessor va lire cette image et déterminer la pose. Puis le Model va utiliser cette information pour contraindre la génération de manière à adopter la pose.
Voici les résultats obtenu avec différentes images de contrôle :
L’image de contrôle
L’image de contrôle
La pose reconnue
La pose reconnue
Le résultat
Le résultat
L’image de contrôle
L’image de contrôle
La pose reconnue
La pose reconnue
Le résultat
Le résultat
L’image de controle
L’image de controle
La pose reconnue
La pose reconnue
Le résultat
Le résultat
Comme vous le voyez, seule la pose du personnage à de l’importance. Le reste de l’image, les couleurs comme le décor ou même les vêtements n’ont aucune influence sur l’image générée.

ControlNet en img2img

Cette fois, nous allons partir d’une image de Captain America et utiliser ControlNet pour le mettre dans une position de Yoga. Le checkpoint utilisé sera ReV Animated.
Glissez-déposez normalement l’image que vous souhaitez utiliser comme source principale dans la zone normale pour l’img2img.
notion image
Ajoutez un prompt correspondant à cette image comme par exemple “captain america standing in front of a blue and cloudy sky, Americo Makk, concept art, Marvel Cinematic Universe”. Ajoutez aussi un prompt négatif standard.
Tentez quelques générations img2img sans rien changer d’autres. Vous allez obtenir des images comme celles-ci qui reprennent plus ou moins bien la composition de l’image d’origine. Comme vous le voyez, c’est un peu aléatoire.
notion image
notion image
notion image
Une manière de garder une composition encore plus proche de l’originale pourrait etre d’utiliser ControlNet en utilisant le modèle de profondeur de champs :
  • Ouvrez la configuration ControlNet
  • Cliquez sur Enable pour activer une première unité.
  • Choisissez depth_midas en Preprocessor et control_v11f1p_sd15_depth comme Model
notion image
Lancez maintenant la génération. Vous obtiendrez une image qui montre comment la profondeur a été compris en plus de l’image générée. Cette dernière respecte beaucoup mieux la composition. ControlNet a forcé la génération à utiliser les mêmes profondeurs aux mêmes endroit, ce qui conditionne très fort l’image finale.
L’image des profondeurs
L’image des profondeurs
Le résultat 1
Le résultat 1
Le résultat 2
Le résultat 2
Voyons maintenant comment utiliser le même contrôleur pour changer la position de Captain America. Nous allons essayer de lui faire prendre une pose de Yoga.
Pour cela, cliquez sur l’option Upload independant control image - un zone d’upload apparait juste au dessus. Faites-y glisser une image avec une pose de yoga avant de puis lancer une nouvelle génération.
notion image
Encore une fois, seul ce qui va être reconnu par le preprocessor va être utilisés - les couleurs ou d’autres éléments de l’image n’ont donc aucune importance ici puisque nous analysons sa profondeur.
Cette fois, ce n’est plus l’image principale qui sert de référence mais la nouvelle image ajoutée comme control image
L’image de controle
L’image de controle
L’image des profondeurs
L’image des profondeurs
Le résultat
Le résultat
Voilà, vous savez maintenant comment utiliser ControlNet pour générer des images en text-to-image et en image-to-image. Pour aller plus loin avec cet outil, vous voudrez cependant en savoir plus sur les modèles et les préprocesseur qui les accompagnent.
C’est ce que nous allons voir maintenant en discutant des principaux modèles ControlNet.

Les modèles ControlNet

Modèles et préprocesseur

Si ce sont les modèles ControlNet qui sont utilisé au moment de la génération de l’image, ils ont besoin d’informations spécifique pour y parvenir. Ces informations, appelées “annotations” dans l’article de recherche - et elles proviennent des pré-processeurs.

C’est quoi un pré-processeur ?

Le préprocesseur est un petit programme qui va lire l’image de référence que vous aurez choisie et la traiter pour obtenir les informations spécifiques dont ControlNet aura besoin.
Le préprocesseur est donc un composant essentiel de ControlNet. Il joue un rôle crucial dans la conversion de l'image téléchargée en données qui peuvent être utilisée par ControlNet pour guider la génération avec Stable Diffusion.

Associer pré-processeur et modèle

Puisque le préprocesseur détermine les données qui seront utilisée par le modèle ControlNet, vous comprendrez que chaque modèle aura besoin d’un préprocesseur adapté qui pourra extraire les informations pertinentes pour lui.
Depuis la V1.1, les créateurs de ControlNet nomme leur modèle de manière à y reprendre un nom correspondant au préprocesseur utile pour le modèle. C’est normalement le nom qui va se trouver à la fin du nom du modèle comme vous pouvez le voir dans les exemples ci-dessous.
Modèle
Préprocesseur
control_v11p_sd15_canny
canny
control_v11p_sd15_openpose
openpose_xyz
control_v11p_sd15_scribble
scribble_xyz
control_v11p_sd15_lineart
lineart_xyz
Avec l’extension ControlNet, vous pouvez filtrer les modèles et les préprocesseurs qui vont avec en sélectionnant un type de contrôle. Lorsqu’un type est sélectionné seuls les préprocesseurs et modèles correspondant sont affichés dans les menus déroulant Preprocessor et Model.
notion image

Prévisualiser le résultat du préprocesseur

Dans Automatic1111, vous pouvez activer la pré-visualisation du résultat du préprocesseur pour voir comment l’image sera traitée :
  • Cliquez sur Allow Preview pour activer l’option de pré-visualisation.
  • Cliquez sur l’icône 💥 à droite du Preprocesor pour le lancer et afficher l’image traitée.
    • notion image

Canny

La détection Canny, est une technique relativement ancienne de détection des contours dans une image. Elle permet d’extraire les contours de manière fiable et assez claire.
Les modèle ControlNet Canny peuvent être utilisé pour conserver à la fois la composition et des détails de l’image.
L’image de référence
L’image de référence
Le résultat du préprocesseur Canny
Le résultat du préprocesseur Canny
ControlNet Canny et le checkpoint ToonYou
ControlNet Canny et le checkpoint ToonYou
ControlNet Canny et le checkpoint Reliberate
ControlNet Canny et le checkpoint Reliberate

Depth

Quand on parle de Depth Map, ou de carte des profondeurs, d’une image, on parle d’une représentation graphique de la distance des différents objects et surface de la scène par rapport au point de vue.
Les différents pré-processeurs Depth sont utiliser pour deviner ces informations de profondeurs et créés une telle Depth Map. Selon le pré-processeur choisis, le niveau de précision de cette Depth Map sera plus ou moins fin.
  • Depth Midas est le plus classique et celui utilisé par défaut.
  • Depth Leres est réputé plus précis - mais avec un risque de prendre en compte des élément de décor.
  • Depth Leres++ est encore plus détaillé.
  • Depth Zoe se situe a peu près à mi-chemin entre Midas et Leres.
Image de référence
Image de référence
Depth Midas
Depth Midas
 
Depth Midas et le checkpoint Reliberate
Depth Midas et le checkpoint Reliberate
 
Depth Leres
Depth Leres
Depth Leres et le checkpoint Reliberate
Depth Leres et le checkpoint Reliberate
Depth Leres++
Depth Leres++
Depth Leres+++ et le checkpoint Reliberate
Depth Leres+++ et le checkpoint Reliberate
Depth Zoe
Depth Zoe
Depth Zoe et le checkpoint Reliberate
Depth Zoe et le checkpoint Reliberate

Normal Map

Une Normal Map, ou carte de normales en français est une image où chaque pixels représente un vecteurs fournissant l'information d'élévation et d'inclinaison de sa surface. Elles sont habituellement utilisée pour améliorer le rendu d’image en 3D avec application de texture.
Avec ControlNet, la couleur de chaque pixel indique la direction à laquelle la surface qu’il représente fait face - ce qui permet de transférer à Stable Diffusion la composition 3D de l’image d’origine.
Deux pré-processeurs, utilise des méthodes différentes, Midas et Bae, pour obtenir une carte de normales que le modèle ControlNet pourra utiliser.
Image de référence
Image de référence
Normal_midas
Normal_midas
Normal midas et le checkpoint reliberate
Normal midas et le checkpoint reliberate
Normal_bae
Normal_bae
 Normal Bae et le checkpoint reliberate
Normal Bae et le checkpoint reliberate

OpenPose

OpenPose détecte les positions du corps humains tels que la position de la tête, des épaules, des mains, etc. C’est le ControlNet idéal pour copier des poses sans copier d'autres détails (coiffures, vêtements,…).
Il y a différents préprocesseurs OpenPose qui vont détecter différents détails de la pose, avec plus ou moins de précisions sur les partie du corps.
  • OpenPose est le préprocesseur de base - il évalue la pose du corps en identifiant la position des yeux, du nez, du coup, des épaules, des coudes, des poignée, des genoux et des chevilles.
  • OpenPose_face ajoute une détection plus détaillées des visages en ajoutant une série de points. Il permet de conserver l’expression du visage.
  • OpenPose_faceonly détecte uniquement les points du visages, sans les autres parties du corps identifié par le préprocesseur de base.
  • OpenPose_hand ajoute la reconnaissance détaillées de la positions des mains et des doigts.
  • OpenPose_full combine le préprocesseur de base avec la détection précise des visages et des mains.
  • DW_OpenPose_full est un nouveau préprocesseur basé sur des travaux de recherches plus récents. Il fait la même chose que l’OpenPose_full mais en mieux - utilisez le donc de préférence à l’ancien préprocesseur.
Voyons maintenant comment, en pratique, les différents préprocesseurs OpenPose interprètent une même photo d’origine et peuvent ensuite êtres utilisé pour générer de nouvelles images.
 
L’image d’origine
L’image d’origine
Open Pose
Open Pose
Open Pose et le checkpoint Reliberate
Open Pose et le checkpoint Reliberate
OpenPose Face
OpenPose Face
Open Pose Face et le checkpoint Reliberate
Open Pose Face et le checkpoint Reliberate
OpenPose Face Only
OpenPose Face Only
Open Pose et le checkpoint Reliberate
Open Pose et le checkpoint Reliberate
OpenPose Hand
OpenPose Hand
OpenPose Hand et le checkpoint Reliberate
OpenPose Hand et le checkpoint Reliberate
Open Pose Full
Open Pose Full
Open Pose Full et le checkpoint Reliberate
Open Pose Full et le checkpoint Reliberate
DW OpenPose Full
DW OpenPose Full
DW OpenPose Full et le checkpoint Reliberate
DW OpenPose Full et le checkpoint Reliberate

Inpaint

L'inpainting ControlNet vous permet de combiner un denoising élevé (qui permet de forte variations) tout en conservant un maximum de cohérence avec l’image de référence.
Il y a actuellement 3 pré-processeurs pour ce type de ControlNet :
  • Inpaint_global_harmonious améliore la cohérence globale et permet d'utiliser un débruitage élevé.
  • Inpaint_only ne modifie pas la zone non-masquée de l’image (Dans Automatic1111, cela revient au même qu’avec le Inpaint_global_harmonious).
  • Inpaint_only+lama va traiter l'image avec le modèle lama qui produit des résultats souvent plus propres et est très efficace pour la suppression d'objets.
📢
Nous traiterons plus en détails de l’utilisation de ControlNet Inpait dans un prochain article dédié à l’inpainting. Abonnez-vous à notre newsletter pour être prevenu de sa publication.

MLSD

Le préprocesseur MLSD (Multi-Scale Line Descriptor) excelle dans la mise en évidence des arêtes droites, dessinant avec netteté les contours des bâtiments, des aménagements intérieurs et bien plus. Il est donc particulièrement adapté aux conceptions architecturales ou à tout projet nécessitant une précision pour les lignes droites.
La contrepartie est que le MLSD a tendance à négliger les courbes. Sa conception est en effet orientée vers la capture des lignes droites, ce qui le rend moins idéal pour les images comportant de nombreuses courbes.
Image d’origine
Image d’origine
Le résultat MLSD
Le résultat MLSD
Image générée avec MLSD
Image générée avec MLSD
Image d’origine
Image d’origine
Le résultat MLSD
Le résultat MLSD
Image générée avec MLSD
Image générée avec MLSD

LineArt

Le ControlNet Line Art rappelle le Canny dans le sens où il va lui aussi détecter les contours de l’image. Le pré-processeur fonctionne cependant avec des algorithmes différents dont le résultats se rapproche plus d’un dessin au trait continus.
C’est le ControlNet idéal pour transformer une image en dessin ou peinture - même si il fonctionne aussi pour des images photographiques.
Il existe plusieurs préprocesseur Line Art :
  • LineArt standard est la version de base.
  • Invert est la version de base, mais pour une image en blanc sur fond noir.
  • LineArt Anime génère des traits dans un style manga / anime.
  • LineArt Anime Denoise fait la même chose en moins détaillé.
  • LineArt Realistic donnera un dessin de style réalistes.
  • LineArt Coarse fait la même chose que le Realistic mais avec des traits plus épais.
Image de réfèrence
Image de réfèrence
Il y a également deux modèles de control, _lineart et _lineart_anime - à utiliser selon le préprocesseur choisis.
LineArt Standard
LineArt Standard
LineArt Standard et le checkpoint ToonYou
LineArt Standard et le checkpoint ToonYou
LineArt Anime
LineArt Anime
LineArt Anime et le checkpoint ToonYou
LineArt Anime et le checkpoint ToonYou
LineArt Anime Denoise
LineArt Anime Denoise
LineArt Anime Denoise et le checkpoint ToonYou
LineArt Anime Denoise et le checkpoint ToonYou
LineArt Realistic
LineArt Realistic
LineArt Realistic et le checkpoint ToonYou
LineArt Realistic et le checkpoint ToonYou
LineArt Coarse
LineArt Coarse
LineArt Coarse et le checkpoint ToonYou
LineArt Coarse et le checkpoint ToonYou

SoftEdge

Proche des méthodes Canny et LineArt, le Soft Edge reconnait les contours d’une image. Il est cependant plus “doux” dans le sens où il offre un résultat plus fluide. Soft Edge est idéal pour les images pour lesquelles vous souhaitez une détection des contours moins cassante ou moins dure, ce qui garantit un aspect visuel plus lisse et doux..
Softedge dispose de quatre préprocesseurs, mais il y a peu de différences entre eux :
  • softhedge_hed
  • softedge_hedsafe
  • softhedge_pidinit
  • softhedge_pidsafe
 
L’image de référence
L’image de référence
Softhedge HED
Softhedge HED
Softhedge Hed et le checkpoint Reliberate
Softhedge Hed et le checkpoint Reliberate
Softhedge Hedsafe
Softhedge Hedsafe
Softhedge Hedsafe et le checkpoint Reliberate
Softhedge Hedsafe et le checkpoint Reliberate
Softhedge Pidinet
Softhedge Pidinet
Softhedge Pidinet et le checkpoint Reliberate
Softhedge Pidinet et le checkpoint Reliberate
Softhedge Pidisafe
Softhedge Pidisafe
Softhedge Pidisafe et le checkpoint Reliberate
Softhedge Pidisafe et le checkpoint Reliberate

Scribble

En anglais, Scribble veut dire “gribouiller”. Mais on pourrait aussi traduire par “croquis” qui correspond peut-être mieux à l’effet obtenu avec ces ces préprocesseurs - celui d’un dessin à la va-vite.
Selon le préprocesseur choisis, le croquis sera plus ou moins détaillés, avec des lignes plus ou moins précises :
  • Scribble HED utilise la détection Holistically-Nested Edge Detection (HED) pour produire des contours comme le ferait une personne réelle. C’est le préprocesseur recommandé pour le coloriage d’un croquis.
  • Scribble Pidinet détecte les courbes et les bords droits à d’un réseau Pixel Difference (Pidinet) . Son résultat est assez similaire au HED, mais avec généralement des lignes plus nettes et détaillées.
  • Scribble xdog utilise une détection nommée EXtended Difference of Gaussian dont vous pouvez modifier le réglage en adaptant le xDoG threshold pour un résultat plus ou moins détaillé.
L’image de référence
L’image de référence
 
Sribble HED
Sribble HED
Scribble HED et le checkpoint reliberate
Scribble HED et le checkpoint reliberate
Scribble Pidinet
Scribble Pidinet
Scribble Pidinet et le checkpoint Reliberate
Scribble Pidinet et le checkpoint Reliberate
Scrible xdog
Scrible xdog
Scribble xdog et le checkpoint reliberate
Scribble xdog et le checkpoint reliberate

Segmentation

La segmentation est une technique utilisée pour séparer et identifier différents objets ou régions au sein d'une image ou d'une scène. Elle consiste à étiqueter chaque pixel ou groupe de pixels afin de créer une « carte » des différentes zones présentes dans l'image.
La segmentation permet de générer de nouvelles images avec une composition cohérente, en préservant l'agencement des objets tout en modifiant leurs attributs visuels. Elle permet aussi de reconstruire les informations manquantes ou de déduire la forme et l'apparence des objets.
Il y a trois préprocesseurs disponibles pour la Segmentation :
  • seg_ofade20k : Génère des cartes de segmentation en utilisant le dataset ADE20K, qui est un ensemble de données complet pour la compréhension de scènes et la catégorisation d'objets.
  • seg_ofcoco : Produit des cartes de segmentation en utilisant le dataset COCO, largement utilisé pour des tâches de vision par ordinateur telles que la détection d'objets, la segmentation et la génération de légendes.
  • seg_ufade20k : Génère également des cartes de segmentation en utilisant le dataset ADE20K, mais est considéré comme ayant une performance inférieure aux deux autres.
L’image de référence
L’image de référence
 
seg_ofade20k
seg_ofade20k
seg_ofade20k et le checkpoint reliberate
seg_ofade20k et le checkpoint reliberate
seg_ofcoco
seg_ofcoco
seg_ofcoco et le checkpoint reliberate
seg_ofcoco et le checkpoint reliberate
seg_ufade20k
seg_ufade20k
seg_ufade20k et le checkpoint reliberate
seg_ufade20k et le checkpoint reliberate

Les paramètres ControlNet

Image

C’est ici que vous sélectionnez l’image de référence. Vous pouvez la faire glisser et la déposer dans le cadre ou cliquer sur la zone et sélectionner un fichier à l'aide du navigateur.
notion image
L'image de référence sera traitée par le préprocesseur sélectionné plus bas.
L’icône 📝 vous permet de créer une image vide sur laquelle vous pourrez directement dessiné un croquis via l’interface.
L’icône 📷 permet de prendre une photo avec votre webcam ou la caméra de l’appareil que vous utilisez (vous devrez autoriser le navigateur à l’utiliser).

Options

notion image

Enable

Il faut cocher la case pour activer le ControlNet.
Si elle n’est pas cochée, les autres paramètres sont ignorés et ControlNet ne sera pas utilisé pour la génération de votre image.

Low VRAM

Si vous avez un GPU avec moins moins de 8Go de VRAM, cocher cette option pour utiliser une fonctionnalité expérimentale utilisant moins de VRAM.
Vous pouvez également la cocher pour économiser en mémoire lorsque vous générer plusieurs images à la fois avec ControlNet.

Pixel Perfect

Quand cette option est cochée, ControlNet utilise la hauteur et la largeur configuré pour votre génération text-to-image pour pré-traiter l’image de référence avec le préprocesseur.

Allow Preview

Cette option active la fenêtre de prévisualisation du prétraitement à côté de l'image de référence. Utilisez l'icône 💥 à côté du menu déroulant du préprocesseur pour prévisualiser sont effet sur l’image de référence.

Choix des modèles

notion image

Control Type

Pour vous aider à choisir le modèle ControlNet à utiliser et le préprocesseur qui va avec, vous pouvez choisir un type de contrôleur dans cette liste. Les menus déroulants en dessous n’afficheront alors que les options correspondantes.

Preprocessor

Dans ce menu déroulant, vous pouvez choisir le pré-processeur à utiliser avec ControlNet.
Il est également possible de ne pas utiliser de préprocesseur en utilisant directement une image de référence adapté au modèle ControlNet choisis.
Notez que certains type de contrôleur n’ont pas de pré-processeur associés.

Model

Ici, vous choisissez le modèle à utiliser avec ControlNet.

Control Weight

C’est le poids, ou la force du contrôle appliqué par ControlNet.
Il permet de contrôler le degré de suivi du contrôle par rapport au prompt dans la génération de l’image. Plus le Weight est faible, moins ControlNet demandera à l'image de suivre l’image de référence.
notion image

ControlNet step

Vous pouvez configurer à quels moment (Step) de génération text-to-image fonctionne ControlNet.

Starting Step

Le Step auquel ControlNet comment à s’appliquer. 0 signifie que ControlNet intervient dès le début de la génération.

Ending Step

Le Step auquel ControlNet s’arrête. 1 signifie que ControlNet fonctionne jusqu’à la fin de la génération.
Selon le type de contrôleur choisis, vous pouvez adapter les Steps de début et de fin de ControlNet.
Par exemple, étant donné que les premières étapes de la génération définissent la composition globale de l’image, un contrôleur OpenPose pourra déjà définir la pose d’un personnage avec un Ending Step à 0.2 et donc n’intervenir que pendant les premiers 20% de la génération.

Options de préprocesseur

Selon le préprocesseur choisis, une ou plusieurs options seront affichées sous forme de slider.
notion image

Preprocessor Resolution

Cette option est disponible pour de nombreux préprocesseur et correspond à la résolution de l’image pré-traiter. Elle est par contre caché si vous sélectionner Pixel Perfect au dessus, puisque dans ce cas ce sont les dimensions définie en text-to-image qui s’appliquent.

Options de préprocesseur

Selon le préprocesseur choisis, une ou plusieurs options seront affichées sous forme de slider.
notion image

Preprocessor Resolution

Cette option est disponible pour de nombreux préprocesseur et correspond à la résolution de l’image pré-traiter

Control Mode

Cette option définis le mode de fonctionnement de ControlNet, qui affecte l’importance que va prendre le contrôle appliqué dans la génération de l’image.
notion image

Balanced

C’est le mode Equilibré - ControlNet est appliqué à la fois au conditionnement (application du prompt) et au déconditionnement (application du prompt négatif) des étapes d'échantillonnage.
Il s'agit du mode de fonctionnement standard de ControlNet.

My prompt is more important

Dans ce mode, l'effet du ControlNet diminue progressivement par rapport aux instances d'injection U-Net (il y en a 13 dans une étape d'échantillonnage).
En pratique, cela signifie effectivement que votre prompt aura plus d’importance que l’effet du modèle ControlNet.

ControlNet is more important

Avec ce mode, vous allez désactivez ControlNet lors du déconditionnement.
En conséquence, la valeur en CFG choisir pour le text to image va agir comme un multiplicateur de l'effet de ControlNet qui va gagner en importance par rapport au prompt.

Resize Mode

Le mode de redimensionnement détermine comment gérer les différences rapport dimensions entre l’image de référence et celle(s) à générer.
notion image
A priori, vous n’avez pas à vous préoccuper de ces options si les images ont le même rapport hauteur/largeur. Encore moins si elles sont les mêmes dimensions.

Just Resize

Redimensionne indépendamment la largeur et la hauteur de l’image de référence pour l'adapter au canevas de l'image.
Cette opération modifie donc rapport hauteur/largeur de l’image.

Crop and Resize

Recadre l’image de référence en la coupant pour que son plus petit côté corresponde à l’image à générée.

Resize en Fill

Redimensionne l'ensemble de l’image de référence pour qu’elle puisse être contenue dans l’image à générée. du vide est ajouté autours de l’image de référence pour la faire correspondre aux rapport hauteur/largeur de l’image à générée.

FAQ ControlNet et dépannage

Comment utiliser plusieurs ControlNet en même temps ?
notion image
L’extension ControlNet pour Automatic1111 permet de configurer plusieurs Unit qui dont autant de ControlNet à utiliser.
Chaque Unit permet de sélectionner un modele ControlNet et de le configurer. Cliquez sur l’onglet d’une Unit et cocher l’option Enabled pour l’activer.
ControlNet ne semble pas correctement utiliser l’image du contrôleur. Pourquoi ?
  1. Assurez-vous d'avoir coché la case Enable dans le panneau de ControlNet.
  1. Assurez-vous d'avoir sélectionné un preprocessor et le model correspondant.
  1. Assurez-vous que votre extension ControlNet est entièrement à jour. Allez dans Extensions et cliquez sur Check for updates. Mettez à jour votre extension si nécessaire et redémarrez l'interface WebUI.
 

Profitez de toute la puissance de SDXL sans rien installer et depuis n'importe quel ordinateur.

Stable Diffusion sur le Cloud

Créer avec Diffus