Stable Diffusion: Tutoriales y cosas interesantes para generar imágenes mediante IA

Stable Diffusion es una IA generativa de imágenes capaz de crear una imagen a partir de una descripción en texto. Las más importantes son Dall-E, Midjourney, y esta, Stable Diffussion. Las dos primeras tienen varias pegas, siendo la primera que son de pago (aunque te dejan hacer una cierta cantidad de imágenes de prueba), pero la tercera es Open Source y se puede usar libremente sin ningún tipo de limitación, instalarla en local en tu Pc (con lo que no dependes de ningún servicio online) y además tiene muchísima comunidad detrás entrenando modelos específicos para crear imágenes fotorrealistas, crear Anime, imitar estilos de casi cualquier dibujante, etc... Además es muy fácil entrenar un modelo tú mismo para hacer lo mencionado o incluir en las imágenes a personas, personajes, estilos, etc...

Para crear una imagen, una vez en su interfaz, hay un formulario que tiene arriba dos líneas... En la primera es donde escribes la descripción y los términos que quieres que cumplan los componentes de la imagen (tipo de imagen, si es una foto, una ilustración o un render, qué personajes salen, que están haciendo, su descripción detallada, dónde se encuentran, como es el escenario, la iluminación, etc...). Esto es lo que se llama un 'prompt', el término que se usa para las descripciones. La segunda línea es el llamado 'prompt negativo', y es en el que se pone lo que NO queremos que tenga la imagen, los problemas de la imagen que queremos evitar, etc... Y nos sirve para mejorar la calidad de imagen, descartar imágenes borrosas, con personajes deformes, etc...

Luego hay una serie de parámetros que también podemos controlar, como la resolución de la imagen, el número de iteracciones que tendrá que hacer la IA para sacar la imagen final (a más iteraciones más detalle añadido, aunque en ciertos tipos de imágenes conviene que sea bajo), y lo literal que queremos que sea la IA a la hora de interpretar nuestra descripción (a veces es interesante dejar que sea flexible y que no aplique todo lo de la descripción para que sea más creativa).

Me gustaría probarlo, ¿qué tengo que hacer?


Lo primero que hay que tener en cuenta es que necesitas tener una gráfica nVidia (ya que todo se basa en CUDA) más o menos potente (tampoco es necesario que sea lo último de lo último ni mucho menos) que como mínimo tenga 6 GB de VRAM, 8 GB para poder procesar tus propios modelos (aunque si no los tuviera y aún así quisieras entrenar a la IA, también se puede hacer online mediante Google Colab y servicios similares). Hay una guía muy buena que explica paso a paso cómo instalar todo lo necesario, desde Python hasta las dependencias y Stable Diffusion WebUI, así cómo que modelos básicos descargar y dónde conseguir más, todo con sus enlaces correspondientes. Es la del siguiente enlace:

https://rentry.co/UnofficialUnstableGuide

Luego, una vez lo tienes todo instalando y funcionando (usa una interfaz gráfica a través del navegador de internet pero de forma local, es decir, que no necesitas internet para usarla), puedes descargar muchos modelos de la comunidad que mejoran muchísimo su potencial, al estar entrenados para mejorar las imágenes de tipos específicos (hay modelos para fotografía ultrarrealista, un montón para Anime y Hentai de todos los estilos que se os ocurran, para paisajes, para fantasía, etc...). Son lo que se conocen como Checkpoint y para usarlos basta con descargarlos y meterlos en la carpeta models/Stable-Diffusion para que ya se puedan seleccionar en la interfaz. Además de estos modelos 'grandes', hay otros más pequeños para cosas mucho más concretas, como incluir personajes o personas en las imágenes o estilos artísticos nuevos, los que se conocen como LoRa y Embbedings, que van en las carpetas del mismo nombre. Tienen la ventaja de que se pueden usar conjuntamente con cualquier modelo 'grande' y puedes incluso usar varios a la vez, ocupando muchísimo menos. Además, estos son fáciles de crear para cualquiera y puedes entrenar los tuyos propios tú mismo con tan sólo tener, por ejemplo, 20 o 30 imágenes del personaje o estilo que quieras incluir (logicamente, a mayor cantidad de imágenes para entrenar, mejores resultados).

De los checkpoints, recomiendo como imprescindibles los siguientes:

- Anything V. 3 para anime
- Realistic Vision V 1.3 para imágenes fotorrealistas y también es muy bueno Art & Eros en el mismo estilo
- Illuminati Diffusion para imágenes de mayor realismo y alto contraste, siendo este un modelo de Stable Diffusion 2.1 (la mayoría de los modelos disponibles y los más populares son de la versión 1.5 de Stable Diffusion)
- DreamShaper para ilustraciones en todo tipo de estilos
- Los modelos de la serie Orangemix (AbyssOrangeMix, EerieOrangeMix y BloodOrangeMix) para anime y hentai (unos están más indicados para lo primero y otros para lo segundo, y también unos van más en un estilo de ilustración y otros más en estilo anime de Tv y cine)

Luego lo demás es opcional, y el tema de los LoRa y los Embeddings no es necesario en absoluto salvo que queras usar el estilo muy concreto de algún dibujante o meter a tu personaje favorito de anime o videojuegos, y hay muchísimos.

Las webs de referencia para descargarlos son dos:

- Civitai, que es la que más uso y mucho más visual con ejemplos de cada modelo (y hasta puedes ver los 'prompts' de las imágenes, es decir, la secuencia y configuración para crearlas e incluso su semilla -por lo que la puedes replicar exactamente-): https://civitai.com/

- Hugginface, que es más 'árida' ya que es del estilo de Github, pero por contra allí también encuentras modelos que no están en Civitai, y cuya dirección es la siguiente: https://huggingface.co/


Y luego, para aprender y resolver cualquier duda, es casi imprescindible visitar el Discord de 'Unstable Diffusion', a mí me ha ayudado muchísimo lo que se habla por allí, y he descubierto cosas como lo de los modelos experimentales ControlNet... Su enlace de invitación es este: https://discord.com/invite/unstablediffusion

Tengo una duda desde la ignorancia. Imaginad que quiero hacer un cómic con unos personajes que se repiten en múltiples imágenes (viñetas). ¿Hay alguna forma de generar diferentes ilustraciones de un personaje que hayas definido antes?


Si, se puede entrenar un embedding o un LoRA para que la IA 'aprenda' cómo es el personaje, que ropa lleva, etc... y desde ese momento sea capaz de presentarlo en cualquier pose y respetando la ropa y su aspecto de forma consistente... También tiene lo interesante de poder regular el grado de fidelidad del LoRA, y de esta forma crear nuevos personajes con características del personaje del LoRA o mezclaro con otro (y vale también para introducir persona reales y mezclarlas con otras, por ejemplo Scarlett Johansson al 50% con Winona Ryder). Además también podrás crear el personaje en otros 'estilos', ya sea haciendo un dibujo animado una persona real o al contrario...

Hay en Youtube un tutorial muy bueno para crear tus propios LoRAs, pero recomiendo hacerlo cuando ya se tenga algo de rodaje con Stable Diffusion:



Posteriormente, un compañero del discord de Unstable Diffusion publicó una guía muy interesante sobre la creación de LoRAs que permite hacerlos de forma mucho más optimizada que con el método del vídeo de Aitrepreneur anterior, aunque es algo más avanzado, que podéis encontrar aquí:

https://civitai.com/models/22530

Otra cosa interesante sobre el mismo tema, que puede ayudar mucho a conseguir que los personajes de una imagen salgan de la forma que queramos, son los modelos especiales ControlNet, que añaden una capa extra de control a la imagen generada partiendo de una imagen previa, y de lo que hablan en el siguiente vídeo:



Uno de los puntos débiles de las IA de este tipo es a la hora de generar manos o dedos... Ha salido una nueva extensión de Stable Diffusion WebUI para corregir las manos... Esta de la que hablan en el siguiente vídeo:



Además, ha salido otra extensión muy útil que permite al generar una imagen, dividir esta en secciones y poder definir un personaje concreto para cada una, incluso usando LoRAs independientes en cada sección, lo que permite (por fin) controlar por completo la generación de grupos de personajes y lo que hacen. También hay un vídeo sobre esto:



De esta forma, poco a poco van mejorando y limando los problemillas ya conocidos...

En cuanto a las imágenes que se pueden llegar a generar, algunos ejemplos con el modelo Illuminati Diffusion:

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen

Y otros ejemplos de cosas interesantes que se pueden hacer usando los modelos ControlNet (unos modelos especiales que permiten utilizar una imagen de referencia para generar la nueva imagen con características de la mencionada imagen), en este caso convertir un boceto que hice hace algunos años de la valkiria Thyra del arcade clásico 'Gauntlet' en algo mucho más espectacular:

Boceto:

Imagen

Varias versiones de Thyra a partir del boceto anterior:

Imagen
Imagen
Imagen
Imagen
Imagen
Gracias por el hilo. Me uno a él e intentaré sacarle provecho. :D
En estos últimos días, he estado entrenando varios LoRAs, algunos con resultados espectaculares... Cuando uno entra en Civitai, se puede ver allí que hay una gran mayoría de contenido de anime/manga en lo que refiere a personajes y estilos artísticos, ya que parece que Stable Diffusion es muy popular en China y Japón. Sin embargo, se echan en falta más estilos artísticos occidentales, así que se me ocurrió probar a crear un LoRA para entrenar el estilo artístico de Azpiri, al ser este muy particular y muy diferente de cualquier estilo oriental. El resultado me ha sorpendido hasta a mí, podéis juzgar por vosotros mismos en las siguientes imágenes:

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen

Y sí, lo más curioso es que es posible incluso recrear a la mismísima Lorna a pesar de no haber entrenado el LoRA específicamente para ello, con sólo poner en el prompt algunas de sus características, como pelo largo rubio, maquillaje, y temática de ciencia ficción o hacer referencia al espacio, como se puede ver en algunas de las últimas imágenes.

Posteriormente, ayer concretamente, un compañero del discord de Unstable Diffusion publicó una guía muy interesante sobre la creación de LoRAs que permite hacerlos de forma mucho más optimizada que con el método del vídeo de Aitrepreneur, que podéis encontrar aquí:

https://civitai.com/models/22530

De esta forma, volví a crear el LoRA de Azpiri y ahora ocupa mucho menos (ha pasado de 144 MB a sólo 37) y además ha mejorado el detalle en fondos, caras y ojos de los personajes... Eso sí, ahora parece que se ha vuelto algo más 'horny', por decirlo de alguna manera, pues tiene tendencia a generar a las chicas con poca ropa o con el pecho desnudo (algo lógico dado que en el propio material de origen las hay), por lo que tengo que poner pasabras como 'nipples' o 'nude' en el prompt negativo para que me aparezcan con más ropa. Ahora pondré algunas imágenes más de ejemplo de este segundo LoRA:

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Os voy a explicar un poco lo que suelo hacer cuando escribo un prompt, a modo de mini-tutorial sobre como estructurar los 'prompts' para conseguir mejores imágenes:

Mis prompt no suelen ser muy complejos, la clave está en usar el Negative Prompt para mejorar la calidad de la imagen y en usar la información correctamente estructurada. Normalmente tiene más peso lo primero que se escribe, y se debe seguir un orden en la descripción, más o menos así: Tipo de imagen que se quiere generar (si es una foto, una ilustración, un render 3D, etc..), personajes que aparecen (una mujer y dos hombres, etc...), descripción del personaje (caracterñisticas físicas, ropa, etc...), que está haciendo (sentado, corriendo, tomando una taza de café, etc...), elementos que hay alrededor del personaje o al fondo, dónde se encuentran los personajes (escenario) y finalmente, cómo es la iluminación, los planos de cámara e incluso la configuración de la cámara de fotos (modelo de la cámara, óptica, etc...). Además, también es importante usar las opciones que hay para dar más peso a ciertos términos de la descripción sobre otros. Si pones una palabra o conjunto de ellas entre paréntesis, le estás indicando a la IA que le dé más importancia a dicho término. Cuantos más paréntesis le pongas, más peso va a tener. También se puede poner en su lugar con el siguiente formato: (pelo rubio:1.2), de esta forma le estás indicando la importancia en un porcentaje en base uno (es decir, en el ejemplo sería un 120%). Esto se puede usar también para restarle importancia poniendo valores por debajo de 1 (o escribir el término entre corchetes en lugar de paréntesis).

Luego en el Prompt Negativo, hay cosas que te facilitan mucho la labor sin tener que escribir prompts kilométricos, como es usar embbedings negativos. Los embeddings es lo que había antes de la aparición de los LoRA y tienen la misma función, es decir, incluir personajes, estilos o conceptos, y se usan como si fueran un término más del prompt, simplemente escribiendo su nombre. Hay varios para el prompt negativo que se usan para desechar imágenes de mala calidad, evitar en la medida de lo posible personajes deformes y conseguir mejores manos. En mi caso particular uso EasyNegative y bad-hands-5. Simplemente con estos dos, y como mucho alguna cosa más para eliminar cosas de las imágenes que vayas probando (por ejemplo logos o marcas de agua) ya consigues imágenes de buena calidad en general. Os voy a mostrar un ejemplo de hasta que punto cambia una imagen usar el EasyNegative:

La siguiente imagen se ha generado con el siguiente prompt usando la versión 2 de mi LoRA de Azpiri:

1woman, blonde hair, short hair, sword, wielding, armor, huge breasts, navel, dragon, columns, lava, detailed background, stone wall in the background<lora:AzpiriV4:0.8>

Y en el prompt negativo únicamente esto:

EasyNegative, bad-hands-5

Resultado:

Imagen

(sí, ya sé que está sujetando la espada por el lado equivocado ;D, es una imagen random que he generado de forma rápida para el ejemplo)

Y si ahora quito todo lo del prompt negativo, manteniendo todo lo demás y usando la misma semilla (un código numérico que se genera con cada imagen que te permite volver a reproducirla exactamente y comprobar los cambios usando modelos diferentes o cambiando cosas de la descripción), la imagen cambia a esto:

Imagen

Como véis, mucho peor, manca, y con fallos de todo tipo, sin detalle, etc...

Otra combinación 'que hace magia' en el prompt negativo sin necesidad de usar embbedings es simplemente escribir esto:

(worst quality, low quality:1.4)

En la imagen anterior, lo que resulta es lo siguiente:

Imagen

Como podéis ver, algo intermedio pero más cercano a la primera imagen que a la segunda, ya con una calidad más aceptable (aunque el bad-hands-5 le vendría genial para arreglar esas manos).

En el caso de Stable Diffusion, a la hora de escribir el prompt se puede hacer de dos formas, como habéis visto en el ejemplo, que es usando etiquetas estandarizadas en los servicios de alojamiento de imágenes de Anime y Hentai (Danbooru se llaman, el mismo nombre que un servicio de estos muy famoso: https://danbooru.donmai.us/), o usando el modo Clip, que es en lenguaje natural directamente, como cuando le hablas a ChatGPT. Sin embargo, lo más común es usar el de etiquetas de anime porque es más directo a la hora de cambiar cosas y se puede usar con otras IA diferentes. El Clip se suele usar más con imágenes realistas (aunque no sé la razón). Y siempre en inglés, a pesar de que entiende el español, pero en inglés es mucho más efectivo.

Sobre los negative embeddings, hay algunos que están hechos para usar específicamente con uno o más modelos y otros generales, pero en general, lo más recomendable es usar EasyNegative, bad-hands-5 (este ha desaparecido de Civitai, no sé por qué), bad-artist, badhandv4... Generalmente basta con el primero (que en mi opinión es el mejor) y uno de los otros, (por ejemplo badhandv4), y también es buena idea poner en el prompt negativo (worst quality, low quality:1.4). Con eso en realidad no hace falta más, a veces basta con sólo EasyNegative y muchas otras ni siquiera hacen falta los embeddings. Es cuestion de probar. Yo sólo uso los dos primeros. También hay que comentar que a veces es contraproducente poner muchos términos en el Negative Prompt (en algunos checkpoints), y otras en los que los Negative Embeddings pueden afectar a un estilo que estés usando. Siempre conveniente usar el método de prueba y error.

Se pueden encontrar la mayoría en Civitai haciendo una búsqueda, aquí: https://civitai.com/tag/negative%20embedding

Y ahora voy con lo último que he estado probando. En primer lugar estuve probando un LoRA para hacer mundos en miniatura con resultados tan espectaculares como estos:

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen
Imagen

Recomiendo probarlo con los checkpoints (modelos completos) RevAnimated 1.1 y RPG4, por el nivel de detalle que aportan. Se puede descargar el LoRA mencionado de aquí: https://civitai.com/models/28531/miniature-world-style

Y en segundo lugar, he estado probando un servicio gratuíto online que convierte imágenes 2D en 3D usando una IA, que luego se pueden descargar como un gif animado o un mp4, y otros formatos como 3D SBS para verlas en VR o en una tele con 3D stereoscópico... He hecho pruebas con resultados como estos:

Imagen
Imagen
Imagen
Imagen

Tan sólo hay que ir y registrarse aquí: https://convert.leiapix.com/

Como mejor quedan los gifs es descargando las animaciones en mp4 y luego pasándolas a gif en Convertio, que da muy buena calidad: https://convertio.co/es/mp4-gif/
3 respuestas