Qu'est-ce que PuLID ?
PuLID (Pure and Lightning ID customization) est une nouvelle méthode pour la personnalisation d'identité (ID) sans réglage dans les modèles de génération d'images à partir de texte. Elle vise à intégrer une identité spécifique (par exemple, le visage d'une personne) dans un modèle pré-entraîné de texte-vers-image sans perturber les capacités originales du modèle. Cela permet de générer des images de la personne spécifique tout en pouvant modifier les attributs, les styles, les arrière-plans, etc. à l'aide de prompts textuels.
PuLID intègre deux composants clés :
- Une branche "Lightning T2I" qui génère rapidement des images de haute qualité conditionnées sur l'ID en quelques étapes de débruitage, parallèlement à la branche de diffusion standard. Cela permet de calculer une perte d'ID précise pour améliorer la fidélité du visage généré.
- Des pertes d'alignement contrastif entre les chemins Lightning T2I avec et sans conditionnement d'ID. Cela indique au modèle comment intégrer les informations d'ID sans contaminer les capacités originales de suivi des prompts et de génération d'images du modèle.
L'architecture de PuLID se compose d'une branche de formation à la diffusion conventionnelle et de la nouvelle branche Lightning T2I :
- Dans la branche de diffusion, PuLID suit le processus standard de formation à la diffusion du débruitage itératif. La condition d'ID est recadrée à partir de l'image d'entraînement cible.
- La branche Lightning T2I tire parti des méthodes d'échantillonnage rapide récentes pour générer une image de haute qualité conditionnée sur le prompt d'ID en seulement 4 étapes de débruitage, à partir d'un bruit pur.
- Dans la branche Lightning T2I, deux chemins sont construits - l'un conditionné uniquement sur le prompt textuel, l'autre conditionné à la fois sur l'ID et le prompt textuel. Les caractéristiques UNET de ces chemins sont alignées à l'aide de pertes contrastives :
- Une perte d'alignement sémantique garantit que la réponse du modèle au prompt textuel est similaire avec et sans conditionnement d'ID. Cela préserve la capacité originale du modèle à suivre les prompts.
- Une perte d'alignement de la mise en page maintient la cohérence de la disposition de l'image générée avant et après l'insertion de l'ID.
- La branche Lightning T2I permet de calculer une perte d'ID précise entre l'intégration du visage généré et l'intégration de l'ID réel, car elle produit un visage de sortie propre et débruité. Cela améliore la fidélité de l'ID généré.
L'utilisation du workflow ComfyUI PuLID pour appliquer la personnalisation d'ID à un modèle implique plusieurs paramètres clés dans le nœud "Apply PuLID" :
Entrées requises pour "Apply PuLID" :
- model: Le modèle de base de diffusion de texte-vers-image à personnaliser avec l'ID spécifique. Il s'agit généralement d'un modèle pré-entraîné comme Stable Diffusion.
- pulid: Les poids du modèle PuLID chargés, qui définissent comment les informations d'ID sont insérées dans le modèle de base. Différents fichiers de poids PuLID peuvent être entraînés pour privilégier soit la fidélité de l'ID, soit la préservation du style de génération original du modèle.
- eva_clip: Le modèle Eva-CLIP chargé pour encoder les caractéristiques faciales à partir de la ou des images de référence de l'ID. Eva-CLIP produit une intégration significative des caractéristiques faciales.
- face_analysis: Le modèle InsightFace chargé pour reconnaître et recadrer le visage dans la ou les images de référence de l'ID. Cela garantit que seules les caractéristiques faciales pertinentes sont encodées.
- image: L'image ou les images de référence représentant l'ID spécifique à insérer dans le modèle. Plusieurs images de la même identité peuvent être fournies pour améliorer l'intégration de l'ID.
- method: Sélectionne la méthode d'insertion d'ID, avec les options "fidelity", "style" et "neutral". "fidelity" donne la priorité à la ressemblance maximale avec la référence d'ID même si la qualité de génération se dégrade. "style" se concentre sur la préservation des capacités de génération originales du modèle avec un ID de moindre fidélité. "neutral" équilibre les deux.
- weight: Contrôle la force de l'insertion de l'ID, de 0 (aucun effet) à 5 (extrêmement fort). La valeur par défaut est 1. Un poids plus élevé améliore la fidélité de l'ID mais risque de remplacer la génération originale du modèle.
- start_at: L'étape de débruitage (en pourcentage de 0 à 1) pour commencer à appliquer la personnalisation d'ID PuLID. La valeur par défaut est 0, en commençant l'insertion de l'ID dès la première étape de débruitage. Peut être augmenté pour commencer l'insertion de l'ID plus tard dans le processus de débruitage.
- end_at: L'étape de débruitage (en pourcentage de 0 à 1) pour arrêter d'appliquer la personnalisation d'ID PuLID. La valeur par défaut est 1, appliquant l'insertion de l'ID jusqu'à la fin du débruitage. Peut être réduit pour arrêter l'insertion de l'ID avant les dernières étapes de débruitage.
Entrées optionnelles pour "Apply PuLID" :
- attn_mask: Un masque en niveaux de gris optionnel pour contrôler spatialement où la personnalisation d'ID est appliquée. Les zones blanches du masque reçoivent l'effet complet d'insertion de l'ID, les zones noires ne sont pas affectées, les zones grises reçoivent un effet partiel. Utile pour localiser l'ID uniquement dans la région du visage.
Sorties de "Apply PuLID" :
- MODEL: Le modèle d'entrée avec la personnalisation d'ID PuLID appliquée. Ce modèle personnalisé peut être utilisé dans d'autres nœuds ComfyUI pour la génération d'images. Les images générées représenteront l'ID tout en étant toujours contrôlables via un prompt.
L'ajustement de ces paramètres permet d'affiner l'insertion d'ID PuLID pour atteindre l'équilibre souhaité entre la fidélité de l'ID et la qualité de génération. En général, un poids de 1 avec la méthode "neutral" fournit un point de départ fiable, qui peut ensuite être ajusté en fonction des résultats. Les paramètres start_at et end_at offrent un contrôle supplémentaire sur le moment où l'ID prend effet dans le débruitage, avec la possibilité de localiser l'effet via un attn_mask.
Pour plus d'informations, veuillez visiter