ComfyUI-Advanced-ControlNet
Nœuds permettant de planifier la force de ControlNet sur plusieurs pas de temps et de latences par lots, ainsi que d'appliquer des poids personnalisés et des masques d'attention. Les nœuds ControlNet ici prennent entièrement en charge l'échantillonnage de contexte glissant, comme celui utilisé dans les nœuds ComfyUI-AnimateDiff-Evolved. Prend actuellement en charge ControlNets, T2IAdapters, ControlLoRAs, ControlLLLite, SparseCtrls, SVD-ControlNets et Reference.
Les pondérations personnalisées permettent la réplication de la fonctionnalité « Mon invite est plus importante » de l'extension sd-webui ControlNet d'Auto1111 via des pondérations logicielles, et la fonctionnalité « ControlNet est plus importante » peut être contrôlée de manière granulaire en modifiant le uncond_multiplier sur les mêmes pondérations logicielles.
Les préprocesseurs ControlNet sont disponibles via les nœuds confortablesui_controlnet_aux.
Caractéristiques
- Planification du pas de temps et de la force latente
- Masques d'attention
- Répliquez la fonctionnalité "Mon invite est plus importante" de l'extension sd-webui-controlnet via Soft Weights et permettez à la douceur d'être modifiée via base_multiplier
- Répliquer la fonctionnalité "ControlNet est plus important" de l'extension sd-webui-controlnet via uncond_multiplier sur Soft Weights
- uncond_multiplier=0.0 donne des résultats identiques à ceux de la fonctionnalité auto1111, mais les valeurs comprises entre 0,0 et 1,0 peuvent être utilisées sans problème pour contrôler le paramètre de manière granulaire.
- Prise en charge de ControlNet, T2IAdapter et ControlLoRA pour les fenêtres contextuelles coulissantes
- Prise en charge de ControlLLLite
- Prise en charge de SparseCtrl
- Prise en charge de SVD-ControlNet
- ControlNets de diffusion vidéo stables formés par CiaraRowles : Profondeur, Lineart
- Support de référence
- Prend en charge les modes
reference_attn
, reference_adain
et refrence_adain+attn
. style_fidelity
et ref_weight
sont respectivement équivalents à style_fidelity et control_weight dans Auto1111, et la force d'Apply ControlNet est l'équilibre entre le résultat influencé par la référence et le résultat sans référence. Il existe également un nœud Reference ControlNet (Finetune) qui permet d'ajuster séparément le style_fidelity, le poids et la force de l'attn et de l'adain.
Table des matières:
- Explication de la planification
- Nœuds
- Utilisation (je le remplirai bientôt)
Explication de la planification
Les deux concepts fondamentaux de la planification sont les images clés Timestep et les images clés latentes .
Les images clés Timestep contiennent les valeurs qui guident les paramètres d'un réseau de contrôle et commencent à prendre effet en fonction de leur start_percent, qui correspond au pourcentage du processus d'échantillonnage. Ils peuvent contenir des masques pour les forces de chaque latent, control_net_weights et latent_keyframes (forces spécifiques pour chaque latent), tous facultatifs.
Les images clés latentes déterminent la force du réseau de contrôle pour des latentes spécifiques - tout ce qu'elles contiennent est le batch_index de la latente et la force que le réseau de contrôle doit appliquer pour cette latente. En tant que concept, les images clés latentes produisent le même effet qu'un masque uniforme avec la valeur de force choisie.
![image_advcn](https://images.downcodes.com/uploads/20241125/img_67449a15e5e1330.png)
Nœuds
Les nœuds ControlNet fournis ici sont les nœuds Apply Advanced ControlNet et Load Advanced ControlNet Model (ou diff). Les nœuds Vanilla ControlNet sont également compatibles et peuvent être utilisés de manière presque interchangeable - la seule différence est qu'au moins un de ces nœuds doit être utilisé pour que les versions avancées de ControlNets soient utilisées (important pour l'échantillonnage de contexte glissant, comme avec AnimateDiff-Evolved) .
Clé:
- ? - entrées requises
- ? - entrées optionnelles
- ? - démarrer en tant que widgets, peut être converti en entrées
- ? - entrée/sortie facultative, mais son utilisation n'est pas recommandée sauf si nécessaire
- ? - sortir
Appliquer ControlNet avancé
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e64df31.png)
Même fonctionnalité que le nœud Vanilla Apply Advanced ControlNet (Advanced), sauf avec les fonctionnalités Advanced ControlNet qui y sont ajoutées. Convertit automatiquement n'importe quel ControlNet à partir des chargeurs ControlNet en versions avancées.
Entrées
- ? positif : conditionnement (positif).
- ? négatif : conditionnement (négatif).
- ? control_net : controlnet chargé ; sera automatiquement converti en version avancée par ce nœud, s'il s'agit d'un type pris en charge.
- ? image : images pour guider les réseaux de contrôle - si le réseau de contrôle chargé l'exige, ils doivent prétraiter les images. Si une image est fournie, elle sera utilisée pour toutes les latentes. Si plusieurs images sont fournies, nous utiliserons chaque image séparément pour chaque latente. S'il n'y a pas assez d'images pour atteindre le nombre latent, les images seront répétées depuis le début pour correspondre à la fonctionnalité Vanilla ControlNet.
- ? mask_optional : masques d'attention à appliquer aux réseaux de contrôle ; fondamentalement, décide à quelle partie de l'image le réseau de contrôle s'applique (et la force relative, si le masque n'est pas binaire). Comme pour la saisie d'image, si vous fournissez plusieurs masques, chacun peut s'appliquer à un masque latent différent.
- ? timestep_kf : images clés pas à pas temporel pour guider l'effet Controlnet tout au long des étapes d'échantillonnage.
- ? latent_kf_override : remplacement des images clés latentes, utile si aucune autre fonctionnalité des images clés de pas de temps n'est nécessaire. REMARQUE : cette image clé latente sera appliquée à TOUS les pas de temps, peu importe s'il existe d'autres images clés latentes attachées aux images clés de pas de temps connectées.
- ? poids_override : remplacement des poids, utile si aucune autre fonctionnalité des images clés de pas de temps n'est nécessaire. REMARQUE : ce poids sera appliqué à TOUS les pas de temps, même si d'autres poids sont attachés aux images clés de pas de temps connectées.
- ? force : force du réseau de contrôle ; 1,0 correspond à la puissance maximale, 0,0 correspond à aucun effet.
- ? start_percent : pourcentage de pas d'échantillonnage auquel Controlnet doit commencer à être appliqué - quel que soit le start_percent défini sur les images clés de pas de temps, ils ne prendront effet que lorsque ce start_percent sera atteint.
- ? stop_percent : pourcentage de pas d'échantillonnage auquel controlnet doit cesser d'être appliqué - quel que soit le start_percent défini sur les images clés de pas de temps, ils ne prendront pas effet une fois ce end_percent atteint.
Sorties
- ? positif : conditionnement (positif) avec filets de contrôle appliqués
- ? négatif : conditionnement (négatif) avec des filets de contrôle appliqués
Charger le modèle ControlNet avancé
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e6ac332.png)
Charge un modèle ControlNet et le convertit en une version avancée qui prend en charge toutes les fonctionnalités de ce référentiel. Lorsqu'il est utilisé avec le nœud Apply Advanced ControlNet , il n'y a aucune raison d'utiliser l'entrée timestep_keyframe sur ce nœud - utilisez plutôt timestep_kf sur le nœud Apply.
Entrées
- ? timestep_keyframe : entrée facultative et probablement inutile pour que ControlNet utilise les timestep_keyframes sélectionnés - ne doit pas être utilisé sauf si vous en avez besoin. Utile si ce nœud n'est pas attaché au nœud Apply Advanced ControlNet , mais que vous souhaitez toujours utiliser Timestep Keyframe ou utiliser les sorties TK_SHORTCUT de ControlWeights dans le même scénario. Sera remplacé par l'entrée timestep_kf sur le nœud Apply Advanced ControlNet , si elle y est fournie.
- ? model : modèle à brancher sur la version diff du nœud. Certains réseaux de contrôle sont conçus pour recevoir le modèle ; si vous ne savez pas ce que cela fait, vous ne voudrez probablement pas utiliser la version diff du nœud.
Sorties
- ? CONTROL_NET : ControlNet avancé chargé
Image clé de pas de temps
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e713833.png)
Planification du nœud sur plusieurs pas de temps (étapes d'échantillonnage) en fonction du start_percent défini. Le chaînage des images clés pas à pas temporel permet la planification ControlNet sur plusieurs étapes d'échantillonnage (en pourcentage), via une planification d'images clés pas à pas temporel.
Entrées
- ? prev_timestep_kf : utilisé pour enchaîner les images clés Timestep pour créer un planning. L'ordre n'a pas d'importance : les images clés Timestep se trient automatiquement selon leur start_percent. Toute image clé Timestep contenue dans prev_timestep_keyframe qui contient le même start_percent que l'image clé Timestep sera écrasée.
- ? cn_weights : pondérations à appliquer à controlnet pendant que cette image clé Timestep est en vigueur. Doit être compatible avec le réseau de contrôle chargé, ou générera une erreur expliquant quels types de poids sont compatibles. Si Heherit_missing est True, si aucun control_net_weight n'est transmis, tentera de réutiliser les derniers poids utilisés dans la planification d'images clés de pas de temps. Si le nœud Apply Advanced ControlNet a unweight_override, leweight_override sera utilisé pendant l'échantillonnage au lieu de control_net_weight.
- ? latent_keyframe : images clés latentes à appliquer au controlnet pendant que cette image clé Timestep est en vigueur. Si Heherit_missing est True, si aucune latent_keyframe n'est transmise, tentera de réutiliser les derniers poids utilisés dans la planification des images clés du pas de temps. Si le nœud Apply Advanced ControlNet a un latent_kf_override, le latent_lf_override sera utilisé pendant l'échantillonnage au lieu de latent_keyframe.
- ? mask_optional : masques d'attention à appliquer aux réseaux de contrôle ; fondamentalement, décide à quelle partie de l'image le réseau de contrôle s'applique (et la force relative, si le masque n'est pas binaire). Identique à mask_optional sur le nœud Apply Advanced ControlNet, peut appliquer soit un masque à toutes les latentes, soit des masques individuels pour chaque latente. Si Heherit_missing est True, si aucun masque_optionnel n'est transmis, tentera de réutiliser le dernier masque_optionnel utilisé dans la planification des images clés du pas de temps. Il n'est PAS remplacé par mask_optional sur le nœud Apply Advanced ControlNet ; seront utilisés ensemble.
- ? start_percent : pourcentage de pas d'échantillonnage auquel cette image clé Timestep peut être utilisée. Agit comme la « clé » pour l’image clé de pas de temps dans le calendrier d’images clés de pas de temps.
- ? force : force du réseau de contrôle ; multiplie le controlnet par cette valeur, essentiellement, appliquée parallèlement à la force sur le nœud Apply ControlNet. S'il est défini sur 0,0, cela n'aura aucun effet pendant la durée de l'effet de cette image clé Timestep et augmentera la vitesse d'échantillonnage en n'effectuant aucun travail.
- ? null_latent_kf_strength : force à attribuer aux latents qui ne sont pas pris en compte dans les latent_keyframes transmises. N'a aucun effet si aucune latent_keyframes n'est transmise ou si aucun batch_index n'est perdu dans les latent_keyframes pendant l'échantillonnage.
- ? herit_missing : détermine s'il convient de réutiliser les valeurs des images clés Timestep précédentes pour les valeurs facultatives (control_net_weights, latent_keyframe et mask_option) qui ne sont pas incluses dans cette TimestepKeyframe. Pour hériter uniquement d’entrées spécifiques, utilisez les entrées par défaut.
- ? warrant_steps : lorsque 1 ou plus, même si le start_percent d'une image clé de pas de temps en avance sur celle-ci dans le calendrier est plus proche du pourcentage d'échantillonnage actuel, cette image clé de pas de temps sera toujours utilisée pour le nombre d'étapes spécifié avant de passer à l'image clé de pas de temps sélectionnée suivante dans l'étape suivante. Que l'image clé Timestep soit utilisée ou non, ses entrées seront toujours prises en compte à des fins d'héritage_missing.
Sorties
- ? TIMESTEP_KF : l'image clé Timestep créée, qui peut être soit liée à une autre, soit dans une entrée Timestep Keyframe.
Interpolation d’images clés pas à pas
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e794634.png)
Permet de créer une image clé Timestep avec des valeurs de force interpolées dans une plage de pourcentage donnée. (La première image clé générée auragarantie_steps=1, les autres qui suivront aurontgarantie_steps=0).
Entrées
- ? prev_timestep_kf : utilisé pour enchaîner les images clés Timestep pour créer un planning. L'ordre n'a pas d'importance : les images clés Timestep se trient automatiquement selon leur start_percent. Toute image clé Timestep contenue dans prev_timestep_keyframe qui contient le même start_percent que l'image clé Timestep sera écrasée.
- ? cn_weights : pondérations à appliquer à controlnet pendant que cette image clé Timestep est en vigueur. Doit être compatible avec le réseau de contrôle chargé, ou générera une erreur expliquant quels types de poids sont compatibles. Si Heherit_missing est True, si aucun control_net_weight n'est transmis, tentera de réutiliser les derniers poids utilisés dans la planification d'images clés de pas de temps. Si le nœud Apply Advanced ControlNet a unweight_override, leweight_override sera utilisé pendant l'échantillonnage au lieu de control_net_weight.
- ? latent_keyframe : images clés latentes à appliquer au controlnet pendant que cette image clé Timestep est en vigueur. Si Heherit_missing est True, si aucune latent_keyframe n'est transmise, tentera de réutiliser les derniers poids utilisés dans la planification des images clés du pas de temps. Si le nœud Apply Advanced ControlNet a un latent_kf_override, le latent_lf_override sera utilisé pendant l'échantillonnage au lieu de latent_keyframe.
- ? mask_optional : masques d'attention à appliquer aux réseaux de contrôle ; fondamentalement, décide à quelle partie de l'image le réseau de contrôle s'applique (et la force relative, si le masque n'est pas binaire). Identique à mask_optional sur le nœud Apply Advanced ControlNet, peut appliquer soit un masque à toutes les latentes, soit des masques individuels pour chaque latente. Si Heherit_missing est True, si aucun masque_optionnel n'est transmis, tentera de réutiliser le dernier masque_optionnel utilisé dans la planification des images clés du pas de temps. Il n'est PAS remplacé par mask_optional sur le nœud Apply Advanced ControlNet ; seront utilisés ensemble.
- ? start_percent : pourcentage de pas d'échantillonnage auquel la première image clé Timestep générée peut être utilisée.
- ? end_percent : pourcentage de pas d'échantillonnage auquel la dernière image clé Timestep générée peut être utilisée.
- ? Strength_start : force de l'image clé Timestep en début de plage.
- ? Strength_end : force de l'image clé Timestep en fin de plage.
- ? interpolation : la méthode d'interpolation.
- ? intervalles : le nombre d'images clés à générer au total - la première aura son start_percent égal à start_percent, la dernière aura son start_percent égal à end_percent.
- ? null_latent_kf_strength : force à attribuer aux latents qui ne sont pas pris en compte dans les latent_keyframes transmises. N'a aucun effet si aucune latent_keyframes n'est transmise ou si aucun batch_index n'est perdu dans les latent_keyframes pendant l'échantillonnage.
- ? herit_missing : détermine s'il convient de réutiliser les valeurs des images clés Timestep précédentes pour les valeurs facultatives (control_net_weights, latent_keyframe et mask_option) qui ne sont pas incluses dans cette TimestepKeyframe. Pour hériter uniquement d’entrées spécifiques, utilisez les entrées par défaut.
- ? print_keyframes : si True, imprimera les images clés Timestep générées par ce nœud à des fins de débogage.
Sorties
- ? TIMESTEP_KF : l'image clé Timestep créée, qui peut être soit liée à une autre, soit dans une entrée Timestep Keyframe.
Image clé de pas de temps de la liste
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e806435.png)
Permet de créer une image clé Timestep via une liste de flottants, comme avec Batch Value Schedule à partir des nœuds ComfyUI_FizzNodes. (La première image clé générée auragarantie_steps=1, les autres qui suivront aurontgarantie_steps=0).
Entrées
- ? prev_timestep_kf : utilisé pour enchaîner les images clés Timestep pour créer un planning. L'ordre n'a pas d'importance : les images clés Timestep se trient automatiquement selon leur start_percent. Toute image clé Timestep contenue dans prev_timestep_keyframe qui contient le même start_percent que l'image clé Timestep sera écrasée.
- ? cn_weights : pondérations à appliquer à controlnet pendant que cette image clé Timestep est en vigueur. Doit être compatible avec le réseau de contrôle chargé, ou générera une erreur expliquant quels types de poids sont compatibles. Si Heherit_missing est True, si aucun control_net_weight n'est transmis, tentera de réutiliser les derniers poids utilisés dans la planification d'images clés de pas de temps. Si le nœud Apply Advanced ControlNet a unweight_override, leweight_override sera utilisé pendant l'échantillonnage au lieu de control_net_weight.
- ? latent_keyframe : images clés latentes à appliquer au controlnet pendant que cette image clé Timestep est en vigueur. Si Heherit_missing est True, si aucune latent_keyframe n'est transmise, tentera de réutiliser les derniers poids utilisés dans la planification des images clés du pas de temps. Si le nœud Apply Advanced ControlNet a un latent_kf_override, le latent_lf_override sera utilisé pendant l'échantillonnage au lieu de latent_keyframe.
- ? mask_optional : masques d'attention à appliquer aux réseaux de contrôle ; fondamentalement, décide à quelle partie de l'image le réseau de contrôle s'applique (et la force relative, si le masque n'est pas binaire). Identique à mask_optional sur le nœud Apply Advanced ControlNet, peut appliquer soit un masque à toutes les latentes, soit des masques individuels pour chaque latente. Si Heherit_missing est True, si aucun masque_optionnel n'est transmis, tentera de réutiliser le dernier masque_optionnel utilisé dans la planification des images clés du pas de temps. Il n'est PAS remplacé par mask_optional sur le nœud Apply Advanced ControlNet ; seront utilisés ensemble.
- ? float_strengths : une liste de flottants, qui correspondront à la force de chaque Timestep Keyframe ; Le premier sera attribué à start_percent, le dernier sera attribué à end_percent et le reste sera réparti linéairement entre les deux.
- ? start_percent : pourcentage de pas d'échantillonnage auquel la première image clé Timestep générée peut être utilisée.
- ? end_percent : pourcentage de pas d'échantillonnage auquel la dernière image clé Timestep générée peut être utilisée.
- ? null_latent_kf_strength : force à attribuer aux latents qui ne sont pas pris en compte dans les latent_keyframes transmises. N'a aucun effet si aucune latent_keyframes n'est transmise ou si aucun batch_index n'est perdu dans les latent_keyframes pendant l'échantillonnage.
- ? herit_missing : détermine s'il convient de réutiliser les valeurs des images clés Timestep précédentes pour les valeurs facultatives (control_net_weights, latent_keyframe et mask_option) qui ne sont pas incluses dans cette TimestepKeyframe. Pour hériter uniquement d’entrées spécifiques, utilisez les entrées par défaut.
- ? print_keyframes : si True, imprimera les images clés Timestep générées par ce nœud à des fins de débogage.
Sorties
- ? TIMESTEP_KF : l'image clé Timestep créée, qui peut être soit liée à une autre, soit dans une entrée Timestep Keyframe.
Image clé latente
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e888536.png)
Une image clé latente singulière sélectionne la force d'un batch_index spécifique. Si batch_index n'est pas présent lors de l'échantillonnage, cela n'aura tout simplement aucun effet. Peut être chaîné avec n’importe quel autre nœud de type Latent Keyframe pour créer une planification d’images clés latentes.
Entrées
- ? prev_latent_kf : utilisé pour enchaîner les images clés latentes pour créer un planning. Si une Latent Keyframe contenue dans prev_latent_keyframes a le même batch_index que cette Latent Keyframe, elle aura la priorité sur la valeur de ce nœud.
- ? batch_index : index de la latence dans le lot auquel appliquer la force du Controlnet. Agit comme la « clé » pour l’image clé latente dans le calendrier des images clés latentes.
- ? force : force du controlnet à appliquer au latent correspondant.
Sorties
- ? LATENT_KF : l'image clé latente créée, qui peut être liée à une autre ou à une entrée d'image clé latente.
Groupe d'images clés latentes
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e8e5937.png)
Permet de créer des images clés latentes via des index individuels ou des plages de style python.
Entrées
- ? prev_latent_kf : utilisé pour enchaîner les images clés latentes pour créer un planning. Si des images clés latentes contenues dans prev_latent_keyframes ont le même batch_index que cette image clé latente, elles auront la priorité sur la version de ce nœud.
- ? latent_optional : les latents qui devraient être transmises pour l'échantillonnage ; requis uniquement si vous souhaitez utiliser des indices négatifs (seront automatiquement convertis en valeurs réelles).
- ? index_strengths : liste de chaînes d'index ou de plages d'index de style python auxquelles attribuer des forces. Si latent_optional est transmis, peut contenir des indices négatifs ou des plages contenant des nombres négatifs, à la manière de Python. Les différents indices doivent être séparés par des virgules. Les latents individuelles peuvent être spécifiées par
batch_index=strength
, comme 0=0.9
. Les plages peuvent être spécifiées par start_index_inclusive:end_index_exclusive=strength
, comme 0:8=strength
. Des indices négatifs sont possibles lorsque latents_optional a une entrée, avec une chaîne telle que 0,-4=0.25
. - ? print_keyframes : si True, imprimera les images clés latentes générées par ce nœud à des fins de débogage.
Sorties
- ? LATENT_KF : l'image clé latente créée, qui peut être liée à une autre ou à une entrée d'image clé latente.
Interpolation d'images clés latentes
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e94ba38.png)
Permet de créer des images clés latentes avec des valeurs interpolées dans une plage.
Entrées
- ? prev_latent_kf : utilisé pour enchaîner les images clés latentes pour créer un planning. Si des images clés latentes contenues dans prev_latent_keyframes ont le même batch_index que cette image clé latente, elles auront la priorité sur la version de ce nœud.
- ? batch_index_from : batch_index de départ de la plage, inclus.
- ? batch_index_to : fin batch_index de la plage, exclue (plage de style python).
- ? Strength_from : force de départ de l'interpolation.
- ? Strength_to : fin de la force de l'interpolation.
- ? interpolation : la méthode d'interpolation.
- ? print_keyframes : si True, imprimera les images clés latentes générées par ce nœud à des fins de débogage.
Sorties
- ? LATENT_KF : l'image clé latente créée, qui peut être liée à une autre ou à une entrée d'image clé latente.
Image clé latente de la liste
![image](https://images.downcodes.com/uploads/20241125/img_67449a15e9ae339.png)
Permet de créer des images clés latentes via une liste de flottants, comme avec Batch Value Schedule à partir des nœuds ComfyUI_FizzNodes.
Entrées
- ? prev_latent_kf : utilisé pour enchaîner les images clés latentes pour créer un planning. Si des images clés latentes contenues dans prev_latent_keyframes ont le même batch_index que cette image clé latente, elles auront la priorité sur la version de ce nœud.
- ? float_strengths : une liste de flottants, qui correspondront à la force de chaque Latent Keyframe ; le batch_index est l'index de chaque valeur flottante de la liste.
- ? print_keyframes : si True, imprimera les images clés latentes générées par ce nœud à des fins de débogage.
Sorties
- ? LATENT_KF : l'image clé latente créée, qui peut être liée à une autre ou à une entrée d'image clé latente.
Il y a plus de nœuds pour documenter et afficher l'utilisation - je les ajouterai bientôt ! FAIRE