Pirobits
  

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

alberto avatar Alberto Sola · 3/3/2024 · 2 min

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

En otro post profundizaré sobre estos conceptos.

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.

Me encontré el error AssertionError: Torch not compiled with CUDA enabled.

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.

Si te ha resultado útil este artículo agradecería si te suscribes a mi newsletter. Recibirás contenido exclusivo de calidad y también me ayudarás enormemente. Cada suscripción apoya el trabajo que realizo y me permite conocer mejor los temas que te interesan, de forma que puedo mejorar los conocimientos que comparto contigo.


Posts recientes