DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

Utilizando el modelo de Stable Diffusion como base para DreamBooth es posible que cualquier persona entrene un modelo personalizado de generación de imagen.

Cuando te sientas por primera vez delante de un modelo de generación de imágenes como Stable Diffusion, Dall-E o MidJourney es muy probable que no sepas que pedirle, son tantas las posibilidades que nos quedamos en blanco.

A medida que vamos generando imágenes y vemos toda la variedad de resultados increíbles que vamos obteniendo, es inevitable pensar en cómo podríamos indicarle al modelo que nos genere a nosotros o a otra persona específica.

Así que, intento tras intento, buscamos un acercamiento más realista.

Imagina cuántas posibilidades tendríamos a nuestra disposición si en el modelo en cuestión existiera un token que reconociera a esa persona, como reconoce a celebridades como Elon Musk o Emma Watson.

Pues la noticia hoy es que ya es posible.

Finalmente puedes lograr que un modelo de generación de imágenes te reconozca y pedirle que te pinte al puro estilo de Van Gogh, que te ponga en la cima del Everest o encima de un árbol en el Amazonas.

Si te interesa este tema quédate con SaaSRadar y conocerás las tecnologías que te permitirán todo esto, DeamBooth junto a Stable Diffusion.

¿Qué es DreamBooth?

El 25 de agosto de 2022 un equipo de 6 investigadores de Google Research publican un paper titulado DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation donde presentaban al mundo a DreamBooth con esta frase:

“Es como una cabina de fotos, pero una vez que se captura el sujeto, se puede sintetizar donde sea que te lleven tus sueños…”

Por tanto, DreamBooth supone un nuevo enfoque para la personalización de los modelos de generación de imágenes especializándolos según las necesidades del usuario.

¿Cuántas imágenes necesito proporcionarle a DreamBooth?

Según el paper publicado por sus creadores, de 3 a 5 imágenes son suficientes para que el modelo pueda reconocer tu token, pero podemos proporcionarle más y obtener un resultado interesante.

Integración con Stable Diffusion

A finales de septiembre de 2022, Xavier Xiao sube a su Github un nuevo concepto: utilizar Stable Diffusion como base para DreamBooth y deja el código necesario.

En este espacio afirma que en la implementación original de DreamBooth se basa en el modelo Imagen de Google, sin embargo, un usuario común no tiene acceso a ese modelo ni a los pesos preentrenados del mismo.

Por tanto, su idea fue sustituir Imagen por Stable Diffusion y permitir que cualquier persona pudiera personalizar su modelo.

¿Cómo funciona?

DreamBooth requiere las imágenes de entrada, el token con el que la queremos asociar y una clase a la que pertenece. Esta clase es un token que ya existe en el modelo base (en este caso Stable Diffusion) y ayudará a contextualizar el nuevo objeto.

Por ejemplo, si queremos añadir a una persona específica, subimos las imágenes, especificamos como token su nombre y le indicamos que pertenece a la clase Persona.

Como resultado, obtenemos un modelo que podremos cargar de manera similar a como hacemos con el modelo oficial de Stable Diffusion y generar imágenes del nuevo objeto agregado.

Quiero entrenar un modelo con DreamBooth y Stable Diffusion, ¿cómo lo hago?

Puedes entrenar tu modelo utilizando tu propio hardware si tienes una tarjeta gráfica con al menos 12.5 GB de VRAM en estos momentos, este número se ha estado reduciendo constantemente.

Si no cuentas con estas prestaciones de hardware, entonces tienes la alternativa que usar Google Colab, del mismo modo que la utilizamos para ejecutar Stable Diffusion.

Si te vas por la segunda opción te recomiendo que utilices este cuaderno de Jupyter:

https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/sd_dreambooth_training.ipynb

Veamos como sería el proceso paso a paso.

1. Hacer clic en el enlace anterior para abrir Google Colab. Debe salirte en pantalla un resultado como este.

Cuaderno de Colab para el entrenamiento de un modelo utilizando DreamBooth + Stable Diffusion.

2. Nos desplazamos hasta la primera sección, Initial Setup y ejecutamos el código haciendo clic en el icono de Play. Al hacerlo, estaremos ejecutando 3 comandos que garantizan que se descarguen y se instalen las librerías de Python que necesita DreamBooth.

Paso 2 2 DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

3. En la siguiente sección (Login to the Hugging Face Hub) debemos iniciar sesión de Hugging Face.

4. Una vez logueados, debemos ir a buscar nuestro token de acceso. Lo puedes encontrar aquí.

Paso 4 DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

5. Copiamos el token de acceso y lo pegamos en el campo Token del cuaderno en Colab.

Paso 5 DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

6. Nos desplazamos al próximo paso del cuaderno de Colab para importar las librerías que necesitamos y simplemente hacemos clic en play.

7. Cuando ejecutamos el siguiente paso (Settings for teaching your new concept), se configurará la localización del modelo de Stable Diffusion que estaremos utilizando como base y las imágenes del nuevo concepto que queremos añadir.

En este punto debemos modificar las imágenes, añadiendo nuestras URL.

Paso 7 DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

8. En Setup and check the images you have just added se decargan las imágenes de las URL que le indicamos antes para un directorio en la estructura de Colab y se muestran a continuación.

Paso 8 DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

9. En el siguiente paso (Settings for your newly created concept) estaremos configurando el token con el que identificaremos a nuestro nuevo concepto y la clase a la que pertenece.

Paso 9 DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

10. Posteriormente se pasa a configurar de forma opcional la cantidad de imágenes de la clase del objeto que se van a generar, el directorio donde se van a almacenar y otros parámetros avanzados.

Paso 10 DreamBooth + Stable Diffusion: ya puedes entrenar un modelo personalizado con tus fotos

11. Una vez configurada la clase, pasamos al proceso principal, el entrenamiento del modelo. El mismo consta de 6 pasos:

  • Configurar las clases.
  • Generar las imágenes de la clase.
  • Cargar el modelo de Stable Diffusion.
  • Configurar los parámetros de entrenamiento.
  • Definir la función de entrenamiento.
  • Entrenar el modelo.

Este proceso puede demorar bastante tiempo, ten paciencia, estás entrenando un nuevo modelo con todo el procesamiento que esto implica.

12. Ejecutar el nuevo modelo. En este paso puedes publicar el modelo para que esté disponible para cualquier persona y ejecutarlo desde una interfaz gráfica que genera este cuaderno donde tendrás el habitual prompt de entrada y un indicador de la cantidad de imágenes que deseas generar.

Conclusiones

  • Ya es posible entrenar un modelo personalizado con nuevos conceptos.
  • Este proceso es posible gracias a el uso de Stable Diffusion, sustituyendo a Google Image como modelo base de DreamBooth.
  • Si quieres entrenar un modelo de este tipo vas a necesitar una tarjeta gráfica con más de 12.5 GB de VRAM.
  • Puedes realizar este proceso de forma gratuita o con un costo muy reducido utilizando hardware de terceros como el que proporciona Google Colab.

Y esto es todo. Los animo a probar este cuaderno de Colab, entrenar su propio modelo, y, sobre todo, que se diviertan probando el resultado 😁.

Si te gusta este tipo de contenido te recomiendo que sigas con nosotros probando la aplicación de texto a imagen de Canva.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.