Rééclairer n'importe quelle photo avec IC-Light dans ComfyUI : prompts, masques de lumière et transfert de détails

Changez l'éclairage d'un portrait, d'une photo de groupe ou d'un paysage avec IC-Light v1 et SD 1.5 dans ComfyUI. Construisez le workflow, conservez le visage avec Detail Transfer, orientez la lumière avec des masques et maîtrisez les résultats brûlés.

Anton Tenitsky13 octobre 20268 min de lectureVersion vidéo plus bas

Ce guide a été traduit de l'anglais par IA et peut contenir des erreurs. Lire l'original.

ComfyUI avec un prompt de lumière du jour et des versions rééclairées, chaudes et ensoleillées, d'un portrait de famille dans la file

IC-Light rééclaire une photo à partir d’un prompt de texte ou d’un masque de lumière. Il fait plus que déplacer la lumière : il fait aussi un très beau travail de retouche, proche du niveau professionnel, et vous pouvez lui donner n’importe quelle photo approximative de vous, de votre famille ou d’un paysage. Il tourne dans ComfyUI sur presque n’importe quel portable gaming, à la maison, gratuitement, sans envoyer vos photos nulle part.

IC-Light est de lllyasviel, l’auteur de ControlNet (IC-Light sur GitHub). Il existe aussi un IC-Light v2, qui donne de meilleurs résultats, mais quand j’ai fait ceci, il n’était disponible que comme service payant et non commercial sur son propre site, pas dans ComfyUI. Ici, j’utilise la v1.

En bref

  • Nodes : ComfyUI-IC-Light (Kijai), KJNodes, Essentials, rgthree. Modèle : iclight_sd15_fc.
  • Graphe : checkpoint → Load And Apply IC-Light → KSampler ; prompts et VAE → IC-Light Conditioning → KSampler ; votre photo, redimensionnée et encodée par le VAE, comme premier plan.
  • Décrivez la lumière dans le prompt : « daylight », « foggy morning », « neon light », « spotlight ».
  • Garder le visage : Detail Transfer depuis l’image d’origine.
  • Les masques de lumière remplacent le latent vide ; adoucissez-les sinon l’image brûle.

Nouveau sur ComfyUI ? Commencez par les bases de ComfyUI. Le workflow et mes masques de lumière sont gratuits sur mon Patreon.

Installation

  1. Manager → Custom Nodes Manager, cherchez IC-Light. Il y a deux packs, celui de Kijai et IC-Light Native de huchenlei. Les deux sont utiles ; j’installe les deux, et j’utilise celui de Kijai ici.
  2. Installez aussi KJNodes (les nodes utilitaires de Kijai). Redémarrez et rechargez la page.
  3. Manager → Model Manager, cherchez IC-Light. Il y a trois modèles ; il ne vous en faut qu’un :
    • FC (foreground conditioned) : celui que j’utilise.
    • FBC (premier plan et arrière-plan).
    • FCON : d’après la documentation, légèrement moins bon que FC.
  4. Après le téléchargement, actualisez simplement la page (Ctrl+R) ; pas besoin de redémarrer.

Construire le workflow

Partez du workflow par défaut et passez le checkpoint à epiCPhotoGasm. Renommez les prompts « Positive » et « Negative », et colorez-les en vert et en rouge.

  1. Load And Apply IC-Light : le modèle du checkpoint passe par lui vers le KSampler. Il récupère automatiquement le modèle FC.
  2. IC-Light Conditioning : connectez le prompt positif, le prompt négatif et le VAE ; ses sorties positive et negative vont au KSampler.
  3. Le premier plan : Load Image avec votre photo → Image Resize (Essentials) → VAE Encode → l’entrée foreground du conditioning.
Le node Load And Apply IC-Light avec le modèle iclight_sd15_fc et le node IC-Light Conditioning avec les entrées positive, negative, vae, foreground et opt_background et un multiplicateur de 0,182
Les deux nodes IC-Light. Le modèle passe par l'un ; les prompts, le VAE et la photo par l'autre.

Le node de conditioning a aussi une entrée opt_background. J’ai essayé des images d’arrière-plan et elles n’ont jamais été belles, j’ai donc arrêté ; décrivez plutôt l’arrière-plan dans le prompt. Il a aussi une sortie empty_latent, identique à un node Empty Latent Image. Je garde un Empty Latent Image séparé, parce que cette entrée est l’endroit où iront plus tard les masques de lumière.

Saisissez un éclairage dans le prompt positif, comme daylight ou foggy morning, et appuyez sur Ctrl+Entrée. Chaque exécution est légèrement différente ; augmentez le nombre de lots pour voir de nombreuses variations. Certaines seront horribles, d’autres bonnes pour travailler. Faites le tri.

Comparer, et garder le visage avec Detail Transfer

Ajoutez l’Image Comparer de rgthree avec le résultat en image A et l’original redimensionné en image B. Faites glisser le curseur et vous verrez qu’il change légèrement le visage. C’est le côté retouche : il vous « améliore ». Vous n’êtes pas exactement le même ensuite, ce qui est plus souvent mauvais que bon.

Un selfie rééclairé d'un homme à lunettes et à barbe séparé par le curseur du comparateur contre l'original
Le comparateur de près : un nouvel éclairage, et un visage légèrement retouché.

Pour récupérer le détail, ajoutez Detail Transfer : la sortie rééclairée dans target, l’image d’origine dans source. Il fonctionne comme une astuce de passe-haut / masque flou dans Photoshop, et peut être excessif ; baissez le blend factor pour le contrôler.

Fixer la seed pendant le réglage

Avec la seed sur randomize, chaque changement relance tout et donne une nouvelle image. Passer à fixed ne gèle pas non plus l’image courante, parce que la seed suivante a déjà été définie. Ce que je fais à la place : je règle la seed sur increment, en partant de 1, pour que chaque image ait un numéro connu. Revenez au numéro qui vous plaisait (disons 3), lancez-le, puis passez à fixed. Maintenant, quand vous changez les réglages de Detail Transfer, seul ce node se relance, en quelques secondes.

Le KSampler avec control_after_generate sur increment à côté de portraits rééclairés dans la file
Increment, choisissez le numéro qui vous plaît, puis fixez-le.

Masques de lumière

À la place d’un latent vide, donnez au KSampler un masque de lumière : une image en noir et blanc où le blanc est la lumière. Chargez le masque, passez-le dans VAE Encode, et connectez-le au latent_image du KSampler. J’ai dessiné un ensemble de masques (rond, rayures, lignes diagonales et autres) ; ils sont sur mon Patreon.

Un masque de lumière de rayures diagonales noires et blanches chargé dans le workflow
Un masque rayé : de la lumière à travers des persiennes.

Les masques durs brûlent l’image. Un masque purement noir et blanc donne un contraste ultra-élevé, et un masque rond a produit une lumière très forte qui a aussi touché les yeux. Pour l’adoucir, ajoutez Remap Image Range entre le masque et VAE Encode, avec un aperçu : augmentez le minimum et baissez le maximum. Je suis descendu à environ 20 pour cent. Ce n’est pas en temps réel comme Photoshop ; vous lancez le graphe pour voir même l’aperçu.

Un masque de lumière rond et doux dans un node d'aperçu
Un masque rond, remappé pour qu'il ne brûle pas l'image.

Avec les masques, le prompt compte beaucoup. « Spotlight » a donné une lumière dure ; « neon light » a donné du néon. Je mets généralement six ou huit exécutions en file à la fois. (Cliquer sur le nombre d’un node d’aperçu montre tous les aperçus des exécutions précédentes, une fonction récente de ComfyUI ; mettez ComfyUI à jour de temps en temps.)

Multiplicateur : la valeur par défaut de 0,182 d’IC-Light Conditioning est bonne. À 0,155, c’est devenu plus sombre ; à 0,25, l’image a brûlé presque jusqu’à un aspect stylisé.

Résultats en noir et blanc

Parfois il renvoie des images en noir et blanc et je ne sais pas pourquoi. Mettre « black and white » dans le prompt négatif a fait exploser la saturation. Essayer le modèle Photon a aussi produit au début beaucoup d’images en noir et blanc. Mon portable de 4 Go en a fait bien plus souvent que mon PC de 24 Go, qui donne surtout de la couleur. Un prompt comme « 50% saturated » peut aider. Au final, j’ai surtout trié plutôt que beaucoup prompté ; je garde des prompts minimaux.

Un masque de lumière de lignes diagonales dans un node d'aperçu avec des résultats rééclairés dans la file
Un masque de lignes diagonales : la lumière tend à tomber davantage sur l'arrière-plan que sur le visage.

Résolution plus élevée

SD 1.5 et IC-Light sont entraînés sur du 512 × 512. Vous pouvez quand même fournir une image de 1024 × 1024, à condition que le masque ait la même taille (utilisez un node de redimensionnement). Le résultat était un peu brûlé et plus stylisé, mais de meilleure qualité. Cela peut valoir la peine, car les upscalers adoucissent parfois la peau de façon plastique.

Peindre la lumière à la main

Vous pouvez aussi peindre directement un masque de lumière :

  1. Clic droit sur Load Image → Open in Mask Editor, et peignez là où la lumière doit tomber (j’ai essayé un look noir des années 1950 sur un visage).
  2. Convert Mask to Image, puis dans VAE Encode.
  3. Si le résultat est flou, vérifiez les tailles : quand le masque ne correspond pas exactement à l’image de 512 × 512, tout casse.
  4. Adoucissez-le : Mask Blur (Essentials) avant de convertir en image (j’ai utilisé 66), puis Remap Image Range à environ 30 pour cent avec les blancs abaissés.

Groupes et paysages

IC-Light fonctionne aussi sur plusieurs personnes. Sur une photo de famille générée, « daylight » a donné des résultats intéressants. Un masque de faisceau lumineux sur l’enfant, ou « beam of light » dans le prompt, a créé des faisceaux de lumière complètement fous ; il faudra peut-être ajuster le multiplicateur.

Un prompt de lumière du jour avec trois variations chaudes et ensoleillées d'un portrait de famille dans la file
« Daylight » sur une photo de groupe.

Sur une photo de paysage d’Australie, « daylight » a donné des résultats intéressants, « sunset » l’a rendue beaucoup trop rouge et effrayante, et « afternoon » a parfois remplacé la mer par un paysage qui n’était pas là, mais a parfois fait du bon travail. Il faut jouer avec les prompts.

Une photo de plage rocheuse en entrée avec le modèle Photon et un prompt afternoon, et des résultats de coucher de soleil rouge profond dans la file
Une photo de plage : « sunset » est devenu beaucoup trop rouge.

Agrandir le résultat

Une image rééclairée de 512 px peut passer en 8K avec mon workflow d’upscaling gratuit. Le résultat n’était pas toujours étonnant ; j’ai souvent trouvé l’image rééclairée de 512 meilleure. Mais si vous avez besoin de la résolution, cela donne quand même un résultat correct.

Voir la version vidéo (19:19)

Tout ce qui précède est aussi dans la vidéo, si vous préférez suivre à l’écran. La vidéo est en anglais.

Questions fréquentes

Puis-je utiliser IC-Light v2 dans ComfyUI ?

Pas quand j'ai fait ceci. IC-Light v2 n'était disponible que comme service payant et non commercial sur son propre site. Ce guide utilise IC-Light v1, qui tourne en local.

Quel modèle IC-Light télécharger ?

Le modèle FC (foreground-conditioned) est le seul que j'utilise. Le modèle FBC prend aussi un arrière-plan ; j'ai essayé des images d'arrière-plan et elles n'ont jamais été belles, je décris donc l'arrière-plan dans le prompt.

Pourquoi mes images rééclairées sont-elles brûlées ou en noir et blanc ?

Les masques de lumière durs en noir et blanc brûlent l'image : adoucissez-les avec Remap Image Range et un flou de masque. Les résultats en noir et blanc sont apparus souvent sur mon portable de 4 Go et rarement sur mon PC de 24 Go ; un prompt de style « 50% saturated » peut aider.

Quel multiplicateur utiliser dans IC-Light Conditioning ?

La valeur par défaut de 0,182 fonctionne bien. 0,155 est devenu plus sombre ; 0,25 a brûlé l'image presque jusqu'à un aspect stylisé.

Anton Tenitsky est artiste 3D avec plus de 15 ans d'expérience en infographie, qui a travaillé avec Nickelodeon, Gameloft, Marvel Rivals et de nombreux autres clients. En savoir plus sur moi

Guides associés