Stable Diffusion: Qu'est-ce que ControlNet ?

Les personnes qui découvrent les réseaux neuronaux génératifs pensent souvent à tort que le contrôle du résultat final est extrêmement difficile, en particulier lorsqu'il s'agit de modifier le résultat en changeant la formulation de l'invite. À l'heure actuelle, il existe une série d'outils connus sous le nom de ControlNet qui facilitent un contrôle relativement simple et efficace des résultats de la génération.
Dans cet article, nous allons montrer comment manipuler facilement la pose des personnages générés en utilisant des images préexistantes et des "squelettes" personnalisés, à l'aide d'un de ces outils, OpenPose.
Étape 1. Installer la diffusion stable
Veuillez utiliser notre guide pas à pas pour installer Stable Diffusion avec le modèle de base et l'interface WebUI. Ce guide est basé sur le script AUTOMATIC1111.
Etape 2. Installer l'extension ControlNet
Nous déconseillons fortement l'installation de l'extension ControlNet (sd-webui-controlnet) à partir du dépôt standard en raison de problèmes potentiels de fonctionnalité. L'un des problèmes majeurs que nous avons rencontrés lors de la préparation de ce guide est le blocage de l'interface web. Bien que l'image soit initialement générée avec succès, l'interface WebUI ne répond plus lorsque l'image est générée une seconde fois. Une solution alternative serait d'installer la même extension à partir d'une source externe.
Ouvrez l'interface WebUI et suivez les onglets : Extensions > Install from URL. Collez cette URL dans le champ approprié :
https://github.com/Mikubill/sd-webui-controlnet
Cliquez ensuite sur le bouton Install:

Lorsque le processus est terminé avec succès, le message suivant doit apparaître :
Installed into /home/usergpu/stable-diffusion-webui/extensions/sd-webui-controlnet. Use Installed tab to restart.
Redémarrons l'URL en cliquant sur le bouton Appliquer et redémarrer l'interface utilisateur dans l'onglet Installé :

Après le redémarrage de l'interface, le nouvel élément ControlNet apparaît avec de nombreuses options supplémentaires :

Étape 3. Télécharger OpenPose
Ajouter la clé HF
Générons et ajoutons une clé SSH que vous pourrez utiliser dans Hugging Face :
cd ~/.ssh && ssh-keygen
Lorsque la paire de clés est générée, vous pouvez afficher la clé publique dans l'émulateur de terminal :
cat id_rsa.pub
Copiez toutes les informations commençant par ssh-rsa et se terminant par usergpu@gpuserver, comme indiqué dans la capture d'écran suivante :

Ouvrez un navigateur web, tapez https://huggingface.co/ dans la barre d'adresse et appuyez sur Enter. Connectez-vous à votre compte HF et ouvrez les paramètres du profil. Choisissez ensuite SSH and GPG Keys et cliquez sur le bouton Add SSH Key:

Remplissez le Key name et collez le SSH Public key copié depuis le terminal. Sauvegardez la clé en appuyant sur Add key:

Maintenant, votre compte HF est lié à la clé SSH publique. La seconde partie (clé privée) est stockée sur le serveur. L'étape suivante consiste à installer une extension Git LFS (Large File Storage) spécifique, qui est utilisée pour télécharger des fichiers volumineux tels que des modèles de réseaux neuronaux.
Installer Git LFS
L'étape suivante consiste à installer une extension Git LFS (Large File Storage) spécifique, utilisée pour télécharger des fichiers volumineux tels que des modèles de réseaux neuronaux. Ouvrez votre répertoire personnel :
cd ~/
Téléchargez et exécutez le script shell. Ce script installe un nouveau dépôt tiers avec git-lfs :
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
Vous pouvez maintenant l'installer à l'aide du gestionnaire de paquets standard :
sudo apt-get install git-lfs
Configurons git pour qu'il utilise notre pseudo HF :
git config --global user.name "John"
Et lié au compte email HF :
git config --global user.email "john.doe@example.com"
Télécharger le référentiel
Nous recommandons, si possible, d'utiliser un disque dur local pour télécharger et stocker les modèles. Pour en savoir plus, consultez notre guide " Partitionnement des disques sous Linux". Pour cet exemple, nous avons monté un disque SSD sur le point de montage /mnt/fastdisk. Il appartiendra à l'utilisateur par défaut :
sudo chown usergpu:usergpu /mnt/fastdisk
Ouvrez le répertoire :
cd /mnt/fastdisk
Clonez le dépôt ControlNet à partir de HuggingFace. Git-LFS précédemment installé remplacera automatiquement les pointeurs par de vrais fichiers :
git clone git@hf.co:lllyasviel/ControlNet-v1-1
Dans cet exemple, nous n'ajoutons qu'un seul modèle à l'interface Web de diffusion stable. Cependant, vous pouvez copier tous les modèles disponibles dans le référentiel (~18GB) :
cp /mnt/fastdisk/ControlNet-v1-1/control_v11p_sd15_openpose.pth /home/usergpu/stable-diffusion-webui/models/ControlNet/
Étape 4. Exécuter le processus de génération
Le modèle actuel fourni est assez basique et pourrait ne pas donner de résultats satisfaisants. Nous suggérons donc de le remplacer par un modèle personnalisé. Vous trouverez des indications sur la manière de procéder dans cet article : Modèles de diffusion stable : personnalisation et options. Pour cet exemple, nous avons téléchargé RealisticVision v6.0 B1.
Si vous souhaitez générer votre première image à l'aide d'OpenPose, ouvrez l'onglet ControlNet, choisissez OpenPose, cochez Enable et Allow Preview. Cliquez ensuite sur Upload pour ajouter une image contenant la pose souhaitée :

Vous pouvez demander au système de générer un aperçu de la pose en cliquant sur le bouton avec l'icône d'explosion :

A gauche, l'image originale est affichée. À droite, vous pouvez voir le "squelette" représentant la pose telle qu'elle a été reconnue par le modèle de réseau neuronal :
![]() |
![]() |
Vous pouvez maintenant taper l'invite principale, par exemple "dancing bear, by Pixar" ou "dancing fox, by Pixar" et cliquer sur le bouton Generate. Après quelques secondes, vous obtiendrez des résultats comme ceux-ci :
![]() |
![]() |
Le système tentera de générer une nouvelle image à partir du "squelette" obtenu à partir de l'image originale. Dans certains cas, la pose peut ne pas être exacte, mais cela peut être facilement corrigé en modifiant manuellement le "squelette".
Étape 5. Modification de la pose
Bien que cela puisse sembler magique, le modèle n'est pas parfait et des erreurs occasionnelles peuvent avoir un impact sur l'image finale. Pour éviter tout problème lors de la génération de l'image, vous avez la possibilité d'ajuster manuellement le "squelette" en cliquant sur le bouton Edit:

Dans l'éditeur fourni, vous pouvez facilement ajuster la pose par glisser-déposer, ou supprimer les points non désirés par un clic droit. Il suffit ensuite de cliquer sur le bouton Send pose to ControlNet pour que la nouvelle pose soit appliquée :

Au-delà d'OpenPose, ControlNet offre une variété d'outils pour personnaliser et perfectionner vos résultats. De plus, les serveurs dédiés fournis par LeaderGPU garantissent un processus rapide et pratique.
Voir aussi:
Mis à jour: 26.03.2025
Publié: 21.01.2025