Tamaños de imagen y nodos personalizados en Stable Diffusion con ComfyUI

Publicado por P. Ruiz en

Stability.ai logoHoy trataremos dos temas diferentes, relacionados con Stable Diffusion y ComfyUI.

Para comenzar, hablaremos de los tamaños de imagen para los que está entrenado Stable Diffusion.

A continuación, veremos cómo obtener e instalar un nodo personalizado (custom node) de Internet, que nos permitirá manejar cómodamente las diferentes opciones en cuanto al tamaño de la imagen que generemos con ComfyUI.

Como es lógico, esta técnica será idéntica para cualquier otro nodo personalizado que nos interese en otro momento.

Por cierto, puedes encontrar todos los artículos publicados con esta temática, haciendo clic sobre este enlace.

Tamaño de imagen en Stable Diffusion

Con el fin de ahorrar esfuerzo de cálculo, las primeras versiones de Stable Diffusion se entrenaron con imágenes de 512×512 píxeles. Evidentemente, nosotros podíamos indicar tamaños diferentes, o formatos que no fuesen cuadrados, pero nos arriesgábamos a obtener resultados inesperados (personajes deformes o duplicados, por ejemplo).

Cuando llegó la versión 2.0, el tamaño nativo se amplió a 768×768 píxeles y, finalmente, con la versión 1.0 de Stable Diffusion XL (SDXL), la resolución nativa alcanzó los 1024×1024 píxeles.

Como puedes suponer, comparada con las versiones anteriores, Stable Diffusion XL ha mejorado significativamente la calidad de sus resultados pero, además, también ha mejorado en cuestiones de composición. Ahora es más fácil obtener resultados adecuados con imágenes que no sean cuadradas, siempre que no superemos la cantidad de píxeles máxima de 1,048,576 (1024×1024). O lo que es lo mismo, un megapixel.

Además, el modelo ha sido optimizado para una serie de relaciones de aspecto predeterminadas, que mantienen el cómputo total en ese megapixel mencionado arriba. Las más utilizadas son las siguientes:

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-001

La recomendación general es comenzar con alguno de estos tamaños y, después, escalar la imagen hasta el tamaño final requerido.

Instalar un nodo personalizado en ComfyUI

Como recordarás de nuestro artículo Usar Stable Diffusion con ComfyUI: Primeros pasos, el flujo de trabajo predeterminado de ComfyUI incluye un módulo, titulado Empty Latent Image, que nos permite establecer el número de imágenes que obtendremos y su resolución.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-002

El problema es que, cada vez que queramos cambiar la relación de aspecto de la imagen que estamos generando, tendremos que consultar la tabla anterior, hacer clic sobre las entradas width y height del módulo anterior y escribir los valores adecuados. No es complicado, pero estarás conmigo en que es molesto.

Afortunadamente, para simplificarlo, existen los nodos personalizados (custom nodes). Básicamente, se trata de nodos desarrollados en Python , que pueden añadirse a la interfaz de ComfyUI para cubrir unas necesidades específicas de los usuarios.

GitHub-logoExisten muchos nodos personalizados para ComfyUI, pero todos se instalan de un modo parecido. Quizás en el futuro hablemos de alguno más, pero hoy nos centraremos en SDXLCustomAspectRatio, un nodo publicado por el usuario throttlekitty de GitHub, que puedes encontrar en el siguiente enlace: https://github.com/throttlekitty/SDXLCustomAspectRatio. Con él obtendremos una ventaja doble: nos sirve para manejar los tamaños de imagen predeterminados y, de paso, lo usamos para aprender a instalar cualquier otro nodo personalizado.

Instalar SDXLCustomAspectRatio

Para instalar SDXLCustomAspectRatio, lo primero será visitar la página del proyecto en GitHub (hemos incluido el enlace más arriba). Una vez en ella, solo tenemos que hacer clic sobre el botón Code para desplegar sus opciones.

Y, a continuación, hacer clic sobre el enlace Download Zip.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-003

Al hacerlo, se iniciará la descarga.

En realidad, el archivo que necesitamos es del tipo py (Python), pero viene dentro del archivo comprimido.

Por lo tanto, lo siguiente será hacer clic sobre el archivo para abrirlo.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-004

Si ya tenemos configurada una aplicación predeterminada para abrir los archivos comprimidos (en mi caso el Gestor de archivadores), el sistema nos mostrará su contenido. Así veremos que, en su interior, viene una carpeta.

Hacemos doble clic sobre ella para ver su contenido.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-005

… Y comprobamos que contiene el archivo que estamos necesitando.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-006

El siguiente paso consiste en extraerlo en la ruta donde tengas instalado ComfyUI, dentro de la carpeta custom_nodes. En mi caso, sería esta ruta:

/home/usuario/sd/ComfyUI/custom_nodes

(Teniendo en cuenta que mi cuenta se llama usuario y que realicé la instalación en una carpeta llamada sd).

Por lo tanto, solo tenemos que abrir una ventana del Explorador de archivos y desplazarnos hasta esa ruta.

A continuación, arrastramos hasta ahí el archivo descargado.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-007

Ya solo nos queda reiniciar ComfyUI para disfrutar del nuevo módulo.

Basta con cerrar la ventana de terminal que debemos tener abierta detrás del navegador.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-008

… Y volvemos a abrirlo. Recuerda que, en el artículo Automatizar la ejecución de ComfyUI en Ubuntu 22.04 LTS, te explicábamos cómo puedes conseguir que aparezca como una opción del Panel de Aplicaciones.

utilizar SDXLCustomAspectRatio

Para utilizar el nuevo módulo, basta con hacer clic, son el botón derecho del ratón, sobre cualquier área libre del espacio de trabajo de ComfyUI. Después, en el menú de contexto que aparece, debemos elegir la opción Add Node.

Esto hará que aparezca un nuevo submenú, mostrando distintas categorías de nodos. Ahí elegimos Image.

Finalmente, en el menú con los nodos relacionados con la categoría Image, descubrimos un nuevo tipo de nodo llamado SDXL Aspect Ratio.

Hacemos clic sobre él.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-009

Al hacerlo, obtenemos un nuevo nodo, donde podemos elegir la relación de aspecto más adecuada para nuestra imagen, en una lista desplegable.

Por ejemplo, elegimos 640×1536.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-010

Lo siguiente será conectar los valores del nodo SDXL Aspect Ratio con los del nodo Empty Latent Image. Y, para lograrlo, deberemos convertir los valores width y height de este último en variables de entrada.

En realidad, esta tarea es tan sencilla como hacer clic, con el botón derecho del ratón sobre el título del módulo…

… Y en el menú de contexto que aparece, elegir la entrada Convert width to input.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-011

A continuación, repetimos lo mismo con la entrada Convert height to input.

Después, solo nos quedará unir los conectores de ambos módulos de la forma adecuada.

Tamaños-de-imagen-y-nodos-personalizados-en-Stable-Diffusion-con-ComfyUI-012

Y con esto, hemos completado nuestro objetivo para este artículo. Espero que te resulte útil.