Crear imágenes con Stable Diffusion

Para crear imágenes con Stable Diffusion debes seguir los pasos que te describimos a continuación. Puedes experimentar con esta increíble tecnología de código abierto, sin tener una pc de alto rendimiento, y con la ayuda de Colab.

Stable Diffusion es un modelo de difusión latente de texto a imagen creado por investigadores e ingenieros de CompVis , Stability AI y LAION . Está entrenado en imágenes de 512 × 512 de un subconjunto de la base de datos LAION-5B . El modelo utiliza un codificador de texto CLIP ViT-L/14 congelado para condicionar el modelo en las indicaciones de texto. Con su codificador de texto 860M UNet y 123M, el modelo es relativamente liviano y se ejecuta en una GPU con al menos 10 GB de VRAM.

Comenzaremos con los requerimientos:

  • Debes contar con una cuenta de Google Colab, puedes crear la tuya accediendo con tu correo electrónico en el siguiente enlace: https://colab.research.google.com/
  • Debes generar una cuenta en Huggin Face, te recomendamos verificar la cuenta desde la bandeja de tu correo electrónico una vez creada. https://huggingface.co/

Una vez generadas tus cuentas, debes seguir los siguientes pasos:

Paso 1

Deberás acceder al siguiente enlace, el cuál te llevará al cuaderno donde trabajaremos: https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb
El cuaderno viene con sus propias instrucciones.

Paso 2

Stable Diffusion utiliza un modelo para generar cada imagen que es significativamente grande y de una versión específica, cabe mencionar que es importante aceptar la licencia del modelo antes de descargar o ejecutar las celdas. Esto se hace dando clic en las palabras its card.

Debes darte de alta en la página de Hugging Face para descargar el modelo ya entrenado que te permitirá generar imágenes. Puedes descargar el modelo de forma independiente con el siguiente enlace:

https://huggingface.co/CompVis/stable-diffusion-v-1-4-original

En esta publicación, usaremos la versión del modelo v1-4, por lo que deberá visitar su tarjeta, leer la licencia y marcar la casilla de verificación si está de acuerdo.

Paso 3

Ahora ejecutaremos las celdas necesarias para instalar y descargar todos los requerimientos, es importante que termine cada proceso:

Ejecutamos ▶

!pip install diffusers==0.4.0
!pip install transformers scipy ftfy
!pip install "ipywidgets>=7,<8"

Ejecutamos ▶

from google.colab import output
output.enable_custom_widget_manager()

Ejecutamos ▶

from huggingface_hub import notebook_login

notebook_login()

En esta parte deberemos acceder al enlace de your Hugging Face tokens page para generar nuestro token, presionando en New token y para este ejemplo lo nombramos «Difussion» y el rol se quedará en «read» (leer).

Copiamos el token, lo pegamos y presionamos Login.

Crear imágenes con Stable Diffusion

Si el proceso tuvo éxito deberá aparecer:

Login successful
Your token has been saved to /root/.huggingface/token

Ejecutamos ▶

import torch
from diffusers import StableDiffusionPipeline

# make sure you're logged in with `huggingface-cli login`
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16)  

Una ves terminado todo el proceso por ultimo, Ejecutamos ▶

pipe = pipe.to("cuda")

Paso 4

¡A disfrutar! ahora puedes usar los prompts que quieras usando el siguiente código, cambiando la descripción de la imagen deseada y ejecutando la celda:

from torch import autocast

prompt = "a photograph of an astronaut riding a horse"
with autocast("cuda"):
  image = pipe(prompt)["sample"][0]  # image here is in [PIL format](https://pillow.readthedocs.io/en/stable/)

# Now to display an image you can do either save it such as:
image.save(f"astronaut_rides_horse.png")

# or if you're in a google colab you can directly display it with 
image

Si necesitas ayuda para ser más creativo, puede comenzar con este sitio: https://lexica.art

Stable Difussion en GitHub: https://github.com/CompVis/stable-diffusion

Más ejemplos de Python: https://decodigo.com/python