Esto es una guía para conocer Stable Diffusion y enseñar cómo puedes utilizar esta herramienta.
La imagen de arriba está generado con Stable Diffusion. Se ha generado a partir del siguiente texto (prompt)
City skyline with skycrapers, by Stanislav Sidorov, digital art, ultra realistic, ultra detailed, photorealistic, 4k, character concept, soft light,blade runner, futuristic
Stable Diffusion es un modelo de aprendizaje automático text-to-image. Un modelo de deep learning, de inteligencia artificial que nos permite generar imágenes a partir de texto que le metemos como input o entrada.
No es el primero modelo ni la primera herramienta que sacan de este estilo,ahora mismo se habla mucho de Dall-e 2, MidJourney, Image de Google, pero sí que es el más importante por lo que representa. Stable Diffusion es un proyecto Open Source, de forma que cualquiera puede utilizarlo y modificarlo. En su versión 1.4 tenemos un archivo .cpxt de 4G donde viene todo el modelo pre-entrenado, y esto, es una auténtica revolución.
Tanto es así que en tan solo 2 o 3 semanas desde su liberación, encontramos plugins para PhotoShop, GIMP, Krita, WordPress, Blender, etc. prácticamente cualquier herramienta que traaje con imágenes está implementando Stable Diffusion, tanto es así que hasta los competidores como Midjourney están utilizándolo para mejorar sus herramientas. Pero no solo sirve para generar herramientas, sino que nosotros como usuarios podemos instalarlo en nuestro PC y ejecutarlo para obtener las imágenes en local.
Porque además que sea Open Source no quiere decir que sea menos potente que los anteriores. Es una auténtica maravilla. Para mí ahora mismo es la mejor herramienta que podemos utilizar si queremos generar nuestras imágenes pra cualquier proyecto.
Formas de instalar y usar Stable Diffusion
Hay diferentes formas de utilizarlo. Yo ahora mismo recomiendo 2. Si tu ordenador tiene la potencia necesaria, es decir una gráfica de unos 8Gb de RAM, entonces instálatelo en tu ordenador. Si tu hardware no es lo suficientemente potente usa un Colab de Google, ahora mismo te recomiendo el de Altryne, porque viene con interfaz gráfica y es más fácil de utilizar.
Paso a detallar.
Colab de Altryne
Esta es la opción que yo te recomiendo si tu ordenador no es lo suficientemente potente (GPU con 8Gb de RAM) o si quieres probarlo con todas sus funcionalidades sin tener que estar instalando nada.
La recomiendo porque tiene una interfaz gráfica muy cómoda con muchas opciones para controlar las imágenes y otras herramientas del modelo como el image to image y el upscale
Utilizamos el Colab de Google creado por Altryne y Google Drive para guardar el modelos y los resultados.
Es todo gratis. Dejo un vídeo de todo el proceso que como verás es muy sencillo.
Instalar en PC
Para instalarlo desde PC puedes seguir las indicaciones que dan en su GitHub, https://github.com/CompVis/stable-diffusion o en su versión con interfaz gráfica que me gusta mucho más https://github.com/AUTOMATIC1111/stable-diffusion-webui y en windows y Linux puedes usar este ejecutable para instalarlo Stable Diffusion UI v2
Ya sabes que necesitas una GPU potente de unos 8Gb de RAM mínimo para que funcione fluidamente. Puedes hacer que tire de CPU, pero es muchísimo más lento y también dependerá del procesador que tengas. Así que si tu equipo es antiguo tendrás que resignarte a utilizar los Colab o algún método de pago para usar Stable Diffusion
Las ventajas de tenerlo en tu PC, es que es mucho más rápido utilizarlo, no tienes que instalar ni configurar nada, tan solo haciéndolo una vez es suficiente, a partir de ahí todo es mucho más rápido.
Además otra razón por la que me gusta mucho es porque puedo integrarlo en otros scripts y aprovechar las imágenes generadas metiéndolas directamente en el workflow de las tareas lo que es un punto muy importante.
Colab oficial Diffusers
Es muy similar al Colab que he recomendado arriba, se ejecuta casi igual, NO hay que subir el modelo, pero no tiene interfaz gráficay apra modificar cualquier opción hay que ir cambiando las opcines de los bloques de código y modificándolos para ajustarlo a lo que necesitamos.
Además no podemos utilizar la opción de image to image que es muy atractiva.
Puedes acceder desde este https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb
Tenemos filtro para imágenes adultas, el famoso NSFW pero puedes desactivarlo utilizando este código, es decir creando una celda en el documento con
def dummy_checker(images, **kwargs): return images, False http://pipe.safety_checker = dummy_checker
Hay que ponerlo justo después de la celda
pipe = pipe.to("cuda")
y ejecutarlo
Colab Stable Diffusion Infinity
En este Colab podemos utilizar la herramienta Infinity, que nos permite completar imágenes. Crea contenido a partir de la imagen existente. Una auténtica pasada.
Dreamboth con Stable Diffusion
Esta es la implementación de Dreamboth de Google con Stable Diffuision que permite a partir de unas pocas imágenes de un apersona obtener resultados personalizados con la cara que el demos.
Una forma increíble de personalizar las imágenes
https://github.com/XavierXiao/Dreambooth-Stable-Diffusion
Otros Colabs
Ya sabes como se trabaja en Colab, pues te dejo otros que voy encontrando pra que utilices el que más te gusta. Incluso si quieres puedes hacer una copia y modificarlo a tu gusto para tener tu propia versión
- https://colab.research.google.com/drive/1AfAmwLMd_Vx33O9IwY2TmO9wKZ8ABRRa
- https://colab.research.google.com/drive/1Iy-xW9t1-OQWhb0hNxueGij8phCyluOh#scrollTo=B977dVS6AZcL
- Stable Diffusion for lossy image compression https://colab.research.google.com/drive/1Ci1VYHuFJK5eOX9TB0Mq4NsqkeDrMaaH?usp=sharing
- Implementación con keras https://colab.research.google.com/drive/1zVTa4mLeM_w44WaFwl7utTaa6JcaH1zK
Desde su web oficial
Una forma sencilla de utilizarlo, como si usas Dall-e 2 en OpenAI, pero si usas la plataforma el servicio es de pago. https://stability.ai/
Desde HuggingFace
Una opción interesante para probarlo rápidamente y sacarnos unas imágenes, solo para ver como funciona, pro faltan muchas opciones que utilizaremos si vamos a ponernos en serio con esto.
https://huggingface.co/spaces/stabilityai/stable-diffusion
Utilizando AWS o algún servicio Cloud
Se puede utilizar el modelo de Stable Diffusion haciéndolo correr en hardware en cloud, un servicio clásico es AWS de Amazon. Ahora mismo estoy ahciendo pruebas con instancias EC2 para trabajar con diferentes algoritmos. Os contaré qué tal.
Otros servicios de pago
Hay muchos y cada vez salen más, desde implemetnaciones en stock de fotos a webs que nos permiten integraciones con API. De momento me ha llamado la atención esta, aunque personalmente voy a utilizar los servicios gratuitos
Herramientas para prompt engineering
El prompt engineering es la parte referida ala generación del prompt, es decir la frase con la que alimentamos el modelo para que genere nuestras imágenes. No es un tema trivial y hay que saber muy bien como utilizarlo para obtener grandes resultados.
Una herramienta muy útil para aprender es Lexica, donde vemos imágenes y el prompt que han usado, el seed y el guidance scale.
Navegando por ahí aprenderás que tipo de elementos tienes que asignar al promp para obtener e tipo de resultado que buscas.