L'extension WebUI pour ControlNet et d'autres contrôles SD basés sur l'injection.
Cette extension est destinée à l'interface utilisateur Web de diffusion stable d'AUTOMATIC1111 et permet à l'interface utilisateur Web d'ajouter ControlNet au modèle de diffusion stable d'origine pour générer des images. L'ajout se fait à la volée, la fusion n'est pas nécessaire.
https://github.com/Mikubill/sd-webui-controlnet.git
dans "URL du référentiel git de l'extension".Vous pouvez trouver tous les liens de téléchargement ici : https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download.
Nous bénéficions désormais d'une prise en charge parfaite de tous les modèles et préprocesseurs disponibles, y compris une prise en charge parfaite de l'adaptateur de style T2I et de ControlNet 1.1 Shuffle. (Assurez-vous que vos noms de fichiers YAML et vos noms de fichiers de modèle sont identiques, voir également les fichiers YAML dans "stable-diffusion-webuiextensionssd-webui-controlnetmodels".)
Désormais, si vous activez High-Res Fix dans A1111, chaque réseau de contrôle produira deux images de contrôle différentes : une petite et une grande. Le petit est destiné à votre génération de base et le grand est destiné à votre génération de correctifs haute résolution. Les deux images de contrôle sont calculées par un algorithme intelligent appelé « rééchantillonnage d’images de contrôle de très haute qualité ». Ceci est activé par défaut et vous n’avez besoin de modifier aucun paramètre.
ControlNet est désormais largement testé avec les différents types de masques de l'A1111, notamment « Inpaint masqué »/« Inpaint non masqué » et « Image entière »/« Uniquement masqué » et « Uniquement remplissage masqué » et « Masque flou ». Le redimensionnement correspond parfaitement aux options « Juste redimensionner »/« Recadrer et redimensionner »/« Redimensionner et remplir » de l'A1111. Cela signifie que vous pouvez utiliser ControlNet presque partout dans votre interface utilisateur A1111 sans difficulté !
Désormais, si vous activez le mode Pixel Perfect, vous n'avez pas besoin de définir manuellement les résolutions du préprocesseur (annotateur). Le ControlNet calculera automatiquement la meilleure résolution d'annotateur pour vous afin que chaque pixel corresponde parfaitement à la diffusion stable.
Nous avons réorganisé certaines interfaces utilisateur auparavant déroutantes, comme « largeur/hauteur du canevas pour un nouveau canevas », et elles se trouvent désormais dans le bouton. Désormais, l'interface graphique d'aperçu est contrôlée par l'option "Autoriser l'aperçu" et le bouton de déclenchement ?. La taille de l'image d'aperçu est meilleure qu'avant et vous n'avez pas besoin de faire défiler vers le haut et vers le bas - votre interface graphique a1111 ne sera plus gâchée !
Désormais, ControlNet 1.1 peut prendre en charge presque toutes les méthodes de conversion ascendante/tuile. ControlNet 1.1 prend en charge le script « Ultimate SD upscale » et presque toutes les autres extensions basées sur des tuiles. Veuillez ne pas confondre "Ultimate SD upscale" avec "SD upscale" - ce sont des scripts différents. Notez que la méthode de mise à l’échelle la plus recommandée est « Tiled VAE/Diffusion » mais nous testons autant de méthodes/extensions que possible. Notez que "SD upscale" est pris en charge depuis la version 1.1.117, et si vous l'utilisez, vous devez laisser toutes les images ControlNet vides (nous ne recommandons pas "SD upscale" car il est quelque peu bogué et ne peut pas être maintenu - utilisez le " Ultimate SD upscale" à la place).
Nous avons corrigé de nombreux bugs dans le mode Guess de la version 1.0 précédente et il s'appelle désormais Mode Contrôle.
Vous pouvez désormais contrôler quel aspect est le plus important (votre invite ou votre ControlNet) :
« Équilibré » : ControlNet des deux côtés de l'échelle CFG, ce qui équivaut à désactiver le « Mode Guess » dans ControlNet 1.0
"Mon message est plus important" : ControlNet des deux côtés de l'échelle CFG, avec des injections SD U-Net progressivement réduites (layer_weight*=0,825**I, où 0<=I <13, et 13 signifie que ControlNet a injecté SD 13 fois ). De cette façon, vous pouvez vous assurer que vos invites sont parfaitement affichées dans vos images générées.
"ControlNet est plus important" : ControlNet uniquement du côté conditionnel de l'échelle CFG (le cond dans le batch-cond-uncond de l'A1111). Cela signifie que ControlNet sera X fois plus puissant si votre échelle cfg est X. Par exemple, si votre échelle cfg est de 7, alors ControlNet est 7 fois plus puissant. Notez qu'ici les X fois plus forts sont différents des "Poids de Contrôle" puisque vos poids ne sont pas modifiés. Cet effet "plus fort" a généralement moins d'artefacts et donne à ControlNet plus de place pour deviner ce qui manque dans vos invites (et dans la version 1.0 précédente, il est appelé "Mode Guess").
Entrée (profondeur+rusé+hed) | "Équilibré" | "Mon message est plus important" | "ControlNet est plus important" |
Nous disposons désormais d'un préprocesseur reference-only
qui ne nécessite aucun modèle de contrôle. Il peut guider la diffusion directement en utilisant des images comme références.
(Invite "un chien qui court dans les prairies, meilleure qualité,...")
Cette méthode est similaire à la référence basée sur Inpaint mais elle ne rend pas votre image désordonnée.
De nombreux utilisateurs professionnels de l'A1111 connaissent une astuce pour diffuser une image avec des références par inpaint. Par exemple, si vous avez une image de chien de 512 x 512 et que vous souhaitez générer une autre image de 512 x 512 avec le même chien, certains utilisateurs connecteront l'image de chien de 512 x 512 et une image vierge de 512 x 512 dans une image de 1024 x 512, l'enverront à Inpaint et masqueront. la partie vierge 512x512 pour diffuser un chien d'apparence similaire. Cependant, cette méthode n'est généralement pas très satisfaisante car les images sont connectées et de nombreuses distorsions apparaissent.
Ce ControlNet reference-only
peut relier directement les couches d'attention de votre SD à n'importe quelle image indépendante, de sorte que votre SD lise des images arbitraires à titre de référence. Vous avez besoin d'au moins ControlNet 1.1.153 pour l'utiliser.
Pour l'utiliser, sélectionnez simplement reference-only
comme préprocesseur et mettez une image. Votre SD utilisera simplement l'image comme référence.
Notez que cette méthode est aussi « sans opinion » que possible. Il ne contient que des codes de connexion très basiques, sans aucune préférence personnelle, pour connecter les couches d'attention à vos images de référence. Cependant, même si nous avons fait de notre mieux pour ne pas inclure de codes d'opinion, nous devons encore écrire des implémentations subjectives pour gérer la pondération, l'échelle cfg, etc. - un rapport technique est en cours.
Plus d'exemples ici.
Voir aussi les documents de ControlNet 1.1 :
https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-spécification
C'est mon réglage. Si vous rencontrez un problème, vous pouvez utiliser ce paramètre comme contrôle d'intégrité
https://huggingface.co/lllyasviel/ControlNet/tree/main/models
Vous pouvez toujours utiliser tous les modèles précédents dans la version précédente de ControlNet 1.0. Désormais, la "profondeur" précédente s'appelle désormais "deep_midas", la "normale" précédente s'appelle "normal_midas", la "hed" précédente s'appelle "softedge_hed". Et à partir de la version 1.1, toutes les cartes linéaires, cartes de contours, cartes linéaires et cartes de limites auront un fond noir et des lignes blanches.
(Depuis l'adaptateur TencentARC/T2I)
Pour utiliser les modèles d'adaptateur T2I :
Notez que "CoAdapter" n'est pas encore implémenté.
Les résultats ci-dessous proviennent de ControlNet 1.0.
Source | Saisir | Sortir |
---|---|---|
(pas de préprocesseur) | ||
(pas de préprocesseur) | ||
Les exemples ci-dessous proviennent de T2I-Adapter.
Depuis t2iadapter_color_sd14v1.pth
:
Source | Saisir | Sortir |
---|---|---|
Depuis t2iadapter_style_sd14v1.pth
:
Source | Saisir | Sortir |
---|---|---|
(clip, non-image) |
--xformers
activé et le mode Low VRAM
coché dans l'interface utilisateur, va jusqu'à 768 x 832 Cette option permet plusieurs entrées ControlNet pour une seule génération. Pour activer cette option, modifiez Multi ControlNet: Max models amount (requires restart)
dans les paramètres. Notez que vous devrez redémarrer WebUI pour que les modifications prennent effet.
Source A | SourceB | Sortir |
Le poids est le poids de « l’influence » du controlnet. C'est analogue à attirer l'attention/l'accent. Par exemple (mon invite : 1.2). Techniquement, c'est le facteur par lequel multiplier les sorties ControlNet avant de les fusionner avec la SD Unet d'origine.
Le début/la fin du guidage correspond au pourcentage du nombre total d'étapes appliqué par le réseau de contrôle (force du guidage = fin du guidage). C'est analogue à l'édition/décalage rapide. Par exemple, [myprompt::0.8] (il s'applique depuis le début jusqu'à 80 % du total des étapes)
Mettez n'importe quelle unité en mode batch pour activer le mode batch pour toutes les unités. Spécifiez un répertoire de lots pour chaque unité ou utilisez la nouvelle zone de texte dans l'onglet de lots img2img comme solution de secours. Bien que la zone de texte se trouve dans l'onglet batch img2img, vous pouvez également l'utiliser pour générer des images dans l'onglet txt2img.
Notez que cette fonctionnalité n'est disponible que dans l'interface utilisateur de gradio. Appelez les API autant de fois que vous le souhaitez pour une planification par lots personnalisée.
Cette extension peut accepter les tâches txt2img ou img2img via une API ou un appel d'extension externe. Notez que vous devrez peut-être activer Allow other scripts to control this extension
dans les paramètres des appels externes.
Pour utiliser l'API : démarrez WebUI avec l'argument --api
et accédez à http://webui-address/docs
pour des documents ou des exemples de paiement.
Pour utiliser un appel externe : Checkout Wiki
Cette extension ajoute ces arguments de ligne de commande au webui :
--controlnet-dir ADD a controlnet models directory
--controlnet-annotator-models-path SET the directory for annotator models
--no-half-controlnet load controlnet models in full precision
--controlnet-preprocessor-cache-size Cache size for controlnet preprocessor results
--controlnet-loglevel Log level for the controlnet extension
--controlnet-tracemalloc Enable malloc memory tracing
Testé avec pytorch tous les soirs : #143 (commentaire)
Pour utiliser cette extension avec mps et pytorch normal, vous devrez peut-être actuellement démarrer WebUI avec --no-half
.
La version précédente (sd-webui-controlnet 1.0) est archivée dans
https://github.com/lllyasviel/webui-controlnet-v1-archived
L'utilisation de cette version ne constitue pas un arrêt temporaire des mises à jour. Vous arrêterez définitivement toutes les mises à jour.
Veuillez considérer cette version si vous travaillez avec des studios professionnels qui nécessitent une reproduction à 100 % de tous les résultats précédents pixel par pixel.
Cette implémentation est inspirée de kohya-ss/sd-webui-additional-networks