Previamente hablamos de Stable Diffusion, una inteligencia artificial libre para generar imágenes basadas en texto o prompts al nivel de modelos como Dalle 2 e Imagen.
Al ser un modelo gratuito se ha utilizado en un gran número de aplicaciones y permite a la comunidad experimentar con él. En uno de estos experimentos se integró con DreamBooth, un modelo desarrollado por Google para hacer un entrenamiento personalizado a modelos de difusión obteniendo estos resultados:
Así es, mi rostro (y muy posiblemente el tuyo) en distintos estilos, técnicas de dibujo, formas y básicamente la creatividad de tu prompt es el límite.
En este blog aprenderás cómo replicarlo totalmente gratis, pero antes, algo de contexto sobre cómo se llegó a estos resultados. 🚀
DreamBooth es una técnica desarrollada por el equipo de Google para personalizar entrenamientos de modelos generadores de imágenes.
Básicamente, consiste en entregar cierta cantidad de imágenes al modelo y también el concepto que representa. Por ejemplo, si quiero personalizarlo con mi rostro que es el de una persona, entonces el concepto es “person”. Si lo hago con mi mascota que es una perrita, el concepto será “dog”, con un reloj, el concepto será “clock”.
DreamBooth genera una representación personalizada del nuevo concepto con el que se le entrenó, por ejemplo, alarconc person y lo asocia a las imágenes que se proporcionaron.
También a su vez entrena la red con el concepto que se le indico, ya sea “person”, “dog” o el caso que sea el cual servirá como regularizador, con el fin de que sea capaz de diferenciar el concepto nuevo que se le enseña como el de la clase global (“person”, “dog”, “clock”…etc), en el proceso final la red neuronal aprende a crear esos conceptos nuevos con una resolución superior.
La inteligencia artificial avanza a pasos agigantados. El día que entrené este modelo era necesario contar con al menos con 24 GB de GPU (unidad de video), lo que sería más o menos como una tarjeta gráfica nvidia 3090 que no tenía.
Así que simplemente utilice una instancia virtual en AWS (EC2) con las características que requería, monte un entorno de anaconda con Docker y seguí los pasos de este repositorio https://github.com/JoePenna/Dreambooth-Stable-Diffusion, los resultados de este entrenamiento son mejores que los de que se pueden obtener con google colab, pero el proceso es mas complicado y cuesta dinero ya que se debe alquilar procesamiento en la nube, pero si en local cuentas con al menos 24 GB de GPU te invito a seguir los pasos del repositorio mencionado anteriormente, de no ser asi en este blog te enseño paso a paso como hacerlo en google colab totalmente gratis y con muy buenos resultados!!! 🚀
Como ves, conocer de cloud computing y docker también trae muchas ventajas en ciencia de datos así que te invito a tomar los cursos de fundamentos de aws y docker
Hoy 3 de octubre de 2022, no es necesario 24 GB de GPU, se requiere menos de 12 y es lo suficiente para ejecutarlo con google colab. Estos son los pasos a seguir:
HuggingFace es la mayor comunidad de inteligencia artificial libre, en ella puedes encontrar, modelos pre entrenados, spaces, datasets y muchos recursos mas.
Stable Diffusion es un modelo muy potente y con grandes cambios en la economía actual por eso hay que aceptar los términos y condiciones de su uso y conocer sus limitantes y sesgos, actualmente no se necesita confirmacion de terminos, de modo que si no te sale para aceptarlos, no pasa nada y puedes continuar con el tutorial
Si ya lo tienes solo hace falta copiar el token, que se usará más adelante.
Es un notebook creado previamente que contiene todo lo necesario para ejecutar el entrenamiento
es importante que se este ejecutando un entorno de trabajo con GPU para el entrenamiento.
En esta sección debes ejecutar la celda y copiar el token generado en el paso 3
Ejecutar las celdas hasta este punto en donde hice estos cambios pues quiero que se me me identifique como “alarconc”. También quiero que la información del entrenamiento se almacene en mi drive, a lo que le debo dar permisos posteriormente al ejecutar esta celda.
Y posteriormente esta configuracion en donde especifico donde quedaran las imagenes con las que entrenaremos el modelo y que para mi caso quiero que se me asocie al conepto de persona “person”
No debes ejecutar esta celda
Subir 5 o 7 imágenes tuyas en la carpeta con el nombre que dejaste. Para mi caso alarconc, esto se logra simplemente arrastrando las imágenes:
Es momento de entrenar, ejecuta las celdas que falten hasta este punto y remplaza en los parámetros por el nombre que definiste previamente, en mi caso “alarconc”. Este proceso puede tardar un poco.
tambien puedes probar cambiar ciertos valores como:
en lo personal lo deje con los parametros por default que son los que ves en la imagen.
Ejecutar las siguientes celdas para guardar tu modelo cpkt. Este modelo lo puedes usar en cualquier herramienta de generación automática como lo es AUTOMATIC1111 sin tener que re entrenar el modelo.
Ejecutar las celdas hasta este punto, puedes dejar -1 para que genere un resultado aleatorio siempre o cualquier número específico para replicar algún resultado.
SIEMPRE debes ejecutarlo con la configuración que creaste en el punto 8, de esta forma, en mi caso alarconc person. Y listo, disfruta generando imágenes en esta celda, y cambiando los parámetros de cantidad de imágenes, número de iteraciones, etc etc.
La siguiente celda que proporciona una interfaz gráfica de Gradio UI que también puedes usar, no hay diferencia con el punto 13 en resultados, pero puede ser mas cómoda de usar
¡Ahora puedes generar tu rostro en distintos estilos! Recuerda que todo gran poder conlleva una gran responsabilidad, por ello, no entregues el modelo cpkt a extraños. Esta tecnología cambiara la economía de cómo se hacen ediciones y creaciones digitales, así que úsala con cuidado.
Créditos a los owners de los siguientes repositorios. Puedes agradecer con un star ⭐ o aportando a sus repos:
https://github.com/ShivamShrirao/diffusers/tree/main/examples/dreambooth
https://github.com/JoePenna/Dreambooth-Stable-Diffusion (Si quieres resultados mas increibles puedes seguir los pasos del notebook en este repositorio pero requiere al menos 24 GB de GPU)
En caso de que quieras descubrir qué son las redes neuronales artificiales, te invito a tomar el Curso de redes Neuronales de Python y Keras donde explico sus fundamentos.
Y claro algunos enlaces que te pueden interesar:
Para aprender más de estos modelos de difusión, y generar más imágenes con diferentes estilos, te invito a tomar el Curso de Generación de Imágenes con IA: Dall-E, Midjourney y Stable Diffusion del que tengo el gusto de acompañarte como profesor. 🚀
¡Sígueme en Instagram/Twitter/TikTok como @alarcon7a, espero ver tus imágenes generadas y comparte tus creaciones con la comunidad 🙂
Wow, estoy sorprendido con lo que se puede lograr.
Me gusta cada día más como avanza la esta rama de la tecnología.
Sería interesante crear una ruta de aprendizaje que solo tome los componentes de la escuela de Data Science e IA con los de Diseño asociados al arte para formar una ruta de arte digital con base en la IA.
Maravillosa idea, me uniría sin duda
¡Esto está increíble! 🤯🤯🤯🤯🤯
No logro hacerlo funcionar 😥
Ya probé con el consejo de @brunoorozcomeja pero yo acepté los términos y condiciones al momento de crear la cuenta en Hugging Face.
Ya lo he intentado varias veces sin éxito 😪
Les agradezco por favor su ayuda!
Me auto respondo… aunque realmente molesté a @alarcon7a 😚
Aquí está la manzana de mi discordia, un archivo .HEIC intruso en medio de mis imágenes 🙄
Debemos asegurarnos de subir solo archivos .jpg!!
Mi modelo ha comenzado a entrenar exitosamente 😍
Ya les compartiré los resultados 🤩
Ya me veo haciendo unos Avatares bien finos de mi gato Muffin 😽
Hola Alarcon7a y comunidad.
Realicé los pasos al pie de la letra (install pre dependencias, conectar drive, crear cuentas, aceptar términos, cambiar keyword y subir algunas imágenes), pero me da un error que no logro entender del todo (no sé python aún).
Entiendo colapsó la memoría o no encontró algo, por los mensaje:
Espero puedan ayudarme 😄
Ya lo solucioné… por si les pasa, en mi caso la solución fue así:
Abrí cada foto, una por una, de las que cargué en el Collab (con doble clic las abren), algunas, se cargaron de forma corrupta y estaban solo en blanco, las quité y se solucionó.
Una chimba
Super el tutorial!
Tutoriales que valen oro!!
No puedo esperar para probarlo ☺️
RuntimeError: CUDA outof memory. Tried to allocate 1024.00 MiB (GPU 0; 14.76 GiB total capacity; 12.30 GiB already allocated; 959.75 MiB free; 12.58 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF Steps: 0% 0/900 [00:02<?, ?it/s]
Alguién sabe por qué me sale ese error? o cómo solucionarlo?
A mi también me aparece
Tienes que ejecutar el Install xformers from precompiled wheel
Segun se puede leer no tienes el espacio requerido para ejecutar
intenta levantar nuevamente la instancia y valida el formato de las fotos, y que no supere los 900 pasos el entrenamiento, al parecer no tienes espacio de GPU
Si lo resolví, tiene que ver con el GPU. Gracias por el apoyo.
Me gustaría saber qué hiciste para solucionar el problema de la memoria, ya intenté levantar instancias diferentes, mi configuraciòn esta en 800 pasos y todas mis imágenes son del mismo formato (jpg)
las fotos tiene que ser similares o muy diferentes?
Selfies de tu rostro mas que todo, si se puede en distintas formas y luz
👀 ¡Qué genial!, justo estaba buscando como hacer esto.
Quien hubiera pensado hace 50 años atrás, que un código fuera capaz de generar imágenes tan realistas y con la calidad de un diseñador profesional. Que nos espera de aquí a 20 o tan solo 10 Años? Esto es una locura!!!
Súper genial! Ya logré probarla y me gustó mucho, seguiré haciendo pruebas, pero mi duda es si ya genere mi archivo .cpkt tengo que volver a generarlo si quiero hacer todo el proceso de nuevo?
no, no hace falta solo lo reempazas o lo usas con AUTOMATIC1111
Que super lo estoy probando !!!
Ya lo probé, está genial, supongo que solo me falta agregar más fotos para ser más preciso.
Muchas gracias por compartir el conocimiento, estuve jugando con el el notebook y haciendo las pruebas con mis imagenes
Al tratar de iniciar el entrenamiento me sale:
W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
y no hace nada mas… ¿alguien tiene idea de que puede ser?
Tengo exáctamente el mismo problema y no tengo idea de que solución es necesaria. Espero alguien nos responda pronto
Muchas gracias profe, genial!!!
)
Primer prueba y esta genial, hay que seguir aprendiendo…
¡Excelente tutorial!
Lo Voy a probar.
Tengo que aprender a entrenarla con mis lentes, no los tomó muy bien jajaj pero excelente guía!
Recomendaciones para los prompt para obtener la foto como rey del norte?
La de GoT te quedo genial, que descripción usaste 😱
Tengo unas ganas inmensa de implementar esto, solo por curiosidad de los resultados, muchas gracias por el tutorial.
Wow sin duda esta será nueva forma de como se creara Arte Dijital.🤍
Genial!
Sorprendente… gracias!
Hola amigosss, unas dudas, por lo menos para usar otras fotos que no sean las que ya use, a que paso deberia volver o que hago con las anteriores (no se si se vayan a mezclar o algo por el estilo). Y la otra, cuando vaya a abrir de nuevo para hacer mas, tendre que hacer todo ese proceso de nuevo (el del tuto) ??? gracias
El notebook a día de hoy no es idéntico al del día que subió el blog, tiene otras celdas extrañas y genera esos errores.
A 20 de diciembre el notebook actualmente no está tal cual aparece en este blog y está orientado a perros, aun así, cambié de perro a persona, pero las celdas de las que no habla salen con error y, por ende, no me sale ninguna imagen. Todas mis imágenes están en .jpg
Sale error
NameError Traceback (most recent call last)
<ipython-input-51-49331e5cb93e> in <module>
9
10 with autocast(“cuda”), torch.inference_mode():
—> 11 images = pipe([prompt] * num_samples, height=height, width=width, num_inference_steps=num_inference_steps, guidance_scale=guidance_scale, generator=g_cuda).images
12
13 for img in images:
NameError: name ‘pipe’ is not defined
ejcutaste las celdas de instalcion de librerias y la previa al entrenamiento?
asi es, paso a paso. Se puede empezar desde cero en limpio?
Otra cosa…las imagenes deben ser de 512 px de medida, cierto?
Es que en el punto 8 dices que no ejecute esa celda…pero si no lo hago no pasa nada…y luego dices que si…pero en colab dice que lo haga…
🤯🤯
Estoy esperando tener unas horas libre para realizaro, excelente tutorial.
Error en la celda inference
Error no file named model_index.json found in directory /content/drive/MyDrive/stable_diffusion_weights/sks.
muy bien!!
Hola tengo el siguiente error,
OSError: Error no file named model_index.json found in directory /content/drive/MyDrive/stable_diffusion_weights/Martin04.
Ya acepte los terminos y condiciones pero a un me sigue saliendo el error. A alguien le paso lo mismo? ![](
Pudiste resolverlo? Tengo el mismo error
Hola, tenia el mismo error y lo unico que tienes que hacer es ir a
Specify the weights directory to use (leave blank for latest)
WEIGHTS_DIR:________________
en el collab y pones esto: CompVis/stable-diffusion-v1-4
Hola, tengo el mismo error y no sé cual es el collab
Hola, me sale el siguiente error y no tengo ni idea como solucionarlo:
#@markdown Specify the weights directory to use (leave blank for latest) WEIGHTS_DIR = "" #@param {type:"string"} if WEIGHTS_DIR == "": from natsort import natsorted from glob import glob import os WEIGHTS_DIR = natsorted(glob(OUTPUT_DIR + os.sep + "*"))[-1] print(f"[*] WEIGHTS_DIR={WEIGHTS_DIR}")```
IMPORTANTE PARA LOS QUE TENGAN ESTE ERROR
.
WARNING : the following values were not passed to
.
.
from accelerate.utils import write_basic_config # Write the configuration file write_basic_config()
.
.
.
.
Suerte chicos
He intentado seguir este blog pero no he logrado completarlo, y es que al tratar de generar imágenes, me ha salido un error de espacio, intenté modificar el max_steps a 700 y sin éxito.
Antes había notado estos warnings al correr el Interference
/usr/local/lib/python3.9/dist-packages/transformers/models/clip/feature_extraction_clip.py:28: FutureWarning: The class CLIPFeatureExtractor is deprecated and will be removed inversion5of Transformers. Please use CLIPImageProcessor instead. warnings.warn( /usr/local/lib/python3.9/dist-packages/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py:106: FutureWarning: The configuration fileof this scheduler: DDIMScheduler { "_class_name": "DDIMScheduler", "_diffusers_version": "0.14.0.dev0", "beta_end": 0.012, "beta_schedule": "scaled_linear", "beta_start": 0.00085, "clip_sample": false, "num_train_timesteps": 1000, "prediction_type": "epsilon", "set_alpha_to_one": false, "steps_offset": 0, "trained_betas": null } is outdated. `steps_offset` should be setto1 instead of0. Please make sure to update the config accordingly as leaving `steps_offset` might led to incorrect results in future versions. If you have downloaded this checkpoint fromthe Hugging Face Hub, it would be very nice if you could opena Pull request forthe `scheduler/scheduler_config.json` file deprecate("steps_offset!=1", "1.0.0", deprecation_message, standard_warn=False) You have disabled the safety checker for <class 'diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion.StableDiffusionPipeline'> by passing `safety_checker=None`. Ensure that you abide tothe conditions ofthe Stable Diffusion license anddonot expose unfiltered results in services or applications opentothe public. Both the diffusers team and Hugging Face strongly recommend to keep the safety filter enabled in all public facing circumstances, disabling it only for use-cases that involve analyzing network behavior or auditing its results. For more information, please have a look athttps://github.com/huggingface/diffusers/pull/254
¿Cuando nos enseñaran hacer videos con stable Diffusion?
no me funciona, genera imágenes pero no se parecen a mi :.)
para volver a generar una imagen se tiene que correr todo otra vez ?.
para usar diferentes imágenes, que recomiendan, cambiar las imágenes de la carpeta o crear una nueva carpeta con las otras imágenes ?
Hola, el cuaderno que se descarga de google colab fue modificado, no se puede lograr ejecutar la parte: install xformers from precompiled wheel porque no aparece.
Si pueden darnos soporte lo agradecería porque me urge!
Cuanto tiempo hay que entrenar la IA?
A 20 de diciembre el notebook actualmente no está tal cual aparece en este blog y está orientado a perros, aun así, cambié de perro a persona, pero las celdas de las que no habla salen con error y, por ende, no me sale ninguna imagen.
Alguien tendra una idea de por que no me marca error, si genera las imagenes pero ninguna con parecido a las fotos que subi, solo crea la imagen con los parametros pero es como si no tomara en cuenta las fotos. Alguien le a pasado?
Simplemente increíble!!
llamen a dios 👀