Concept art en lote a partir de fotos con Flux y un ControlNet de profundidad en ComfyUI

Convierte una carpeta entera de fotos de referencia en concept art de IA coherente: Flux 1 dev, un mapa de profundidad de Depth Anything V2 y el ControlNet de profundidad de Flux v3, con nombres de archivo que enlazan cada resultado con su foto.

Anton Tenitsky13 de octubre de 20266 min de lecturaVersión en vídeo más abajo

Esta guía se tradujo del inglés con IA y puede contener errores. Leer el original.

Concept art de ciencia ficción de la puerta de una ciudad fortificada, generado con Flux a partir de una foto de la muralla de una antigua ciudad del desierto

Dale a este flujo una carpeta de fotos y convierte cada una en una pieza de concept art, manteniendo la estructura y la composición de la foto mientras redibuja todo lo demás. Lo ejecuté con un pack de unas 700 fotos de una antigua ciudad amurallada del desierto, que salieron como torres, puertas y muros de ciencia ficción.

Funciona en local en ComfyUI con Flux 1 dev. A propósito no uso Flux 2: es mucho más pesado y lento, y cuando generas ideas en bulto lo que importa es la velocidad. Flux 1 funciona en tarjetas con entre 8 y 24 GB de VRAM.

En resumen

  • Entrada: una carpeta de fotos, leídas una a una.
  • Estructura: un mapa de profundidad de Depth Anything V2 controla el ControlNet de profundidad de Flux.
  • Ajustes: fuerza del ControlNet de unos 0,8, Flux guidance 3, 25 steps.
  • Salida: cada resultado lleva el nombre de la foto de la que viene.
  • El flujo terminado está en mi Patreon, pero nada en él es secreto: todo se explica a continuación.
Página de producto de un pack de fotos de una antigua ciudad amurallada del desierto, mostrando una foto de altos muros de adobe
Las fotos de origen: mi pack de la antigua ciudad amurallada del desierto en Fotoref, donde soy cofundador.

Custom nodes que necesitarás

Todos se instalan desde el ComfyUI Manager:

1. Carga las fotos como lote

Un nodo Load Image Batch apunta a una carpeta y la recorre, una imagen por ejecución. Un nodo de vista previa a su lado sirve solo para resolver problemas, para confirmar que entra la imagen correcta.

Mis fotos eran grandes: la del vídeo medía 3867 × 2578 píxeles, mucho más de lo que necesita Flux. El siguiente nodo las reduce.

2. Crea un mapa de profundidad y cambia el tamaño

El nodo Depth Anything V2 hace dos trabajos. Convierte cada foto en un mapa de profundidad en escala de grises (lo cercano es claro, lo lejano oscuro), y su ajuste resolution escala la foto para que su lado corto tenga esos píxeles, con el lado largo escalado en proporción. Sea vertical u horizontal, todo sale con las proporciones correctas.

El nodo Depth Anything V2 Relative con el modelo depth_anything_v2_vitl y resolución 1024
Depth Anything V2 con el modelo más grande, a una resolución de 1024.

Lo mantengo en 1024. Bájalo a 768 si quieres generaciones más rápidas. Como modelo, uso la versión más grande de Depth Anything V2, que debería dar la mejor profundidad. Descárgalo desde el Model Manager de ComfyUI buscando «Depth Anything V2» y luego recarga la página del navegador; no hace falta reiniciar ComfyUI.

Vista previa de un mapa de profundidad en escala de grises generado a partir de una foto de la muralla de una ciudad del desierto
El mapa de profundidad: esto es lo que Flux conserva de tu foto.

Un nodo Get Image Size pasa la nueva resolución al Empty Latent Image, así que nunca escribes los tamaños a mano. El latente vacío es el lienzo en blanco: ruido en el espacio latente del modelo que el sampler convierte en la imagen.

3. Aplica el ControlNet de profundidad de Flux

El mapa de profundidad entra en Apply Flux ControlNet (de x-flux-comfyui), con el ControlNet de profundidad de Flux v3 de XLabs cargado. Encuéntralo en el Model Manager buscando «Flux depth ControlNet», descárgalo y recarga la página.

El ajuste que importa es strength:

Strength Qué ocurre
Por debajo de 0,5 Casi aleatorio: el resultado solo se basa vagamente en la foto
Alrededor de 0,8 Mi punto óptimo con Flux: la estructura se mantiene y el prompt aún tiene margen
1,0 Demasiado: la imagen empieza a quemarse y aparecen artefactos
El nodo Apply Flux ControlNet con strength en 0,80
Fuerza del ControlNet en 0,8: la estructura de la foto, con libertad creativa para el prompt.

El punto óptimo depende del modelo. Con SDXL, por ejemplo, bajo a unos 0,6.

4. Carga Flux y escribe el prompt

Load Diffusion Model carga Flux 1 dev con el tipo de peso fp8. Flux viene en fp16 y en fp8; fp8 es más rápido y necesita menos memoria. Tengo 24 GB de VRAM pero aun así uso fp8, para que no se atasque si otros programas están usando la tarjeta.

El DualCLIPLoader carga los dos codificadores de texto de Flux, CLIP-L y T5 (también en fp8). Traducen las palabras y sus pesos a la dirección que toma la generación de la imagen. Ambos están en el Model Manager.

El nodo de prompt positivo describiendo una enorme megaestructura de ciencia ficción en un planeta rocoso
El prompt: dejé que ChatGPT lo redactara y luego eliminé lo que no me gustaba.

Le pedí a ChatGPT que escribiera el prompt y luego eliminé las partes que no quería. Como el mismo prompt se ejecuta con todas las fotos, es lo que mantiene coherentes cientos de resultados.

  • Flux Guidance: 3. Un guidance más alto quema la imagen.
  • Prompt negativo: Flux no usa uno. El nodo está ahí solo porque el sampler necesita la entrada conectada; no afecta al resultado.

5. Muestrea y decodifica

El XLabs Sampler toma todo (modelo, prompt, latente y condición del ControlNet) y crea la imagen. Sus notas en el flujo explican cada parámetro; los que yo ajusto:

  • Seed en increment, para que las imágenes se numeren 19, 20, 21 en lugar de números enormes aleatorios. Es una forma fácil de saber cuántas llevas.
  • 25 steps. Pasados los 50 hay rendimientos decrecientes: más tiempo, sin cambio visible.
El nodo XLabs Sampler con la seed en increment y 25 steps
El XLabs Sampler: seed en increment, 25 steps y el resto por defecto.

VAE Decode convierte el resultado latente en píxeles, con el VAE de Flux (unos 300 MB, también en el Model Manager). Un comparador de imágenes de rgthree te permite arrastrar un deslizador entre la foto y el resultado.

Concept art de una torre de ciencia ficción en una neblina del desierto, generado a partir de una foto de una torre de una ciudad del desierto
Una torre de la foto, reinterpretada como torre de ciencia ficción, con torres a juego añadidas al fondo.

Me gusta lo que esto hace con las fotos. Darle al modelo más información que un prompt solo (la profundidad de una foto real) claramente ayuda al resultado: la torre de arriba conservó su forma, se convirtió en una torre de ciencia ficción, y el modelo añadió detrás un horizonte de ciencia ficción.

6. Pon a cada resultado el nombre de su foto

Cuando generas cientos de imágenes, quieres saber de qué foto viene cada una. El flujo toma el nombre de archivo de la foto desde el cargador por lotes y lo concatena con un prefijo (yo usé flux-desert-city), y luego se lo pasa al nodo Save Image como nombre de archivo.

Un nodo Preview Text mostrando el nombre de archivo generado a partir del prefijo y el nombre de la foto original
El prefijo más el nombre de la foto original, listo para el nodo Save Image.

Los nombres son algo incómodos, pero cada resultado se puede rastrear hasta su foto de origen.

Dónde ejecutarlo

Esto funciona en local en tarjetas con entre 8 y 24 GB de VRAM. Si la tuya es más pequeña, una GPU alquilada es la vía más fácil. Mi introducción a RunPod muestra la configuración, y el mismo enfoque sirve para cualquier flujo de ComfyUI.

Si pruebas RunPod, mi enlace de referido da a las cuentas nuevas que se registran con Google entre 5 y 500 $ de crédito después de su primer gasto de 10 $, y yo recibo una pequeña comisión.

Ver la versión en vídeo (10:18)

Todo lo anterior también está en el vídeo, si prefieres seguirlo en pantalla. El vídeo está en inglés.

Preguntas frecuentes

¿Por qué usar Flux 1 en lugar de Flux 2 para concept art en lote?

Velocidad y memoria. Flux 1 funciona en tarjetas con 8 a 24 GB de VRAM; Flux 2 es más pesado y mucho más lento, lo que importa cuando generas cientos de ideas.

¿Qué fuerza de ControlNet debo usar con Flux?

Unos 0,8 para el ControlNet de profundidad de Flux v3. Por debajo de 0,5 el resultado solo se basa vagamente en la foto; con 1,0 la imagen empieza a quemarse. Con SDXL uso unos 0,6.

¿Cuántos steps necesita Flux?

Unos 25. Pasados los 50 steps pagas en tiempo sin ver una imagen mejor.

Anton Tenitsky es artista 3D con más de 15 años en gráficos por ordenador, que ha trabajado con Nickelodeon, Gameloft, Marvel Rivals y muchos otros clientes. Más sobre mí

Guías relacionadas