Changer le thème

Cohérence des visages dans ComfyUI : InstantID, FaceID ou ReActor ?

Easton editorial illustration: one gender-neutral faceted 3D avatar face token inside a dark rounded ComfyUI-style node canvas

"Le README de cubiq/ComfyUI_InstantID documente la portée SDXL actuelle, antelopev2 et les chemins des modèles, ainsi que les réglages CFG et les keypoints."

Vous disposez d’une photo de face d’un modèle dont les droits sont réglés et souhaitez créer la même personne dans plusieurs scènes. Ou bien une affiche est déjà terminée et vous voulez seulement remplacer son visage par celui d’un personnage virtuel original. Ces besoins relèvent de deux flux différents : le premier injecte l’identité pendant la génération, le second remplace le visage en post-traitement.

Dans ComfyUI, les trois options courantes sont InstantID, IPAdapter FaceID et ReActor. Leurs noms se ressemblent, mais leurs rôles diffèrent. Le nœud ComfyUI InstantID actuel cible SDXL et cumule le plus de dépendances. FaceID peut fonctionner avec SD1.5 et SDXL, mais son modèle et son LoRA doivent correspondre. ReActor réalise un face swap après la génération.

Commencez par déterminer si l’opération se déroule pendant la génération ou sur une image terminée. Vérifiez ensuite les dépendances, les réglages, les erreurs fréquentes et les limites liées aux contenus et aux licences.

1. Trois méthodes : identité pendant la génération ou face swap après coup

Souhaitez-vous générer plusieurs nouvelles images de la même personne, ou seulement remplacer le visage dans une image existante ? Cette décision fixe la méthode.

MéthodeRôleUsage adaptéEntréeLimites du modèleComplexité des dépendances
InstantIDPréserver l’identité pendant la générationCréer plusieurs images avec le même visageUne référence facialeLe nœud ComfyUI_InstantID actuel cible SDXLÉlevée (InsightFace + onnxruntime + antelopev2 + ControlNet + modèle principal InstantID)
IPAdapter FaceIDPréserver l’identité pendant la générationCréer plusieurs images avec le même visageUne ou plusieurs références facialesSD1.5 + SDXLMoyenne (InsightFace + modèle FaceID + LoRA correspondant)
ReActorFace swap en post-traitementRemplacer seulement le visage d’une image existanteImage cible + visage sourceIndépendant du modèle de base de la générationSelon la version (le cœur 0.7 alpha n’impose plus InsightFace, mais les modèles et licences restent à vérifier)

Règles de choix

  • Générer plusieurs nouvelles images de la même personne → InstantID ou FaceID
  • Remplacer uniquement le visage dans une image terminée → ReActor
  • Partir d’une seule référence faciale → les trois méthodes l’acceptent, mais InstantID et FaceID conviennent mieux à la génération
  • Conserver la pose et la composition d’une image existante tout en changeant le visage → ReActor est plus direct

Vérifier d’abord les limites de licence

InstantID et FaceID utilisent généralement InsightFace pour extraire les caractéristiques du visage. Le code d’InsightFace est sous MIT License, mais ses données d’entraînement et les modèles créés avec ces données sont, par défaut, réservés à la recherche non commerciale. La model card FaceID limite elle aussi ces modèles à la recherche. ReActor se présente comme SFW-friendly et comprend un nudity detector ; son README exige également une utilisation responsable.

Avant tout usage commercial ou toute publication publique, vérifiez séparément le droit à l’image, les licences des poids et les règles de la plateforme. Les flux décrits ici concernent uniquement des contenus autorisés ou détenus par l’utilisateur, des personnages originaux et des tests internes conformes.

2. InstantID : préserver l’identité pendant une génération SDXL

2.1 Installation et chemins des modèles

InstantID comporte plus de dépendances que FaceID ou ReActor. Après l’installation du nœud, les chemins de modèles incorrects sont une source fréquente d’erreur.

Installation :

# 1. Cloner le nœud
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_InstantID.git

# 2. Installer les dépendances
pip install insightface onnxruntime onnxruntime-gpu

Le paquet Python par défaut d’InsightFace 1.0 ne compile plus l’extension C++/Cython optionnelle face3d, ce qui réduit les besoins en compilateur local. Si un ancien environnement ou tutoriel provoque encore une erreur de build, vérifiez la version réellement utilisée et isolez l’environnement avant de conclure que Visual Studio C++ Build Tools est requis par la version actuelle.

ModèleChemin cibleSource
antelopev2ComfyUI/models/insightface/models/antelopev2Modèle InsightFace
Modèle principal InstantIDComfyUI/models/instantidInstantX sur Hugging Face
InstantID ControlNetComfyUI/models/controlnetInstantX sur Hugging Face

Le README actuel de ComfyUI_InstantID indique que le nœud est réservé à SDXL. Pour un flux basé sur SD1.5, utilisez FaceID.

Le dépôt ComfyUI_InstantID est en mode maintenance only depuis le 14 avril 2025. Des correctifs importants peuvent encore être intégrés, mais le mainteneur ne promet plus de développement continu. Consultez le README actuel avant l’installation.

2.2 Flux et réglages

Flux de base :

  1. Charger un checkpoint SDXL
  2. Connecter Apply InstantID et fournir une référence faciale de face
  3. Relier les conditions du modèle InstantID et de ControlNet à la chaîne d’échantillonnage
  4. Générer l’image

La qualité de la référence agit directement sur la ressemblance. Une image nette, de face, sans obstruction et avec un éclairage uniforme est généralement plus fiable. Un profil, un petit visage, une image floue ou une forte occlusion peuvent provoquer un échec de détection ou une ressemblance faible.

SymptômeRéglage
Ressemblance insuffisanteAugmenter progressivement le poids du modèle InstantID ou de ControlNet
Image brûlée ou prompt moins influentRéduire d’abord le poids du modèle InstantID, puis comparer à l’image de référence
CFG trop élevéSuivre le README du nœud et descendre vers 4–5, ou utiliser RescaleCFG

Le flux principal de l’implémentation InstantID en amont ne gère pas plusieurs personnes de référence et utilise le plus grand visage pour les landmarks. ComfyUI_InstantID propose un exemple Multi-ID plus complexe et plus lent, mais il ne faut pas le considérer comme une base simple et stable pour plusieurs personnes.

Fonctions avancées :

  • Advanced InstantID : régler séparément le poids du modèle InstantID et celui de ControlNet
  • Noise injection : réduire l’aspect brûlé et affiner la ressemblance
  • Entrée image_kps : employer les keypoints d’une autre image pour changer la pose et limiter le transfert de la pose de référence

Pour une pose plus stricte, ajoutez ControlNet OpenPose.

3. IPAdapter FaceID : identité avec SD1.5 et SDXL

FaceID est la variante d’IPAdapter spécialisée dans les visages. Elle remplace l’embedding d’image CLIP ordinaire par un face recognition embedding et peut ajouter un LoRA pour renforcer la cohérence d’identité.

3.1 Installation et association modèle-LoRA

Installez la dépendance dans l’environnement Python de ComfyUI :

pip install insightface

Placez les modèles FaceID dans ComfyUI/models/ipadapter et les LoRA correspondants dans ComfyUI/models/loras. Unified Loader FaceID se base sur les noms de fichiers officiels pour l’association automatique ; un fichier renommé peut ne pas être chargé automatiquement.

Modèle FaceIDLoRA correspondantChemins
ip-adapter-faceid_sd15.binip-adapter-faceid_sd15_lora.safetensorsmodels/ipadapter + models/loras
ip-adapter-faceid-plusv2_sd15.binip-adapter-faceid-plusv2_sd15_lora.safetensorsIdentiques
ip-adapter-faceid_sdxl.binip-adapter-faceid_sdxl_lora.safetensorsIdentiques
ip-adapter-faceid-plusv2_sdxl.binip-adapter-faceid-plusv2_sdxl_lora.safetensorsIdentiques

La liste des modèles et leurs noms peuvent évoluer avec les mises à jour du nœud. Avant l’installation, consultez le README de ComfyUI_IPAdapter_plus et associez chaque modèle à son LoRA selon le modèle de base et la version. Un LoRA absent ou mal associé réduit nettement la cohérence d’identité.

Différences entre les variantes :

  • PlusV2 : combine face ID embedding et CLIP image embedding réglable, avec un poids distinct pour face structure
  • Portrait : conçu pour les portraits, sans LoRA ni ControlNet, et capable d’accepter plusieurs images de visage pour améliorer la ressemblance
  • SDXL FaceID et PlusV2-SDXL : la model card les qualifie d’experimental ; ne les présentez pas comme inconditionnellement stables

Le dépôt ComfyUI_IPAdapter_plus est lui aussi en mode maintenance only depuis le 14 avril 2025.

3.2 Flux et réglages

FaceID ne doit pas nécessairement commencer avec un poids de 1.0. Un poids d’identité excessif peut rapprocher le résultat de la référence tout en réduisant l’influence du prompt textuel.

Directions de réglage :

  • Créer une image de référence autour de 0.8, puis augmenter progressivement si la ressemblance reste insuffisante
  • Pour mieux suivre le prompt, changer le weight type dans IPAdapter Advanced ou réduire le poids
  • PlusV2 permet aussi de régler séparément un poids lié à face structure

FaceID et InstantID ajoutent tous deux une condition d’identité pendant la génération. FaceID couvre SD1.5 et SDXL, tandis que le nœud ComfyUI_InstantID actuel cible SDXL. La mémoire requise dépend du modèle de base, de la résolution, du GPU et de la version du nœud ; une valeur fixe serait trompeuse.

4. ReActor : face swap SFW en post-traitement

ReActor intervient à une étape différente des deux premières méthodes. Il ne participe pas à la génération par diffusion, mais échange un visage dans une image déjà générée ou existante.

4.1 Installation et évolution des dépendances

Le nouveau cœur de ReActor 0.7.0 alpha annonce qu’InsightFace et C++ Build Tools ne sont plus requis. Toutefois, la table des modèles et la section licence du README actuel citent encore buffalo_l, inswapper_128.onnx et d’autres modèles. Vérifiez la version utilisée avant de décider des étapes d’installation ou des droits d’usage.

ModèleChemin dans le README actuel
buffalo_lComfyUI/models/insightface/models/buffalo_l
inswapper_128ComfyUI/models/insightface
reswapperComfyUI/models/reswapper
hyperswapComfyUI/models/hyperswap
Modèles Face RestoreComfyUI/models/facerestore_models

Les anciens tutoriels présentent souvent InsightFace et C++ Build Tools comme des prérequis fixes. En cas de contradiction, identifiez votre version de ReActor et suivez son README au lieu de mélanger d’anciennes dépendances avec le cœur actuel.

ReActor comprend un nudity detector. Son README demande d’obtenir le consentement de la personne lorsqu’un visage réel est utilisé et de signaler clairement la nature synthétique du contenu lors d’une publication. Les droits commerciaux de modèles comme buffalo_l et inswapper_128 restent à vérifier séparément.

4.2 Flux

Flux de base pour le face swap :

  1. Connecter l’image à traiter à input_image et le visage autorisé à source_image
  2. Commencer avec une force prudente dans ReActorSetWeight
  3. Facultatif : contrôler la ressemblance après l’échange avec Face Similarity
  4. Facultatif : réparer les contours et les détails avec Face Restoration
  5. Facultatif : enregistrer un face model et recharger directement le même embedding de visage
FonctionRôle
ReActorSetWeightRégler la force du swap de 0% à 100% selon les pas du nœud ; une force trop élevée peut produire un aspect plastique ou des contours artificiels
Face SimilarityVérifier la ressemblance après l’échange
Face RestorationRéparer contours et détails après le swap ; une force excessive peut aussi produire un aspect artificiel
Face ModelEnregistrer ou charger un embedding de visage pour réutiliser le même visage

ReActor ne régénère ni la composition, ni les vêtements, ni la pose. Si l’objectif est de préserver l’image terminée et de ne traiter que la zone du visage, il est plus direct qu’InstantID ou FaceID.

5. Qualité de la référence et erreurs fréquentes

5.1 Liste de contrôle de l’image de référence

La qualité de la référence compte souvent plus qu’une hausse continue du poids. Une image nette, de face, sans obstruction et uniformément éclairée est plus facile à faire correspondre. Profil, flou, petit visage ou forte occlusion restent difficiles à compenser, même avec des poids élevés.

Ordre de priorité :

  1. Face > profil ou angle oblique
  2. Net > flou
  3. Sans obstruction > lunettes, masque ou cheveux devant le visage
  4. Éclairage uniforme > ombre forte ou contre-jour

Ces principes valent pour InstantID, FaceID et ReActor. Si la détection échoue, recadrez le visage ou remplacez la référence avant de pousser tous les poids au maximum.

5.2 Tableau des pannes courantes

ProblèmeCause probableSolution
Modèle introuvable (antelopev2 / buffalo_l / modèle principal InstantID)Mauvais chemin ou modèle absentComparer models/insightface/models, models/instantid et les autres chemins au README actuel du nœud
Échec de détection (no face detected)Profil, petit visage, flou ou obstructionUtiliser une référence nette, de face et non masquée, puis recadrer si nécessaire
Le visage ressemble, mais la pose ou l’expression dériveLa condition faciale transmet aussi certains traits structurelsContrôler la pose avec ControlNet ou passer à ReActor pour une image déjà terminée
Ressemblance faibleLoRA FaceID absent, poids inadapté ou référence médiocreVérifier l’association modèle-LoRA, établir une base autour de 0.8, puis modifier une seule variable
Contours artificiels ou visage en plastiqueFace swap ou Face Restoration trop fortRéduire les forces de swap et de restauration ; vérifier taille, angle et éclairage du visage cible
Échec d’installation d’une dépendanceMélange d’anciens tutoriels, de vieux nœuds et de l’environnement Python actuelVérifier les versions du nœud et d’InsightFace, puis installer dans un environnement isolé selon le README actuel

Ordre de diagnostic :

  • La détection échoue → examiner d’abord la qualité de la référence
  • La ressemblance est faible → vérifier d’abord les modèles, les LoRA et les chemins
  • La pose dérive → choisir entre condition d’identité pendant la génération, post-traitement ou ajout de ControlNet

6. Combiner ControlNet, Kontext et LoRA

Conserver le même visage ne fixe ni la pose, ni le corps, ni les vêtements, ni la composition. Quand InstantID ou FaceID fournit une condition d’identité, la pose, l’expression ou la coiffure de la référence peuvent encore influencer le résultat.

Combinaisons utiles :

  • InstantID ou FaceID + ControlNet OpenPose → la condition faciale gère l’identité, ControlNet gère le corps et la pose
  • FaceID + IPAdapter standard → FaceID stabilise le visage et IPAdapter contrôle le style ou la composition ; commencez avec des poids prudents pour les deux
  • ReActor + agrandissement et réparation → générer la cible, échanger le visage, puis utiliser face restore ou un inpaint local si nécessaire
  • Kontext → adapté aux changements de fond, de tenue ou de scène sur la même image d’entrée, mais pas au verrouillage spécialisé de l’identité faciale
  • LoRA → adapté à un personnage original ou un avatar de marque réutilisé dans le temps avec un jeu de données d’entraînement

Lorsque la pose doit être exacte, fournissez la pose cible à ControlNet OpenPose. InstantID ou FaceID peut alors gérer le visage, et ControlNet le corps et la pose. Pour préserver une composition terminée et ne changer que le visage, ReActor est plus direct.

À lire aussi :

7. Limites de conformité et de licence

Les licences et les droits sur les contenus source sont des limites strictes. Un flux techniquement fonctionnel ne signifie pas que le contenu, le modèle et le mode de publication sont tous autorisés.

Séparer la licence du code et celle des modèles InsightFace

Le code d’InsightFace utilise la MIT License et permet les usages académiques et commerciaux. Ses données d’entraînement et les modèles préentraînés dérivés de ces données sont toutefois, par défaut, réservés à la recherche non commerciale. Le README InsightFace actuel fournit aussi des contacts de licence distincts pour la série inswapper et les modèles ouverts de reconnaissance faciale.

La model card FaceID indique également qu’IP-Adapter-FaceID est destiné à la recherche, car il dépend des modèles préentraînés d’InsightFace. La licence du code d’un nœud n’accorde pas automatiquement un droit commercial sur chaque poids.

Responsabilité et signalement avec ReActor

La version actuelle de ReActor se présente comme SFW-friendly et comprend un nudity detector. Son README exige le respect du droit local, le consentement lors de l’utilisation d’un visage réel et un signalement clair du face swap ou de la synthèse par IA lors d’une publication publique.

Limites sur les contenus source

Les flux décrits ici concernent uniquement :

  • Des photos de modèles avec autorisation explicite pour le visage et l’usage prévu
  • Vos propres contenus, que vous avez le droit de traiter
  • Des personnages virtuels originaux ne représentant pas une personne réelle
  • Des tests internes conformes qui ne sont pas publiés

Avant un usage commercial ou public, vérifiez séparément le droit à l’image, la portée de la licence du modèle et les règles de la plateforme. Si l’un de ces points reste incertain, ne publiez ni ne commercialisez le résultat.

Résumé et prochaines étapes

Le choix se résume ainsi :

  • Identité pendant la génération → InstantID (nœud ComfyUI actuel pour SDXL) ou FaceID (SD1.5 + SDXL)
  • Face swap en post-traitement → ReActor
  • Vérifier la référence, les chemins et les versions avant d’augmenter aveuglément les poids
  • Une licence de code ne rend pas tous les modèles préentraînés utilisables commercialement ; un visage réel exige aussi une autorisation

InstantID convient aux flux SDXL et comporte davantage de dépendances, mais sépare les réglages d’identité et de keypoints. FaceID prend en charge plus de modèles de base, à condition d’associer correctement modèle et LoRA. ReActor ne participe pas à la diffusion et convient au traitement du visage dans une image existante.

Pour continuer :

Choisir et régler une méthode de cohérence faciale dans ComfyUI

Choisissez selon l’étape du flux, vérifiez la référence et les modèles, puis ne modifiez qu’un poids à la fois.

  1. 1

    Step 1: Identifier l’étape du flux

    Choisissez InstantID ou IPAdapter FaceID pour créer de nouvelles images depuis un visage. Utilisez ReActor lorsqu’une image existante nécessite seulement un remplacement de visage.
  2. 2

    Step 2: Préparer une référence adaptée et autorisée

    Privilégiez une image nette, de face, sans obstruction, avec un éclairage uniforme et un visage assez grand, puis confirmez vos droits d’utilisation.
  3. 3

    Step 3: Installer les modèles et dépendances de la méthode

    Pour InstantID, vérifiez antelopev2, le modèle principal et ControlNet. Pour FaceID, vérifiez insightface, le modèle FaceID et le LoRA associé. Installez ReActor selon le README de la version utilisée.
  4. 4

    Step 4: Créer une image de référence

    Produisez un premier résultat avec les valeurs par défaut ou des poids prudents. Ne changez pas simultanément la pose, l’expression, la coiffure, le modèle de base et plusieurs poids d’identité.
  5. 5

    Step 5: Régler une cause à la fois

    Si la ressemblance est faible, augmentez le poids d’identité ou corrigez l’association des modèles. Si le prompt perd de l’influence, réduisez le poids Adapter. Si le visage paraît artificiel, baissez les forces de swap et de restauration.
  6. 6

    Step 6: Ajouter la pose ou un personnage durable

    Ajoutez ControlNet si la pose doit être précise. Pour un personnage original réutilisé dans le temps, évaluez l’entraînement d’un LoRA au lieu de confier tous les contrôles à une seule photo.

FAQ

Faut-il utiliser InstantID ou ReActor pour garder la même personne dans ComfyUI ?
Utilisez InstantID ou IPAdapter FaceID pour générer de nouvelles images depuis un visage de référence. Choisissez ReActor quand l’image est déjà terminée et que seul le visage doit être remplacé.
Pourquoi IPAdapter FaceID a-t-il aussi besoin d’un LoRA ?
FaceID fournit la condition d’identité par un embedding de reconnaissance faciale. La plupart des modèles FaceID demandent aussi un LoRA correspondant pour renforcer la cohérence, avec une association correcte au modèle de base et à la version.
InstantID dans ComfyUI fonctionne-t-il uniquement avec SDXL ?
Le README actuel de cubiq/ComfyUI_InstantID indique que ce nœud vise SDXL et requiert antelopev2, le modèle principal InstantID et un modèle ControlNet. Pour une autre implémentation ou une version future, consultez sa propre documentation.
ReActor 0.7 exige-t-il encore InsightFace et C++ Build Tools ?
Le nouveau cœur de ReActor 0.7 alpha annonce ne plus exiger InsightFace ni C++ Build Tools. La liste des modèles et la section licence citent toujours buffalo_l, inswapper_128 et d’autres modèles ; vérifiez donc le README actuel pour l’installation et l’usage commercial.
Le face swap avec ComfyUI est-il utilisable commercialement ?
La licence du code du nœud ne suffit pas. Il faut aussi vérifier le droit à l’image, le contexte d’utilisation, les règles de la plateforme et les licences de modèles préentraînés comme InsightFace, inswapper et FaceID. Ne publiez pas commercialement si une autorisation reste incertaine.
Pourquoi le visage remplacé paraît-il en plastique ?
La force du face swap ou de la restauration peut être excessive, le visage cible trop petit, ou les angles et l’éclairage mal assortis. Réduisez la restauration et choisissez une référence autorisée plus nette avec un angle proche.

13 min de lecture · Publié le: 21 août 2026 · Mis à jour le: 21 août 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog