El proceso de aprendizaje por refuerzo que utiliza OpenAI para mejorar el modelo reduce implícitamente el comportamiento negativo de las interacciones humanas positivas.
En este artículo, los autores adoptan un enfoque práctico novedoso: utilizar interacciones humanas negativas (es decir, seleccionar deliberadamente imágenes de baja calidad) para aumentar implícitamente el comportamiento positivo.
Con Dreambooth LoRA, básicamente no hay necesidad de preparar tantos datos de entrada como entrenar un modelo de lenguaje grande para lograr este objetivo.
"Hamburguesa con forma de alienígena ()" con diferentes niveles de optimización
El autor presenta dos características principales lanzadas por Stable Diffusion XL 1.0: ponderación rápida de palabras y entrenamiento y razonamiento de Dreambooth LoRA, y combina el método de inversión textual (inversión de texto) para entrenar a Lora, haciendo que Lora sea más inteligente y más fácil de usar.
Sobre el autor: Max Woolf (@minimaxir) es un científico de datos en BuzzFeed y trabaja en herramientas de IA/ML y varios proyectos de código abierto.
Enlace original:
El siguiente es el contenido del artículo, editado por Founder Park.
Breve introducción a SDXL
El mes pasado, Stability AI lanzó Stable Diffusion XL 1.0 (SDXL) y lo hizo de código abierto, permitiendo a los usuarios acceder a él sin ningún permiso especial.
Ejemplo de salida SDXL 1.0
SDXL consta en realidad de dos modelos: un modelo base y un modelo de refinamiento opcional que puede mejorar significativamente la representación detallada sin la sobrecarga de velocidad.
Comparación de calidad relativa entre modelos de varias versiones de Stable Diffusion
Observe la mejora significativa en la calidad después de usar el modelo adelgazado.
Características SDXL 1.0
Vale la pena señalar que esta versión (SDXL 1.0) es uno de los primeros modelos de código abierto que puede generar de forma nativa imágenes con una resolución de 1024x1024 sin medidas especiales, y las imágenes generadas son más detalladas.
La biblioteca Python de difusores de Hugging Face ahora es totalmente compatible con el modelo, con algunas optimizaciones de rendimiento.
Al mismo tiempo, los difusores también implementaron soporte para dos nuevas características: ponderación rápida de palabras y entrenamiento e inferencia Dreambooth LoRA. Así que planeo probarlo (el código de demostración SDXL en difusores se puede ver al final del artículo).
El rápido soporte de ponderación de palabras para difusores aprovecha una biblioteca de Python llamada obligar a ponderar términos de una manera más matemática. Puede agregar cualquier número de + o - a una palabra determinada para aumentar o disminuir su "importancia" en la incrustación de texto posicional generado y así afectar el resultado final.
Siguiendo el mismo principio, también puedes envolver frases: por ejemplo, si generaras "Paisaje de San Francisco de Salvador Dalí, óleo sobre lienzo" y generaras una foto realista de San Francisco, entonces podrías enmarcar la forma de arte y convertirte en Ingrese "Paisaje de San Francisco de Salvador Dalí, (óleo sobre lienzo) +++", deje que Stable Diffusion produzca el efecto esperado.
Preparación del entorno
Encendí una máquina virtual en la nube, la aprovisioné con una nueva GPU Nvidia L4 de rango medio ($0,24/hora para una instancia Spot en Google Cloud Platform) y me puse a trabajar.
Con una GPU L4, se necesitan aproximadamente 22 segundos para generar cada imagen de 1024x1024; y a diferencia del modo de Difusión Estable anterior, ahora la GPU de rango medio solo puede generar una imagen a la vez porque su utilización de GPU ya está llena, por lo que solo tienes para tener más paciencia. Reducir la resolución puede acelerar la compilación, pero lo desaconsejo encarecidamente, ya que el resultado será terrible.
** Una configuración un poco personalizada **
En mis pruebas, soluciona la mayoría de los problemas de palabras clave introducidos después de Stable Diffusion 2.0, especialmente con valores de guía sin clasificador más altos establecidos (guiding_scale tiene como valor predeterminado 7.5; me gusta cambiarlo a 13).
La escala guía es 13 para todos los ejemplos generados por el modelo LoRA en este artículo.
Primeros pasos 丨Explore LoRA
La actualización más importante de SDXL 1.0 es en realidad la compatibilidad con Dreambooth LoRA, que nos permite personalizar el modelo Stable Diffusion.
Dreambooth es una técnica para ajustar la difusión estable basada en un conjunto muy pequeño de imágenes de origen y una palabra clave desencadenante, de modo que los "conceptos" en esas imágenes se puedan usar en otros contextos dada la palabra clave.
Diagrama esquemático del principio de funcionamiento de Dreambooth
Ventaja de LoRA: "modelos pequeños" específicos de dominio
Al entrenar Stable Diffusion, incluso un modelo pequeño requiere muchas horas de entrenamiento en muchas GPU costosas.
Aquí es donde LoRA resulta útil: entrena un pequeño subconjunto del modelo de visión de modo que solo se necesita una GPU barata para generar resultados en 10 minutos, y la calidad del modelo final + LoRA es comparable a un modelo completamente ajustado. (En términos generales, cuando la gente se refiere a ajustar la difusión estable, a menudo se refieren a la creación de un LoRA).
Un LoRA entrenado es un binario pequeño e independiente que se puede compartir fácilmente con otros o cargar en un repositorio como Civitai.
Una pequeña desventaja de LoRA es que solo uno puede estar activo a la vez: podemos combinar varios LoRA para combinar sus ventajas, pero en la práctica no es tan sencillo.
Inversión textual Combate real: Inversión textual
Antes de que Stable Diffusion LoRA se hiciera muy popular, existía un método llamado inversión textual, que permitía a los codificadores de texto aprender conceptos, pero llevaba muchas horas entrenar y los resultados podían ser feos.
Entrené una inversión de texto en una publicación de blog anterior: Ugly Sonic (Sonic), y como no estaba en el conjunto de datos fuente de Stable Diffusion, los resultados fueron únicos. Los resultados generados son los siguientes, con resultados mixtos.
(Feo) Sonic, pero feo como el infierno
Esta vez, creo que usar Ugly Sonic para entrenar a LoRA sería un buen caso para probar el potencial de SDXL.
Da la casualidad de que Hugging Face proporciona un script train_dreambooth_lora_sdxl.py, que puede usar el modelo básico SDXL para entrenar a LoRA; este script todavía está listo para usar, pero ajusté un poco los parámetros.
No es exagerado decir que las imágenes de Ugly Sonic generadas por LoRA entrenado bajo varias palabras son más atractivas y más organizadas.
Sonic, pero esta vez con dientes
Avanzado 丨 Inversión textual en profundidad
Después del éxito de este experimento, decidí rehacer otro experimento que hice anteriormente con inversión de texto: agregando la palabra clave incorrecta para generar mejores imágenes.
El método esta vez es entrenar a LoRA con algunas imágenes de baja calidad muy distorsionadas y la palabra de aviso dada es incorrecta. Espero que LoRA pueda tratar el error como un "aviso negativo" y evitar esta situación, generando imágenes con menos distorsión.
Escribí un Jupyter Notebook y usé SDXL para crear muchas imágenes compuestas "incorrectas", esta vez también usé varios pesos de sugerencias para generar instancias más obvias de imágenes fallidas, como manos borrosas (borrosas) y malas (manos dibujadas incorrectamente). .
Irónicamente, necesitamos usar SDXL para generar imágenes fallidas de alta resolución.
Arriba se muestran algunos ejemplos de imágenes sintéticas erróneas.
Incorpora sin querer elementos de portadas de álbumes de punk rock de la década de 2000.
Entrené este LoRA y lo cargué en el modelo base Stable Diffusion XL (no se requiere LoRA para ajustar el modelo) y escribí un Jupyter Notebook para comparar el siguiente resultado para las palabras clave dadas:
Modelo base + tubería sin LoRA. (lo básico)
Sin tubería LoRA, use incorrecto como pista negativa (agregue pista negativa)
Utilice la canalización de LoRA, utilice el error como pista negativa (objetivo ideal)
Las semillas de cada resultado generado son las mismas, por lo que la composición de las tres fotografías de salida debe ser similar, y la diferencia entre el efecto de sugerencias negativas incorrectas y LoRA, y la canalización del modelo básico debe ser muy obvia.
Caso de prueba SDXL 0.9
Usemos SDXL 0.9 para demostrar un mensaje simple para comenzar a probar:
「Un lobo en el Parque Nacional Yosemite, fotografía de un documental de naturaleza fría」
Al observar detenidamente la imagen de arriba, no es difícil encontrar que la pista incorrecta en el modelo base agrega algunas hojas y profundidad al bosque de fondo, pero LoRA agrega más cosas: iluminación y sombras más potentes, hojas más detalladas y cambios en la forma en que se ven los lobos El ángulo de la cámara parece más interesante.
Luego agregué "primer plano extremo (muy primer plano)" a la palabra inicial, y después de reutilizar las semillas anteriores, obtuve primeros planos en diferentes perspectivas de lobos bajo una composición fotográfica similar.
「Un primer plano extremo de un lobo en el Parque Nacional Yosemite, fotografía de un documental de naturaleza fría」
En este momento, la textura y la claridad de LoRA son mucho mejores que las de otros modelos y la imagen es más vívida. Sin embargo, tenga en cuenta que agregar solo una palabra clave incorrecta cambiará la perspectiva.
Otro buen caso de prueba es la fotografía de alimentos, y las extrañas fotografías de alimentos que produje con el DALL-E 2 son especialmente buenas. ¿Puede SDXL + LoRA incorrecto generar hamburguesas no euclidianas de aspecto extraño con alguna sugerencia de ponderación?
「una hamburguesa grande y deliciosa (en forma de geometría alienígena de cinco dimensiones)++++, fotografía de comida profesional」
"Una deliciosa hamburguesa grande (geometría alienígena 5D)++++, fotografía de comida profesional"
La respuesta es que no puede, incluso si la palabra clave se ajusta muchas veces. Aún así, el resultado es interesante: el SDXL base parece tomar la parte "alienígena" del mensaje más literalmente de lo que pensaba (¡y le dio un lindo bombín!), pero LoRA funciona mejor. Entendió claramente el significado de las pistas y Hizo una hamburguesa "extraterrestre" que es difícil de comer para los humanos y el estilo de la imagen es más brillante.
¿Qué pasará con el pintor? ¿Puede LoRA resolver incorrectamente el notorio problema de que la inteligencia artificial no haga las manos? Y también incluimos muchos ejemplos de este tipo en los datos de entrenamiento de LoRA. Cambiemos el mensaje que utilicé cuando probé Stable Diffusion 2.0 por primera vez para dibujar a la presidenta Taylor Swift:
「La presidenta de Estados Unidos, Taylor Swift (firmando documentos)++++, foto tomada por Associated Press」
"El presidente de Estados Unidos, Taylor Swift (firma del documento)++++, foto de AP"
Eche un vistazo al brazo derecho de Taylor: el modelo SDXL predeterminado produce resultados locos y, si está mal, en realidad es peor, ¡pero en LoRA está arreglado! Las capas de color de LoRA son mucho mejores, y su chaqueta se vuelve de un blanco más prominente en lugar de amarillo y blanco. Pero sus manos todavía no se pueden ver con atención: ¡dibujar personajes con SDXL 1.0 sigue siendo engorroso y poco confiable!
Ahora la conclusión es obvia: el resultado de LoRA + incorrecto en cada caso es más interesante que el resultado de simplemente agregar señales negativas incorrectas, por lo que solo comparamos el resultado básico y el resultado de LoRA a continuación. A continuación se muestra un ejemplo del modelo base comparado con un LoRA incorrecto:
「Blogging humano realista de Shrek en una estación de trabajo con computadora, fotografía hiperrealista premiada para Vanity Fair」
*(Blogging humano realista de Shrek en una estación de trabajo con computadora, fotografías surrealistas premiadas de Vanity Fair): la mano de LoRA dibujada e iluminada mejor. Los disfraces son más detallados y los fondos son más interesantes. *
「Pizza de pepperoni en forma de corazón, fotografía gastronómica profesional hiperrealista y galardonada」
(pizza de pepperoni en forma de corazón, fotografía gastronómica profesional galardonada y ultrarrealista): pepperoni más detallado, burbujas calientes, menos exceso de pepperoni en los bordes de la pizza, la corteza parece más dura
LoRA con error está disponible aquí, pero no puedo garantizar su rendimiento en interfaces que no sean difusores.
Todos los Notebooks utilizados para generar estas imágenes se encuentran en este repositorio de GitHub, incluido un SDXL 1.0 estándar + modelo de ajuste fino + Notebooks LoRA Colab con errores, puede ejecutar estos Notebooks en una GPU T4 gratuita. Si desea ver una versión de mayor resolución de las imágenes generadas utilizadas en este artículo, puede visitar el código fuente del artículo.
Incorrecto ¿Qué diablos está pasando?
LoRA con error Este truco solo mejora la calidad y claridad de la imagen generada, pero LoRA parece hacer que SDXL se comporte de manera más inteligente y refleje más el espíritu de las palabras indicadas.
A nivel técnico, esta señal negativa establece la región del espacio latente en la que la difusión genera imágenes; esta región es la misma tanto para el modelo base incorrecto como para LoRA.
Mi intuición es que LoRA remodela esta región no deseada en el enorme espacio latente de alta dimensión para que sea más similar a la región inicial, por lo que la probabilidad de que los resultados de la generación normal lleguen a esta región se vuelve menor y la calidad es menor. (Consulte el proceso de cambio de Alien Burger arriba)
Entrenar SDXL con imágenes de baja calidad para mejorarlo es técnicamente una forma de aprendizaje reforzado con retroalimentación humana (RLHF): este enfoque es también el camino hacia el éxito de ChatGPT. El proceso de aprendizaje por refuerzo utilizado por OpenAI para mejorar el modelo es reducir implícitamente el comportamiento negativo de la interacción positiva del usuario, mientras que aquí estoy usando la interacción negativa del usuario (es decir, elegir deliberadamente imágenes de baja calidad) para aumentar implícitamente el comportamiento positivo.
Pero con Dreambooth LoRA, básicamente no es necesario preparar tantos datos de entrada como entrenar un modelo de lenguaje grande.
El potencial de "LoRA negativo" sigue siendo grande: mis parámetros de generación de conjuntos de datos sintéticos tienen mucho margen de mejora y LoRA también se puede entrenar durante un período de tiempo más largo. Pero estoy muy contento con los resultados hasta ahora y me gustaría hacer más pruebas con LoRA negativo, como fusionarlos con otros LoRA para ver si pueden mejorar estos últimos (¡especialmente LoRA incorrecto + Ugly Sonic LoRA!)
Adjunto: Demostración SDXL en difusores
importar antorcha
de difusores importan DiffusionPipeline, AutoencoderKL
generación utilizando ambos modelos (mezcla de expertos)
alto_ruido_frac = 0,8
= "un astronauta montando a caballo"
negativo_ = "borroso, malas manos"
imagen = base(
=,
negativo_=negativo_,
eliminación de ruido_end=alto_noise_frac,
salida_type="latente",
).imágenes
imagen = refinador (
=,
negativo_=negativo_,
eliminación de ruido_start=alto_noise_frac,
imagen=imagen,
).imágenes [0]
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
¿Las malas imágenes generadas por la IA pueden en realidad "ajustar el modelo" a la inversa?
Original: Max Woolf
**Fuente:**Parque Fundador
El proceso de aprendizaje por refuerzo que utiliza OpenAI para mejorar el modelo reduce implícitamente el comportamiento negativo de las interacciones humanas positivas.
En este artículo, los autores adoptan un enfoque práctico novedoso: utilizar interacciones humanas negativas (es decir, seleccionar deliberadamente imágenes de baja calidad) para aumentar implícitamente el comportamiento positivo.
Con Dreambooth LoRA, básicamente no hay necesidad de preparar tantos datos de entrada como entrenar un modelo de lenguaje grande para lograr este objetivo.
El autor presenta dos características principales lanzadas por Stable Diffusion XL 1.0: ponderación rápida de palabras y entrenamiento y razonamiento de Dreambooth LoRA, y combina el método de inversión textual (inversión de texto) para entrenar a Lora, haciendo que Lora sea más inteligente y más fácil de usar.
Sobre el autor: Max Woolf (@minimaxir) es un científico de datos en BuzzFeed y trabaja en herramientas de IA/ML y varios proyectos de código abierto.
Enlace original:
El siguiente es el contenido del artículo, editado por Founder Park.
Breve introducción a SDXL
El mes pasado, Stability AI lanzó Stable Diffusion XL 1.0 (SDXL) y lo hizo de código abierto, permitiendo a los usuarios acceder a él sin ningún permiso especial.
SDXL consta en realidad de dos modelos: un modelo base y un modelo de refinamiento opcional que puede mejorar significativamente la representación detallada sin la sobrecarga de velocidad.
Observe la mejora significativa en la calidad después de usar el modelo adelgazado.
Características SDXL 1.0
Vale la pena señalar que esta versión (SDXL 1.0) es uno de los primeros modelos de código abierto que puede generar de forma nativa imágenes con una resolución de 1024x1024 sin medidas especiales, y las imágenes generadas son más detalladas.
La biblioteca Python de difusores de Hugging Face ahora es totalmente compatible con el modelo, con algunas optimizaciones de rendimiento.
Al mismo tiempo, los difusores también implementaron soporte para dos nuevas características: ponderación rápida de palabras y entrenamiento e inferencia Dreambooth LoRA. Así que planeo probarlo (el código de demostración SDXL en difusores se puede ver al final del artículo).
El rápido soporte de ponderación de palabras para difusores aprovecha una biblioteca de Python llamada obligar a ponderar términos de una manera más matemática. Puede agregar cualquier número de + o - a una palabra determinada para aumentar o disminuir su "importancia" en la incrustación de texto posicional generado y así afectar el resultado final.
Siguiendo el mismo principio, también puedes envolver frases: por ejemplo, si generaras "Paisaje de San Francisco de Salvador Dalí, óleo sobre lienzo" y generaras una foto realista de San Francisco, entonces podrías enmarcar la forma de arte y convertirte en Ingrese "Paisaje de San Francisco de Salvador Dalí, (óleo sobre lienzo) +++", deje que Stable Diffusion produzca el efecto esperado.
Preparación del entorno
Encendí una máquina virtual en la nube, la aprovisioné con una nueva GPU Nvidia L4 de rango medio ($0,24/hora para una instancia Spot en Google Cloud Platform) y me puse a trabajar.
Con una GPU L4, se necesitan aproximadamente 22 segundos para generar cada imagen de 1024x1024; y a diferencia del modo de Difusión Estable anterior, ahora la GPU de rango medio solo puede generar una imagen a la vez porque su utilización de GPU ya está llena, por lo que solo tienes para tener más paciencia. Reducir la resolución puede acelerar la compilación, pero lo desaconsejo encarecidamente, ya que el resultado será terrible.
** Una configuración un poco personalizada **
En mis pruebas, soluciona la mayoría de los problemas de palabras clave introducidos después de Stable Diffusion 2.0, especialmente con valores de guía sin clasificador más altos establecidos (guiding_scale tiene como valor predeterminado 7.5; me gusta cambiarlo a 13).
La escala guía es 13 para todos los ejemplos generados por el modelo LoRA en este artículo.
Primeros pasos 丨Explore LoRA
La actualización más importante de SDXL 1.0 es en realidad la compatibilidad con Dreambooth LoRA, que nos permite personalizar el modelo Stable Diffusion.
Dreambooth es una técnica para ajustar la difusión estable basada en un conjunto muy pequeño de imágenes de origen y una palabra clave desencadenante, de modo que los "conceptos" en esas imágenes se puedan usar en otros contextos dada la palabra clave.
Ventaja de LoRA: "modelos pequeños" específicos de dominio
Al entrenar Stable Diffusion, incluso un modelo pequeño requiere muchas horas de entrenamiento en muchas GPU costosas.
Aquí es donde LoRA resulta útil: entrena un pequeño subconjunto del modelo de visión de modo que solo se necesita una GPU barata para generar resultados en 10 minutos, y la calidad del modelo final + LoRA es comparable a un modelo completamente ajustado. (En términos generales, cuando la gente se refiere a ajustar la difusión estable, a menudo se refieren a la creación de un LoRA).
Un LoRA entrenado es un binario pequeño e independiente que se puede compartir fácilmente con otros o cargar en un repositorio como Civitai.
Una pequeña desventaja de LoRA es que solo uno puede estar activo a la vez: podemos combinar varios LoRA para combinar sus ventajas, pero en la práctica no es tan sencillo.
Inversión textual Combate real: Inversión textual
Antes de que Stable Diffusion LoRA se hiciera muy popular, existía un método llamado inversión textual, que permitía a los codificadores de texto aprender conceptos, pero llevaba muchas horas entrenar y los resultados podían ser feos.
Entrené una inversión de texto en una publicación de blog anterior: Ugly Sonic (Sonic), y como no estaba en el conjunto de datos fuente de Stable Diffusion, los resultados fueron únicos. Los resultados generados son los siguientes, con resultados mixtos.
Esta vez, creo que usar Ugly Sonic para entrenar a LoRA sería un buen caso para probar el potencial de SDXL.
Da la casualidad de que Hugging Face proporciona un script train_dreambooth_lora_sdxl.py, que puede usar el modelo básico SDXL para entrenar a LoRA; este script todavía está listo para usar, pero ajusté un poco los parámetros.
No es exagerado decir que las imágenes de Ugly Sonic generadas por LoRA entrenado bajo varias palabras son más atractivas y más organizadas.
Avanzado 丨 Inversión textual en profundidad
Después del éxito de este experimento, decidí rehacer otro experimento que hice anteriormente con inversión de texto: agregando la palabra clave incorrecta para generar mejores imágenes.
El método esta vez es entrenar a LoRA con algunas imágenes de baja calidad muy distorsionadas y la palabra de aviso dada es incorrecta. Espero que LoRA pueda tratar el error como un "aviso negativo" y evitar esta situación, generando imágenes con menos distorsión.
Escribí un Jupyter Notebook y usé SDXL para crear muchas imágenes compuestas "incorrectas", esta vez también usé varios pesos de sugerencias para generar instancias más obvias de imágenes fallidas, como manos borrosas (borrosas) y malas (manos dibujadas incorrectamente). .
Irónicamente, necesitamos usar SDXL para generar imágenes fallidas de alta resolución.
Arriba se muestran algunos ejemplos de imágenes sintéticas erróneas.
Incorpora sin querer elementos de portadas de álbumes de punk rock de la década de 2000.
Entrené este LoRA y lo cargué en el modelo base Stable Diffusion XL (no se requiere LoRA para ajustar el modelo) y escribí un Jupyter Notebook para comparar el siguiente resultado para las palabras clave dadas:
Modelo base + tubería sin LoRA. (lo básico)
Sin tubería LoRA, use incorrecto como pista negativa (agregue pista negativa)
Utilice la canalización de LoRA, utilice el error como pista negativa (objetivo ideal)
Las semillas de cada resultado generado son las mismas, por lo que la composición de las tres fotografías de salida debe ser similar, y la diferencia entre el efecto de sugerencias negativas incorrectas y LoRA, y la canalización del modelo básico debe ser muy obvia.
Caso de prueba SDXL 0.9
Usemos SDXL 0.9 para demostrar un mensaje simple para comenzar a probar:
「Un lobo en el Parque Nacional Yosemite, fotografía de un documental de naturaleza fría」
Al observar detenidamente la imagen de arriba, no es difícil encontrar que la pista incorrecta en el modelo base agrega algunas hojas y profundidad al bosque de fondo, pero LoRA agrega más cosas: iluminación y sombras más potentes, hojas más detalladas y cambios en la forma en que se ven los lobos El ángulo de la cámara parece más interesante.
Luego agregué "primer plano extremo (muy primer plano)" a la palabra inicial, y después de reutilizar las semillas anteriores, obtuve primeros planos en diferentes perspectivas de lobos bajo una composición fotográfica similar.
En este momento, la textura y la claridad de LoRA son mucho mejores que las de otros modelos y la imagen es más vívida. Sin embargo, tenga en cuenta que agregar solo una palabra clave incorrecta cambiará la perspectiva.
Otro buen caso de prueba es la fotografía de alimentos, y las extrañas fotografías de alimentos que produje con el DALL-E 2 son especialmente buenas. ¿Puede SDXL + LoRA incorrecto generar hamburguesas no euclidianas de aspecto extraño con alguna sugerencia de ponderación?
"Una deliciosa hamburguesa grande (geometría alienígena 5D)++++, fotografía de comida profesional"
La respuesta es que no puede, incluso si la palabra clave se ajusta muchas veces. Aún así, el resultado es interesante: el SDXL base parece tomar la parte "alienígena" del mensaje más literalmente de lo que pensaba (¡y le dio un lindo bombín!), pero LoRA funciona mejor. Entendió claramente el significado de las pistas y Hizo una hamburguesa "extraterrestre" que es difícil de comer para los humanos y el estilo de la imagen es más brillante.
¿Qué pasará con el pintor? ¿Puede LoRA resolver incorrectamente el notorio problema de que la inteligencia artificial no haga las manos? Y también incluimos muchos ejemplos de este tipo en los datos de entrenamiento de LoRA. Cambiemos el mensaje que utilicé cuando probé Stable Diffusion 2.0 por primera vez para dibujar a la presidenta Taylor Swift:
"El presidente de Estados Unidos, Taylor Swift (firma del documento)++++, foto de AP"
Eche un vistazo al brazo derecho de Taylor: el modelo SDXL predeterminado produce resultados locos y, si está mal, en realidad es peor, ¡pero en LoRA está arreglado! Las capas de color de LoRA son mucho mejores, y su chaqueta se vuelve de un blanco más prominente en lugar de amarillo y blanco. Pero sus manos todavía no se pueden ver con atención: ¡dibujar personajes con SDXL 1.0 sigue siendo engorroso y poco confiable!
Ahora la conclusión es obvia: el resultado de LoRA + incorrecto en cada caso es más interesante que el resultado de simplemente agregar señales negativas incorrectas, por lo que solo comparamos el resultado básico y el resultado de LoRA a continuación. A continuación se muestra un ejemplo del modelo base comparado con un LoRA incorrecto:
*(Blogging humano realista de Shrek en una estación de trabajo con computadora, fotografías surrealistas premiadas de Vanity Fair): la mano de LoRA dibujada e iluminada mejor. Los disfraces son más detallados y los fondos son más interesantes. *
(pizza de pepperoni en forma de corazón, fotografía gastronómica profesional galardonada y ultrarrealista): pepperoni más detallado, burbujas calientes, menos exceso de pepperoni en los bordes de la pizza, la corteza parece más dura
LoRA con error está disponible aquí, pero no puedo garantizar su rendimiento en interfaces que no sean difusores.
Todos los Notebooks utilizados para generar estas imágenes se encuentran en este repositorio de GitHub, incluido un SDXL 1.0 estándar + modelo de ajuste fino + Notebooks LoRA Colab con errores, puede ejecutar estos Notebooks en una GPU T4 gratuita. Si desea ver una versión de mayor resolución de las imágenes generadas utilizadas en este artículo, puede visitar el código fuente del artículo.
Incorrecto ¿Qué diablos está pasando?
LoRA con error Este truco solo mejora la calidad y claridad de la imagen generada, pero LoRA parece hacer que SDXL se comporte de manera más inteligente y refleje más el espíritu de las palabras indicadas.
A nivel técnico, esta señal negativa establece la región del espacio latente en la que la difusión genera imágenes; esta región es la misma tanto para el modelo base incorrecto como para LoRA.
Mi intuición es que LoRA remodela esta región no deseada en el enorme espacio latente de alta dimensión para que sea más similar a la región inicial, por lo que la probabilidad de que los resultados de la generación normal lleguen a esta región se vuelve menor y la calidad es menor. (Consulte el proceso de cambio de Alien Burger arriba)
Entrenar SDXL con imágenes de baja calidad para mejorarlo es técnicamente una forma de aprendizaje reforzado con retroalimentación humana (RLHF): este enfoque es también el camino hacia el éxito de ChatGPT. El proceso de aprendizaje por refuerzo utilizado por OpenAI para mejorar el modelo es reducir implícitamente el comportamiento negativo de la interacción positiva del usuario, mientras que aquí estoy usando la interacción negativa del usuario (es decir, elegir deliberadamente imágenes de baja calidad) para aumentar implícitamente el comportamiento positivo.
Pero con Dreambooth LoRA, básicamente no es necesario preparar tantos datos de entrada como entrenar un modelo de lenguaje grande.
El potencial de "LoRA negativo" sigue siendo grande: mis parámetros de generación de conjuntos de datos sintéticos tienen mucho margen de mejora y LoRA también se puede entrenar durante un período de tiempo más largo. Pero estoy muy contento con los resultados hasta ahora y me gustaría hacer más pruebas con LoRA negativo, como fusionarlos con otros LoRA para ver si pueden mejorar estos últimos (¡especialmente LoRA incorrecto + Ugly Sonic LoRA!)
Adjunto: Demostración SDXL en difusores
importar antorcha
de difusores importan DiffusionPipeline, AutoencoderKL
base de carga SDXL y refinador
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",
antorcha_dtype=antorcha.float16)
base = DiffusionPipeline.from_pretrained(
"estabilidadai/difusión-estable-xl-base-1.0",
pies = pies,
antorcha_dtype=antorcha.float16,
iant="fp16",
use_safetensors=Verdadero,
)
_ = base.to("cuda")
refinador = DiffusionPipeline.from_pretrained(
"estabilidadai/difusión-estable-xl-refiner-1.0",
texto_encoder_2=base.text_encoder_2,
pierna=base.pierna,
antorcha_dtype=antorcha.float16,
iant="fp16",
use_safetensors=Verdadero,
)
_ = refinador.to("cuda")
generación utilizando ambos modelos (mezcla de expertos)
alto_ruido_frac = 0,8
= "un astronauta montando a caballo"
negativo_ = "borroso, malas manos"
imagen = base(
=,
negativo_=negativo_,
eliminación de ruido_end=alto_noise_frac,
salida_type="latente",
).imágenes
imagen = refinador (
=,
negativo_=negativo_,
eliminación de ruido_start=alto_noise_frac,
imagen=imagen,
).imágenes [0]