IC-Light reilumina una foto a partir de un prompt de texto o una máscara de luz. Hace más que mover la luz: también hace un retoque realmente bonito, casi de nivel profesional, y puedes darle cualquier foto mediocre tuya, de tu familia o de un paisaje. Funciona en ComfyUI en casi cualquier portátil gaming, en casa, gratis, sin subir tus fotos a ninguna parte.
IC-Light es de lllyasviel, el autor de ControlNet (IC-Light en GitHub). También existe un IC-Light v2, que da mejores resultados, pero cuando hice esto solo estaba disponible como servicio de pago y no comercial en su propia web, no en ComfyUI. Aquí uso la v1.
En resumen
- Nodos: ComfyUI-IC-Light (Kijai), KJNodes, Essentials, rgthree. Modelo: iclight_sd15_fc.
- Grafo: checkpoint → Load And Apply IC-Light → KSampler; prompts y VAE → IC-Light Conditioning → KSampler; tu foto, redimensionada y codificada con VAE, como primer plano.
- Haz prompts de la luz: «daylight», «foggy morning», «neon light», «spotlight».
- Conserva el rostro: Detail Transfer desde la imagen original.
- Las máscaras de luz sustituyen al latente vacío; suavízalas o la imagen se quema.
¿Nuevo en ComfyUI? Empieza por fundamentos de ComfyUI. El flujo y mis máscaras de luz están gratis en mi Patreon.
Instalación
- Manager → Custom Nodes Manager, busca IC-Light. Hay dos paquetes, el de Kijai y IC-Light Native de huchenlei. Ambos son útiles; instalo los dos, y uso el de Kijai aquí.
- Instala también KJNodes (los nodos de utilidad de Kijai). Reinicia y recarga la página.
- Manager → Model Manager, busca IC-Light. Hay tres modelos; solo necesitas uno:
- FC (foreground conditioned): el que uso.
- FBC (foreground y background).
- FCON: según la documentación, algo peor que FC.
- Tras la descarga, simplemente actualiza la página (Ctrl+R); no hace falta reiniciar.
Construye el flujo
Empieza desde el flujo por defecto y cambia el checkpoint a epiCPhotoGasm. Renombra los prompts como «Positive» y «Negative», y coloréalos de verde y rojo.
- Load And Apply IC-Light: el modelo del checkpoint pasa por él hasta el KSampler. Recoge automáticamente el modelo FC.
- IC-Light Conditioning: conecta el prompt positivo, el prompt negativo y el VAE; sus salidas positive y negative van al KSampler.
- El primer plano: Load Image con tu foto → Image Resize (Essentials) → VAE Encode → la entrada foreground del condicionamiento.
El nodo de condicionamiento también tiene una entrada opt_background. Probé imágenes de fondo y nunca se veían bien, así que lo dejé; describe el fondo en el prompt. También tiene una salida empty_latent, igual que un nodo Empty Latent Image. Yo mantengo un Empty Latent Image aparte, porque esa entrada es donde van después las máscaras de luz.
Escribe una iluminación en el prompt positivo, como daylight o foggy morning, y pulsa Ctrl+Enter. Cada ejecución es ligeramente distinta; sube el recuento de lotes para ver muchas variaciones. Algunas serán horribles, otras buenas para trabajar. Selecciona.
Compara, y conserva el rostro con Detail Transfer
Añade el Image Comparer de rgthree con el resultado como imagen A y el original redimensionado como imagen B. Arrastra el deslizador y verás que cambia ligeramente el rostro. Eso es la parte de retoque: te «mejora». Después ya no eres exactamente el mismo, lo cual suele ser más malo que bueno.
Para recuperar el detalle, añade Detail Transfer: la salida reiluminada en target, la imagen original en source. Funciona como el truco de paso alto y máscara de enfoque de Photoshop, y puede pasarse; baja el blend factor para controlarlo.
Fija la seed mientras ajustas
Con la seed en randomize, cada cambio vuelve a ejecutarlo todo y da una imagen nueva. Cambiar a fixed tampoco congela la imagen actual, porque la siguiente seed ya se ha fijado. Lo que hago yo: pongo la seed en increment, empezando en 1, para que cada imagen tenga un número conocido. Vuelve al número que te gustó (digamos 3), ejecútalo y luego cambia a fixed. Ahora, cuando cambies los ajustes de Detail Transfer, solo se vuelve a ejecutar ese nodo, en unos segundos.
Máscaras de luz
En lugar de un latente vacío, dale al KSampler una máscara de luz: una imagen en blanco y negro donde el blanco es luz. Carga la máscara, pásala por VAE Encode y conéctala al latent_image del KSampler. Dibujé un conjunto de máscaras (redonda, rayas, líneas diagonales y otras); están en mi Patreon.
Las máscaras duras queman la imagen. Una máscara pura en blanco y negro da un contraste altísimo, y una máscara redonda produjo una luz muy fuerte que además alcanzó los ojos. Para suavizarla, añade Remap Image Range entre la máscara y VAE Encode, con una vista previa: sube el mínimo y baja el máximo. Yo bajé a un 20 por ciento. No es en tiempo real como en Photoshop; ejecutas el grafo para ver incluso la vista previa.
Con máscaras, el prompt importa mucho. «Spotlight» dio una luz dura; «neon light» dio neón. Normalmente pongo en cola seis u ocho a la vez. (Hacer clic en el número de un nodo de vista previa muestra todas las vistas previas de ejecuciones anteriores, una función de un ComfyUI más reciente; actualiza ComfyUI de vez en cuando.)
Multiplier: el 0,182 por defecto de IC-Light Conditioning es bueno. Con 0,155 quedó más oscuro; con 0,25 quemó la imagen casi hasta un aspecto estilizado.
Resultados en blanco y negro
A veces devuelve imágenes en blanco y negro y no sé por qué. Poner «black and white» en el prompt negativo hizo que la saturación se disparara. Probar el modelo Photon también produjo al principio muchas imágenes en blanco y negro. Mi portátil de 4 GB las hacía con mucha más frecuencia que mi PC de 24 GB, que casi siempre da color. Un prompt como «50% saturated» puede ayudar. Al final sobre todo seleccioné en lugar de hacer muchos prompts; mantengo los prompts mínimos.
Mayor resolución
SD 1.5 e IC-Light están entrenados con 512 × 512. Aun así puedes darle una imagen de 1024 × 1024, siempre que la máscara tenga el mismo tamaño (usa un nodo de cambio de tamaño). El resultado salió algo quemado y más estilizado, pero de mayor calidad. Puede merecer la pena, porque los escaladores a veces suavizan la piel de forma plástica.
Pinta la luz a mano
También puedes pintar directamente una máscara de luz:
- Clic derecho en Load Image → Open in Mask Editor, y pinta dónde debe caer la luz (probé una iluminación al estilo noir de los años 50 sobre un rostro).
- Convert Mask to Image, y luego a VAE Encode.
- Si el resultado sale borroso, comprueba los tamaños: cuando la máscara no coincide exactamente con la imagen de 512 × 512, lo rompe todo.
- Suavízala: Mask Blur (Essentials) antes de convertirla en imagen (usé 66), y luego Remap Image Range a un 30 por ciento con los blancos reducidos.
Grupos y paisajes
IC-Light también funciona con varias personas. En una foto familiar generada, «daylight» dio resultados interesantes. Una máscara de haz de luz sobre el niño, o «beam of light» en el prompt, creó unos haces de luz disparatados; puede que haya que ajustar el multiplier.
En una foto de paisaje de Australia, «daylight» dio resultados interesantes, «sunset» la volvió demasiado roja y aterradora, y «afternoon» a veces sustituía el mar por un paisaje que no estaba allí, pero otras veces hacía un buen trabajo. Hay que jugar con los prompts.
Escalar el resultado
Una imagen reiluminada de 512 px puede llegar a 8K con mi flujo de escalado gratuito. El resultado no siempre fue asombroso; a menudo me pareció mejor la imagen reiluminada de 512. Pero si necesitas la resolución, sigue dando un resultado decente.
Ver la versión en vídeo (19:19)
Todo lo anterior también está en el vídeo, si prefieres seguirlo en pantalla. El vídeo está en inglés.
Preguntas frecuentes
¿Puedo usar IC-Light v2 en ComfyUI?
No cuando hice esto. IC-Light v2 solo estaba disponible como servicio de pago y no comercial en su propia web. Esta guía usa IC-Light v1, que funciona en local.
¿Qué modelo de IC-Light debo descargar?
El modelo FC (foreground-conditioned) es el único que uso. El modelo FBC también admite un fondo; probé imágenes de fondo y nunca se veían bien, así que describo el fondo en el prompt.
¿Por qué mis imágenes reiluminadas salen quemadas o en blanco y negro?
Las máscaras de luz duras en blanco y negro queman la imagen: suavízalas con Remap Image Range y un desenfoque de máscara. Los resultados en blanco y negro salían a menudo en mi portátil de 4 GB y rara vez en mi PC de 24 GB; un prompt de estilo «50% saturated» puede ayudar.
¿Qué multiplier debo usar en IC-Light Conditioning?
El valor por defecto 0,182 funciona bien. 0,155 resultó más oscuro; 0,25 quemó la imagen casi hasta un aspecto estilizado.
