Skip to content

Latest commit

 

History

History
352 lines (259 loc) · 18.8 KB

File metadata and controls

352 lines (259 loc) · 18.8 KB

Version Last Commit License


ComfyUI LoRA Pipeline

Wrappers de conditionnement LoRA basés sur la zone et nœuds de planification LoRA pour ComfyUI.


Table des matières


Caractéristiques

  • Pipeline de conditionnement basé sur la zone pour les invites multi-sujets et multi-régions.
  • Contrôle de force LoRA planifié à un nœud avec une sortie d'aperçu de courbe.
  • Pour une composition multi-sujets cohérente dans plusieurs domaines, ControlNet + OpenPose est fortement recommandé via comfyui-openpose-studio.
  • Sans ControlNet/OpenPose, la composition multi-sujets et multi-zones est souvent incohérente et peut nécessiter de nombreuses tentatives.
  • Python uniquement : aucune dépendance JavaScript ou frontend requise.

Installation

Exigences

  • ComfyUI (version récente)
  • Python3.10+
  • Dépendances facultatives par nœud : matplotlib

Étapes

  1. Clonez ce référentiel dans ComfyUI/custom_nodes/.
  2. Redémarrez ComfyUI.
  3. Confirmez que les nœuds apparaissent sous LoRA Pipeline/.

Configuration recommandée (multi-zones / multi-sujets)

  • Utilisez ControlNet OpenPose (recommandé) : comfyui-openpose-studio.
  • Gardez l’invite globale minimale et générale.
  • Gardez global_strength bas (règle générale : en dessous de 0.5).
  • Équilibrez la force par zone, la force global_strength et la force LoRA ; ne maximisez pas toutes les forces.
  • Exemples de valeurs de référence qui ont bien fonctionné : forces de zone autour de 0.75, forces de LoRA autour de 0.90.

Nœuds

Conditioning Pipeline (Combine) Conditioning Pipeline (Set Area) Load LoRA (Scheduled)
Conditioning Pipeline (Combine) Conditioning Pipeline (Set Area) Load LoRA (Scheduled)

Conditioning Pipeline (Set Area)

Définissez une entrée conditionnée par zone à la fois. Ce nœud définit une région rectangulaire avec une largeur, une hauteur, x et y, puis applique une invite et une force de conditionnement dédiées à cette région dans le cadre d'un pipeline de conditionnement en chaîne.

En un coup d'oeil :

  • Utilisez une instance de nœud par invite de région/sujet.
  • Chaînez plusieurs instances pour créer un pipeline de conditionnement régional.
  • Permet un contrôle multi-sujets propre avant la combinaison finale.

Entrée :

  • conditioning (CONDITIONING, obligatoire)
  • width, height, x, y (FLOAT, normalisé 0.0-1.0)
  • strength (FLOAT, par défaut 1.0)
  • pipeline_in (CONDITIONING_PIPELINE, facultatif)

Sorties :

  • pipeline_out (CONDITIONING_PIPELINE)

Remarques sur le comportement :

  • Crée un nouveau pipeline si pipeline_in n'est pas connecté.
  • Ajoute une nouvelle entrée régionale lorsque pipeline_in est connecté.
  • Maintient les entrées ordonnées afin que vous puissiez créer des piles régionales prévisibles.
  • Des intensités de zone inférieures améliorent souvent la qualité globale de l’image, mais réduisent l’autorité de contrôle par zone.
  • Équilibrez la force de la zone avec global_strength et la force LoRA dans Create Hook Lora.

Erreurs courantes :

  • Fournir des coordonnées de pixels au lieu de valeurs 0.0-1.0 normalisées.
  • Régler width/height près de 0 et attendre un effet visible.
  • Oublier de passer le pipeline final dans Conditioning Pipeline (Combine).

Conditioning Pipeline (Combine)

Combinez le conditionnement global positif/négatif avec le pipeline régional pour obtenir des résultats adaptés à la région. Avec Set Area, il s'agit du chemin principal pour les multi-LoRA et les conditionnements séparés par sujet/zone.

En un coup d'oeil :

  • Convertit votre pipeline régional en résultats finaux positifs/négatifs.
  • Conserve le contexte d'invite global tout en ajoutant un contrôle régional local.

Entrée :

  • global_positive (CONDITIONING, obligatoire)
  • global_negative (CONDITIONING, obligatoire)
  • pipeline (CONDITIONING_PIPELINE, obligatoire)
  • global_strength (FLOAT, par défaut 0.3)

Sorties :

  • positive_out (CONDITIONING)
  • negative_out (CONDITIONING)
  • areas_out (CONDITIONING_AREAS)

Détails sur areas_out :

areas_out expose la liste des régions de zone configurées sous forme de sortie de données structurées. Chaque entrée contient les coordonnées normalisées (x, y, width, height) et strength définies dans le pipeline via Conditioning Pipeline (Set Area). Connectez areas_out à ComfyUI-OpenPose-Studio pour refléter automatiquement vos zones de conditionnement dans l'éditeur OpenPose — le placement des poses s'alignera sur les régions exactes que vous avez conditionnées. Cette sortie peut également être consommée par toute autre extension ou nœud acceptant des métadonnées de zone pour la génération de masques ou le traitement en aval sensible aux régions.

Remarques sur le comportement :

  • Si le pipeline est vide/invalide, les sorties reviennent aux entrées globales et areas_out est une liste vide.
  • Applique les entrées régionales, puis une passe de combinaison par défaut pour les régions non couvertes.
  • global_strength contrôle la mesure dans laquelle le contexte mondial entre en concurrence avec les zones locales.
  • Pousser global_strength trop haut peut réduire l'influence du conditionnement par zone et avoir un impact négatif sur la qualité de l'image.
  • Les bons résultats proviennent généralement d'un équilibre entre la force globale, la force par zone et la force LoRA plutôt que de maximiser toutes les valeurs.

Erreurs courantes :

  • Nourrir un seul flux de conditionnement au lieu d’un flux positif et négatif.
  • Surconduite de global_strength et effacement des détails de la zone.
  • Construire les entrées de la zone mais en oubliant de connecter les sorties combinées au chemin de votre échantillonneur.

ScheduledLoRALoader

Appliquez un LoRA avec une force constante ou une courbe programmée au fil de la progression de la diffusion, dans un nœud propre.

En un coup d'oeil :

  • Remplace les chaînes désordonnées de plusieurs nœuds natifs LoRA/control.
  • Conserve le timing, l'interpolation et l'aperçu ensemble.
  • Câblage graphique plus propre pour le comportement temporel LoRA.

Entrée :

  • model (MODEL, obligatoire)
  • clip (CLIP, obligatoire)
  • lora_name (STRING, obligatoire)
  • strength_start, strength_end (FLOAT)
  • interpolation (STRING : linear, ease_in, ease_out, ease_in_out)
  • start_percent, end_percent (FLOAT, 0.0-1.0)
  • keyframes_count (INT, par défaut 4)
  • apply_to_conds (BOOLEAN, facultatif)

Sorties :

  • model (MODEL)
  • clip (CLIP)
  • curve_preview (IMAGE)

Remarques sur le comportement :

  • Si lora_name est None, le modèle/clip est transmis et l'aperçu est toujours rendu.
  • Si les forces de début et de fin correspondent, elle se comporte comme une application LoRA constante.
  • L'aperçu des courbes permet de vérifier rapidement le timing avant les rendus complets.

Erreurs courantes :

  • Oublier matplotlib lors de l'utilisation de curve_preview.
  • Utilisation d'une fenêtre de planification qui ne correspond pas à l'intention de synchronisation de l'échantillonneur.
  • On s'attend à ce que ce nœud génère directement CONDITIONING.

Dépendances facultatives

Installez uniquement ce dont vous avez besoin, dans le même environnement Python utilisé par ComfyUI.

  • Aperçu de la courbe ScheduledLoRALoader : python -m pip install matplotlib

Exemple de workflow multi-zones

Flux de travail complet

Vous pouvez glisser-déposer cette image de flux de travail dans ComfyUI pour importer/charger le graphique complet.

Configuration de la zone 1

Zone 1 conditionnement

  • Utilisez Create Hook Lora natif pour charger un LoRA et définir l'invite/le conditionnement de zone pour la zone 1.
  • Connectez ce conditionnement à Conditioning Pipeline (Set Area) et définissez width, height, x, y et strength pour cette région.

Configuration de la zone 2

Conditionnement de la zone 2

  • Répétez exactement le même schéma : un autre Create Hook Lora + un autre Conditioning Pipeline (Set Area).
  • Vous pouvez continuer à répéter ce modèle pour des zones supplémentaires.

Enchaînement des pipelines et combinaison

Conditioning Combine

  • Chaînez pipeline_out de la zone 1 vers la zone 2 (entrées de pipeline concaténées).
  • Envoyez pipeline_out de la dernière zone vers Conditioning Pipeline (Combine), qui fusionne le pipeline de zone avec le conditionnement global.
  • Acheminez la sortie combinée directement vers KSampler ou vers ControlNet ; dans cet exemple, il est acheminé vers ControlNet.

OpenPose / ControlNet conseils

  • OpenPose/ControlNet est facultatif en général, mais pour ce flux de travail de composition multi-sujets et multi-zones spécifique, il est fortement recommandé pour une composition cohérente.
  • Voir comfyui-openpose-studio du même auteur (dépôt plus récent).

Emplacement global Styler Pipeline

Placement global Styler Pipeline avec conditionnement de zone + ControlNet

Le style global signifie appliquer Styler Pipeline une fois à l'image entière, en plus (ou à la place) du conditionnement par zone.

  • Règle générale : connectez Styler Pipeline avant KSampler.
  • Lorsque vous utilisez ControlNet, Styler Pipeline peut être connecté soit avant d'appliquer ControlNet, soit après avoir appliqué ControlNet.
  • En pratique, le résultat est généralement équivalent, alors choisissez l'emplacement le plus pratique dans votre graphique.

global_strength compromis

  • Augmenter trop global_strength réduit l’influence relative des conditionnements par zone et peut affaiblir l’identité LoRA/style par zone.
  • Une résistance globale plus élevée peut également avoir un impact négatif sur la qualité de l’image.
  • Gardez global_strength bas et gardez l'invite globale minimale/générale.
  • Règle générale : utilisez des valeurs inférieures à 0.5 en général (testées jusqu'à 0.5) et évitez de vous fier à un conditionnement global au-delà des conseils généraux.
  • Réduire la force de LoRA a tendance à réduire l'identité de LoRA ou la fidélité du personnage, tandis que réduire la force de la zone a tendance à réduire le contrôle par zone.
  • Il n'est pas recommandé de tout maximiser, car des forces combinées élevées peuvent sacrifier la qualité de l'image. Cela est particulièrement vrai lorsque vous mélangez des LoRA de différents auteurs, ce qui peut produire une qualité incohérente.
  • Règle générale pour les LoRA à plusieurs caractères : lorsque cela est possible, utilisez les LoRA du même auteur ou une approche de formation similaire pour des résultats combinés plus cohérents.

Galerie

Aperçu Description
conditioning_pipeline_area Pipeline de conditionnement — Zones multiples avec ControlNet OpenPose

Démontre plusieurs zones verticales avec plusieurs LoRA sans saignement LoRA, en utilisant ControlNet OpenPose.

Nécessite comfyui-openpose-studio.
conditioning_pipeline_styled Pipeline de conditionnement — Zones multiples avec ControlNet et style

Démontre plusieurs zones et plusieurs LoRA avec un style par zone appliqué à chaque région indépendamment.

Nécessite comfyui-openpose-studio et comfyui-styler-pipeline.

Ce flux de travail utilise style par zone, ce qui signifie que chaque zone a ses propres styles configurés séparément. Le style global est également possible en connectant le nœud Styler juste avant ControlNet.

Consultez cet article pour un workflow complet combinant plusieurs zones de conditioning, OpenPose, ControlNet et Styler utilisés simultanément.


Financement et soutien

Pourquoi votre soutien est important

Ce plugin est développé et maintenu de manière indépendante, avec l'utilisation régulière d'agents IA payants pour accélérer le débogage, les tests et les améliorations de la qualité de vie. Si vous le trouvez utile, le soutien financier contribue à maintenir le développement de manière régulière.

Votre contribution aide :

  • Financez les outils d’IA pour des correctifs plus rapides et de nouvelles fonctionnalités
  • Couvrir les travaux de maintenance et de compatibilité en cours sur les mises à jour ComfyUI
  • Empêcher les ralentissements de développement lorsque les limites d'utilisation sont atteintes

Tip

Vous ne faites pas de don ? Une star de GitHub ⭐ aide toujours beaucoup en améliorant la visibilité et en aidant davantage d'utilisateurs

💙 Soutenez ce projet

USDC (Arbitrum uniquement ⚠️)

USDC Badge

Afficher l'adresse

Vous préférez numériser ? Afficher les codes QR
Ko-fi
Ko-fi QR Code
PayPal
PayPal QR Code
USDC (Arbitrum) ⚠️
USDC (Arbitrum) QR Code

Afficher l'adresse de USDC
0xe36a336fC6cc9Daae657b4A380dA492AB9601e73

[!WARNING] Envoyez USDC uniquement sur Arbitrum One. Les transferts envoyés sur tout autre réseau n’arriveront pas et pourront être définitivement perdus.

Licence

Licence MIT - voir LICENSE pour le texte intégral.


Entretenu par : andreszs Statut : Développement actif