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
- 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.
- Installez aussi KJNodes (les nodes utilitaires de Kijai). Redémarrez et rechargez la page.
- 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.
- 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.
- 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.
- IC-Light Conditioning : connectez le prompt positif, le prompt négatif et le VAE ; ses sorties positive et negative vont au KSampler.
- Le premier plan : Load Image avec votre photo → Image Resize (Essentials) → VAE Encode → l’entrée foreground du conditioning.
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.
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.
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.
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.
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.
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 :
- 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).
- Convert Mask to Image, puis dans VAE Encode.
- Si le résultat est flou, vérifiez les tailles : quand le masque ne correspond pas exactement à l’image de 512 × 512, tout casse.
- 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.
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.
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é.
