Pirobits
  

SDLX Turbo: Genera imágenes a partir de texto en tu ordenador

alberto avatar Alberto Sola · 3/3/2024

Estos días he estado experimentando con la generación texto-a-imagen en local probando diferentes modelos. Como tengo la suscripción de pago de OpenAI y tengo acceso a GPT-4 y Dall-E, siempre suelo utilizar estos modelos que hasta día de hoy son de los más potentes.

Respecto a la genereación de imágenes nunca he explorado otras opciones, pero visto la potencia de modelos como StableDiffusion o Midjourney, justo ahora tengo un side-project que requiere generar imágenes así que he visto la oportunidad perfecta de experimentar con estos modelos.

Te lo cuento en este post, no te lo pierdas.

Generando imágenes con el modelo SDXL-Turbo

Uno de los modelos que más me llama la atención es SDLX-Turbo, de StabilityAI.

Tanto el modelo como el código fuente están disponibles en la página de HuggingFace. La licencia es no-comercial para uso personal.

Si quieres profundizar en cómo funcionan estos modelos, te lo explican en este paper.

Lo principal que destaca de este modelo es la capacidad de generar imágenes muy rápido. En mi ordenador tarda unos pocos segundos, mientras que en cloud con máquinas más potentes es prácticamente inmediato. Además ofrecen muchas herramientas muy interesantes para trabajar con imágenes en su plataforma.

Instalación y ejecución del entorno

Dicho esto podemos proceder a probarlo en nuestro ordenador. Necesitarás tener python instalado.

El primer paso es instalar las bibliotecas para poder trabajar con los modelos en nuestro ordenador:

python3 -m pip install diffusers transformers accelerate --upgrade

Si tienes una tarjeta gráfica NVidia, recuerda utilizar el driver cuda. En ordenadores con CPU Apple Silicon (M1, M2, M3) tienes que utilizar el driver mps.

Ahora puedes utilizar el siguiente script como base para generar imágenes:

from diffusers import AutoPipelineForText2Image
import torch

pipe = AutoPipelineForText2Image.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16")
pipe.to("mps")

prompt = "monk wearing a golden tunic meditating in a waterfall with a golden aura"

image = pipe(prompt=prompt, num_inference_steps=1, guidance_scale=0.0).images[0]
image.save("output.png")

Las imágenes que se consiguen son muy realistas, aunque uno de los problemas que tiene es que no es capaz de generar caras de personas correctamente. Te enseño un ejemplo:

Monje generado usando el modelo sdlx-turbo.

¿Te ha parecido interesante el artículo?¡ Únete a la comunidad para recibir contenido exclusivo !

Aprende sobre creación de producto y desarrollo de software

Comparto mis aprendizajes construyendo productos de software, novedades y artículos que me parecen interesantes. Voy directo al grano y te envío, como mucho, un mail a la semana. Qué, ¿te apuntas?

Ya son más de 50 creadores que reciben estos aprendizajes 🚀

Lo último que he escrito en el blog