Hace unas semanas se publicó SDXL 1.0, un modelo generativo de imágenes que, debido al tamaño que tienen, no funcionaba en mi instalación de Automatic 1111 ni SD.Next, los programas que utilizaba para crear imágenes AI en mi propia PC.
Creyendo que estaba todo perdido me quedaba por probar uno más: ComfyUI. La razón era que tenía un esquema totalmente visual y muy interesante para aprender más, pero, spoiler alert, resultó que servía para SDXL!!!!! Si, con mi PC limitada y todo...
Aquí este mismo posteo pero en video para los que no quieran leer tanto:
Aclaro mi hardware para que tomen de referencia: utilizo una Asus ROG Zephyrus G15 GA503RM con 40GB de RAM DDR5-4800, dos M.2 (1Tb+2Tb), y que viene con una NVidia RTX 3060 con 6GB de VRAM y un Ryzen 7 6800HS.
Con 6GB de VRAM la gran mayoría de los modelos de lenguaje LLM fallan y los de imágenes funcionan si me quedo con los que fueron entrenados a 512x512 pixeles. Cualquier cosa más arriba y no tengo suficiente memoria de video que es donde casi todos (vean mi video de GPT4All) fallan.
Pero he aquí que todavía hay algo de esperanza.
A tener en cuenta: entiendo que si se meten a probar esto ya tienen instalado Python (la última versión nunca sirve, averigüen bien cuál deben usar) y git porque sino están un poco al horno, hay algo de developer en todo este trabajo, jeje.
El desarrollo de esta ComfyUI es muy interesante porque su autor la creó para entender cómo funcionaba todo esto. Es decir, uno puede utilizar scripts como Automatic1111 pero no explica qué es cada cosa, ni por qué, todo sucede detrás de una cómoda interfaz de usuario.
El creador de Comfy decidió ir a un diagrama de flujos que fuese lo suficientemente claro y, además, potente como para hacer lo mismo pero un poquito más fácil de aprender. Al principio choca un poco todo porque uno no entiende qué está viendo ni por qué, pero les doy algunas referencias para que entiendan.
Primero que nada uno debe cargar en memoria los "Checkpoints", que son los modelos, luego crear una imagen "latente" de la resolución que queremos (ej: 512x512).
Luego está la entrada de texto, la positiva y la negativa, esto se envía al KSampler que toma el texto, lo pasa por el modelo y genera un resultado que hasta ahora no es una imagen, se hacen X pasos (uno indica cuántos), se indica la "semilla" (Seed) y una vez terminado pasa al decoder VAE.
Es recién ahí que los números toman forma en una imagen y pasan a ser exportados como tal.
Esto, en cualquier otro programa, se pasa de largo y no se explica, pero aquí uno puede ver el paso a paso de qué está haciendo de una forma totalmente visual.
Lo interesante: una vez que se ejecutó por primera vez, salvo que se cambie un parámetro, no se vuelve a ejecutar un paso innecesario. Por ejemplo, la primera vez tiene que cargar el checkpoint, pero la segunda, si es el mismo, comienza directamente desde los textos del prompt, si éstos no cambiaron va derecho al KSampler y así. Ahorrando tiempo.
Y otra cosa relevante, SDXL 1.0 viene en dos partes, el Base y el Refiner, el primero genera una imagen más ruidosa y el segundo la refina. Usando Automatic 1111 uno debería ejecutar primero uno, luego cargar el otro, tomar la imagen, pasarla de nuevo, etc. Con ComfyUI puedo hacer ambas cosas en un sólo tirón y con mi VRAM limitada, mejor imposible.
Hace muy pocos días se liberó SDXL 1.0, una versión de Stable Diffusion sin bloqueos por copyright, o al menos no que ellos sepan, que tiene dos modelos, uno para la creación de una imagen base y otro para refinar el resultado.
No son los únicos modelos que podemos usar, vengo probando otros muy interesantes también, por ejemplo con DreamShaper XL1.0 obtengo mejores resultados de rostros, aun cuando SDXL está muy bien al respecto, tiene algunas fallas en rostros y manos que recuerdan a la versión 4 de MidJourney.
MidJourney es el rival "a vencer", se basa en Stable Diffusion pero todo el entrenamiento es cerrado y lo hace su propia empresa, no se sabe con certeza cuánto han utilizado ni las fuentes, pero sí que logran una calidad y una coherencia mucho mayor.
Es posible que sus procesos "tomen prestado" mucho de lo que es libre y podemos descargar y probar, pero al mismo tiempo han logrado un producto que es superior y, como se tiene que pagar para usar, es un interesante negocio.
Todos los modelos que menciono aquí, en cambio, los pueden descargar gratuitamente sin problemas.
Recuerden que los modelos suelen ser archivos muy grandes, esto implica también mucha memoria de video y mucho almacenamiento necesarios.
Y si quieren modelos pueden descargar toneladas de Civitai, les dejo abajo los que recomiendo para mi workflow personal:
SDXL 1.0 Base
SDLX 1.0 Refiner
Fixed SDXL 0.9 VAE
4x_NMKD-Siax_200k.pth upscaler
4x-Ultrasharp.pth upscaler
DreamShaper XL1.0
Empecé con SytanSD quien creó un workflow más elaborado que el que viene de base en ComfyUI.
Cada Workflow es un archivo JSON editable que contiene los módulos, sus parámetros y cómo se conectan entre sí.
El de Sytan está bien y tiene una ventaja: ya está preparado para funcionar con SDXL 1.0 base y su refiner, es decir, los dos nuevos modelos libres de alta resolución (1024x1024) por lo que pude obtener resultados muy buenos y muy rápido.
Pero necesitaba más.
Así pues, busqué otros hasta que di con Searge SDXL, aquí ya pasamos a palabras mayores de complejidad y eso que es tan sólo un workflow más ¿No? Pues no, tiene muchos módulos nuevos que recomiendo instalar.
No sólo suma nuevos módulos, además ofrece, entre ellos, la posibilidad de hacer upscaling de las imágenes sumando más modelos para ello.
Lo interesante es que podemos pasar una imagen de 1024x1024 a 2048x2048 con bastantes buenos resultados, algo que, si uno viene de un modelo de 512x512 es más que necesario.
La instalación es tan sencilla como la de ComfyUI, hay que ejecutar el comando correspondiente de Git en la carpeta custom_nodes y reiniciar ComfyUI.
Obviamente faltarán los modelos de upscaling y la búsqueda de éstos fue otro tema.
Levantar la resolución de una imagen digital implica "inventar" qué hay en los píxeles intermedios, hay algoritmos muy conocidos, pero, ya que estamoso usando una interfaz para AI ¿Por qué no usar modelos para esto? Pues bien, existen y están disponibles.
En el workflow que estuve usando se hace un primer upscaling x4 y luego una reducción a x2, es un proceso doble para mejorar el resultado final y, si bien agrega más tiempo al proceso de cada imagen, me gustó el resultado final.
Combina dos 4x_NMKD-Siax_200k.pth upscaler y 4x-Ultrasharp.pth upscaler.
La ventaja de esto es que podemos crear imágenes HD con lujo de detalles.
Combinando tanto el de Sytan con el de Searge creé mi propio Workflow que les dejo para descargar.
Antes de meterse con éste les recomiendo instalar en ComfyUI un manager para los módulos necesarios: ComfyUI-Manager
Otro más que se instala con git en la carpeta custom_nodes y luego de esto tenemos un administrador que permite instalar módulos de manera sencilla, pueden probar con ComfyUI-Impact-Pack o SeargeSDXL que creo que los tiene listados.
Si le falta algo lo descargará, no sé si descarga los modelos , pero la mayoría se pueden conseguir en HugginFace o en Civitai.
Con este worklfow combiné los dos que más me gustaron, puedo utilizar el Refiner, hago 13 pasadas con el base y 7 con el refiner (configurable), además uso algunos módulos de Searge que me permiten hacer el upscaling del modelo y el resultado final me ha gustado mucho.
No digo que compita de igual a igual con MidJourney pero, vamos! esto lo estoy ejecutando en mi propia PC!
El tiempo de render por cada imagen ronda los 45 segundos, dependiendo de modelo y del upscaling, se puede sacar esto último simplemente "desconectando" uno de los nodos y listo.
Descarga de mi workflow aquí.
PS: las imágenes que adornan el post son todas creadas con mi propio workflow.
PS2: se viene concurso en el que uds dejarán los prompts como comentarios y yo haré las imágenes, estén atentos! la semana que viene lo organizo y tendrán un teléfono de regalo!!!