Inteligencia artificial
Tres desafíos por delante para Stable Diffusion

La publicación del modelo de síntesis de imágenes de difusión latente de Stable Diffusion de stability.ai hace un par de semanas puede ser una de las revelaciones tecnológicas más significativas desde DeCSS en 1999; ciertamente es el evento más grande en imágenes generadas por IA desde que el código de deepfakes se copió en GitHub y se bifurcó en lo que se convertiría en DeepFaceLab y FaceSwap, así como en el software de transmisión de deepfakes en tiempo real DeepFaceLive.
En un solo movimiento, la frustración del usuario sobre las restricciones de contenido en la API de síntesis de imágenes de DALL-E 2 se desvaneció, ya que resultó que el filtro NSFW de Stable Diffusion se podía deshabilitar cambiando una sola línea de código. Los Reddits de Stable Diffusion centrados en pornografía surgieron casi de inmediato, y fueron cortados con la misma rapidez, mientras que el campamento de desarrolladores y usuarios se dividió en Discord en las comunidades oficiales y NSFW, y Twitter comenzó a llenarse de creaciones fantásticas de Stable Diffusion.
En este momento, cada día parece traer alguna innovación asombrosa de los desarrolladores que han adoptado el sistema, con plugins y complementos de terceros que se están escribiendo apresuradamente para Krita, Photoshop, Cinema4D, Blender, y muchas otras plataformas de aplicaciones.
Mientras tanto, promptcraft – el ahora profesional arte de ‘susurrar a la IA’, que puede terminar siendo la opción de carrera más corta desde ‘Filofax binder’ – ya está siendo comercializado, mientras que la monetización temprana de Stable Diffusion está teniendo lugar en el nivel de Patreon, con la certeza de que habrá ofertas más sofisticadas por venir, para aquellos que no estén dispuestos a navegar instalaciones basadas en Conda del código fuente, o los filtros NSFW proscriptivos de implementaciones web.
El ritmo de desarrollo y el sentido libre de exploración de los usuarios están procediendo a una velocidad tan vertiginosa que es difícil ver muy lejos. Esencialmente, no sabemos exactamente con qué estamos tratando todavía, o qué limitaciones o posibilidades pueden ser.
No obstante, veamos tres de lo que podrían ser los obstáculos más interesantes y desafiantes para la comunidad de Stable Diffusion, que se ha formado y está creciendo rápidamente, para enfrentar y, esperemos, superar.
1: Optimizando tuberías basadas en mosaicos
Presentados con recursos de hardware limitados y límites duros en la resolución de las imágenes de entrenamiento, parece probable que los desarrolladores encuentren soluciones para mejorar tanto la calidad como la resolución de la salida de Stable Diffusion. Muchos de estos proyectos están destinados a explotar las limitaciones del sistema, como su resolución nativa de solo 512×512 píxeles.
Como siempre es el caso con las iniciativas de visión por computadora y síntesis de imágenes, Stable Diffusion se entrenó en imágenes con relación de aspecto cuadrada, en este caso, reescaladas a 512×512, para que las imágenes de origen pudieran regularizarse y caber en las limitaciones de las GPU que entrenaron el modelo.
Por lo tanto, Stable Diffusion ‘piensa’ (si es que piensa en absoluto) en términos de 512×512, y ciertamente en términos cuadrados. Muchos usuarios que actualmente exploran los límites del sistema informan que Stable Diffusion produce los resultados más confiables y menos defectuosos en esta relación de aspecto bastante limitada (ver ‘abordar extremidades’ a continuación).
Aunque varias implementaciones presentan escalado mediante RealESRGAN (y pueden arreglar caras mal renderizadas mediante GFPGAN) varios usuarios están desarrollando métodos para dividir las imágenes en secciones de 512x512px y unir las imágenes para formar obras compuestas más grandes.

Esta renderización de 1024×576, una resolución que normalmente es imposible en una sola renderización de Stable Diffusion, se creó copiando y pegando el archivo Python attention.py del fork DoggettX de Stable Diffusion (una versión que implementa el escalado basado en mosaicos) en otro fork. Fuente: https://old.reddit.com/r/StableDiffusion/comments/x6yeam/1024x576_with_6gb_nice/
Aunque algunas iniciativas de este tipo utilizan código original o otras bibliotecas, el puerto txt2imghd de GOBIG (un modo en la difusión de ProgRock hambrienta de VRAM) está destinado a proporcionar esta funcionalidad al ramal principal pronto. Mientras que txt2imghd es un puerto dedicado de GOBIG, otros esfuerzos de los desarrolladores de la comunidad implican diferentes implementaciones de GOBIG.

Una imagen abstracta conveniente en la renderización original de 512x512px (izquierda y segunda desde la izquierda); escalada por ESGRAN, que ahora es más o menos nativa en todas las distribuciones de Stable Diffusion; y dada ‘atención especial’ a través de una implementación de GOBIG, produciendo detalles que, al menos dentro de los confines de la sección de la imagen, parecen mejor escalados. Fuente: https://old.reddit.com/r/StableDiffusion/comments/x72460/stable_diffusion_gobig_txt2imghd_easy_mode_colab/
El tipo de ejemplo abstracto presentado anteriormente tiene muchos ‘pequeños reinos’ de detalles que se adaptan a este enfoque solipsístico para el escalado, pero que pueden requerir soluciones de código más desafiantes para producir un escalado coherente y no repetitivo que no parezca que se haya ensamblado a partir de muchas partes. No menos, en el caso de las caras humanas, donde estamos inusualmente atentos a las aberraciones o artefactos ‘desagradables’. Por lo tanto, las caras pueden necesitar eventualmente una solución dedicada.
Stable Diffusion actualmente no tiene mecanismo para enfocar la atención en la cara durante una renderización de la misma manera que los humanos priorizan la información facial. Aunque algunos desarrolladores en las comunidades de Discord están considerando métodos para implementar este tipo de ‘atención mejorada’, actualmente es mucho más fácil mejorar la cara manualmente (y, eventualmente, de forma automática) después de que la renderización inicial haya tenido lugar.
Una cara humana tiene una lógica semántica interna y completa que no se encontrará en un ‘mosaico’ del rincón inferior de (por ejemplo) un edificio, y por lo tanto es actualmente posible ‘zoom’ y volver a renderizar una cara ‘esbozada’ en la salida de Stable Diffusion.

Izquierda, el esfuerzo inicial de Stable Diffusion con el prompt ‘Foto a todo color de Christina Hendricks entrando en un lugar concurrido, llevando un abrigo de lluvia; Canon50, contacto con los ojos, alto detalle, alto detalle facial’. Derecha, una cara mejorada obtenida al alimentar la cara borrosa y esbozada de la primera renderización de nuevo en la atención completa de Stable Diffusion utilizando Img2Img (ver imágenes animadas a continuación).
En ausencia de una solución de inversión textual dedicada (ver a continuación), esto solo funcionará para imágenes de celebridades donde la persona en cuestión ya está bien representada en los subconjuntos de datos LAION que entrenaron a Stable Diffusion. Por lo tanto, funcionará en personas como Tom Cruise, Brad Pitt, Jennifer Lawrence, y un rango limitado de luminarias de los medios que son presentes en gran número de imágenes en los datos de origen.

Generando una foto de prensa plausible con el prompt ‘Foto a todo color de Christina Hendricks entrando en un lugar concurrido, llevando un abrigo de lluvia; Canon50, contacto con los ojos, alto detalle, alto detalle facial’.
Para celebridades con carreras largas y duraderas, Stable Diffusion generalmente generará una imagen de la persona a una edad reciente (es decir, mayor), y será necesario agregar adjuntos de prompt como ‘joven’ o ‘en el año [AÑO]’ para producir imágenes con aspecto más joven.

Con una carrera prominente y fotografiada de manera consistente que abarca casi 40 años, la actriz Jennifer Connelly es una de las pocas celebridades en LAION que permiten a Stable Diffusion representar una serie de edades. Fuente: prepack Stable Diffusion, local, punto de control v1.4; prompts relacionados con la edad.
Esto se debe en gran medida a la proliferación de la fotografía de prensa digital (en lugar de la fotografía de emulsión basada en emulsiones costosas) a partir de la mitad de la década de 2000, y el crecimiento posterior en volumen de producción de imágenes debido a velocidades de banda ancha aumentadas.

La imagen renderizada se pasa a Img2Img en Stable Diffusion, donde se selecciona un ‘área de enfoque’ y se crea una nueva renderización de tamaño máximo solo de esa área, lo que permite a Stable Diffusion concentrar todos los recursos disponibles en recrear la cara.

Componiendo la cara de ‘alta atención’ de nuevo en la renderización original. Además de las caras, este proceso solo funcionará con entidades que tengan una apariencia coherente e integral, como una porción de la foto original que tenga un objeto distintivo, como un reloj o un coche. Escalar una sección de – por ejemplo – una pared va a dar como resultado una pared reensamblada con un aspecto muy extraño, porque los renderizados de mosaicos no tenían contexto más amplio para esta ‘pieza de rompecabezas’ mientras la renderizaban.
Algunas celebridades en la base de datos vienen ‘pre-congeladas’ en el tiempo, ya sea porque murieron jóvenes (como Marilyn Monroe), o alcanzaron solo una prominencia mainstream fugaz, produciendo un gran volumen de imágenes en un período de tiempo limitado. Sondear a Stable Diffusion puede proporcionar una especie de ‘índice de popularidad actual’ para estrellas modernas y antiguas. Para algunas celebridades antiguas y actuales, no hay suficientes imágenes en los datos de origen para obtener un parecido muy bueno, mientras que la popularidad duradera de ciertas estrellas desaparecidas o desvanecidas garantiza que su parecido razonable pueda obtenerse del sistema.

Las renderizaciones de Stable Diffusion revelan rápidamente qué caras famosas están bien representadas en los datos de entrenamiento. A pesar de su enorme popularidad como adolescente mayor en el momento de escribir, Millie Bobby Brown era más joven y menos conocida cuando se extrajeron los conjuntos de datos de origen de LAION de la web, lo que hace que un parecido de alta calidad con Stable Diffusion sea problemático en este momento.
Donde los datos están disponibles, las soluciones de escalado basadas en mosaicos en Stable Diffusion podrían ir más allá de centrarse en la cara: podrían potencialmente permitir caras aún más precisas y detalladas al descomponer las características faciales y aplicar toda la fuerza de los recursos de GPU locales en características individuales, antes de reensamblarlas – un proceso que actualmente es, de nuevo, manual.
Esto no se limita a las caras, pero está limitado a partes de objetos que son al menos tan predeciblemente colocadas en el contexto más amplio del objeto anfitrión, y que se ajustan a incrustaciones de alto nivel que podríamos razonablemente esperar encontrar en un conjunto de datos de hipercala.
El límite real es la cantidad de datos de referencia disponibles en el conjunto de datos, porque, eventualmente, los detalles profundamente iterados se volverán completamente ‘alucinados’ (es decir, ficticios) y menos auténticos.
Este tipo de ampliaciones granulares de alto nivel funcionan en el caso de Jennifer Connelly, porque ella está bien representada en una serie de edades en LAION-aesthetics (el subconjunto principal de LAION 5B que utiliza Stable Diffusion), y en general en LAION; en muchos otros casos, la precisión sufriría por la falta de datos, lo que necesitaría una fine-tuning (entrenamiento adicional, ver ‘Personalización’ a continuación) o una inversión textual (ver a continuación).
Las losas son una forma poderosa y relativamente barata para que Stable Diffusion pueda producir salida de alta resolución, pero el escalado algorítmico de mosaicos de este tipo, si carece de algún tipo de mecanismo de atención de más alto nivel, puede no alcanzar los estándares esperados en una serie de tipos de contenido.
2: Abordar problemas con los miembros humanos
Stable Diffusion no cumple con su nombre cuando se trata de la complejidad de las extremidades humanas. Las manos pueden multiplicarse aleatoriamente, los dedos se fusionan, aparecen piernas adicionales sin ser solicitadas, y los miembros existentes desaparecen sin rastro. En su defensa, Stable Diffusion comparte el problema con sus compañeros de estabilidad, y sin duda con DALL-E 2.

Resultados no editados de DALL-E 2 y Stable Diffusion (1.4) a finales de agosto de 2022, ambos mostrando problemas con los miembros. El prompt es ‘Una mujer abrazando a un hombre’
Los fanáticos de Stable Diffusion que esperan que el próximo punto de control 1.5 (una versión más intensamente entrenada del modelo, con parámetros mejorados) resuelva la confusión de los miembros probablemente se decepcionarán. El nuevo modelo, que se lanzará en unas dos semanas, se está estrenando actualmente en el portal comercial de stability.ai DreamStudio, que utiliza 1.5 por defecto, y donde los usuarios pueden comparar la nueva salida con renderizaciones de sus sistemas locales o de otros sistemas 1.4:

Fuente: prepack local 1.4 y https://beta.dreamstudio.ai/

Fuente: prepack local 1.4 y https://beta.dreamstudio.ai/

Fuente: prepack local 1.4 y https://beta.dreamstudio.ai/
Como a menudo es el caso, la calidad de los datos podría ser la causa principal contribuyente.
Las bases de datos de código abierto que alimentan sistemas de síntesis de imágenes como Stable Diffusion y DALL-E 2 pueden proporcionar muchas etiquetas para humanos individuales y acciones interhumanas. Estas etiquetas se entrenan simbióticamente con las imágenes asociadas, o segmentos de imágenes.

Los usuarios de Stable Diffusion pueden explorar los conceptos entrenados en el modelo consultando el conjunto de datos LAION-aesthetics, un subconjunto del conjunto de datos más grande LAION 5B, que impulsa el sistema. Las imágenes están ordenadas no por sus etiquetas alfabéticas, sino por su ‘puntuación estética’. Fuente: https://rom1504.github.io/clip-retrieval/
Una buena jerarquía de etiquetas individuales y clases que contribuyen a la representación de un brazo humano sería algo como cuerpo>miembro>mano>dedos>[subdígitos + pulgar]> [segmentos de dedos]>Uñas.

Segmentación semántica granular de las partes de una mano. Incluso esta descomposición inusualmente detallada deja cada ‘dedo’ como una entidad única, sin tener en cuenta los tres segmentos de un dedo y los dos segmentos de un pulgar. Fuente: https://athitsos.utasites.cloud/publications/rezaei_petra2021.pdf
En la realidad, las imágenes de origen no es probable que estén tan consistentemente anotadas en todo el conjunto de datos, y los algoritmos de etiquetado no supervisados probablemente se detendrán en el nivel más alto de – por ejemplo – ‘mano’, y dejarán los píxeles interiores (que técnicamente contienen información de ‘dedos’) como una masa no etiquetada de píxeles de la que se derivarán características de manera arbitraria, y que pueden manifestarse en renderizaciones posteriores como un elemento desagradable.

Cómo debería ser (arriba a la derecha, si no es un corte superior), y cómo tiende a ser (abajo a la derecha), debido a recursos limitados para etiquetado, o explotación arquitectónica de dichas etiquetas si existen en el conjunto de datos.
Así, si un modelo de difusión latente llega a renderizar un brazo, casi con certeza intentará renderizar una mano al final de ese brazo, porque brazo>mano es la jerarquía mínima requerida, bastante alta en lo que la arquitectura sabe sobre ‘anatomía humana’.
Después de eso, ‘dedos’ pueden ser el grupo más pequeño, aunque hay 14 partes subdigitales y de pulgar adicionales que considerar al representar manos humanas.
Si esta teoría se mantiene, no hay remedio real, debido a la falta de presupuesto sectorial para anotación manual, y la falta de algoritmos adecuadamente efectivos que puedan automatizar la etiquetado mientras producen tasas de error bajas. En efecto, el modelo puede estar confiando actualmente en la consistencia anatómica humana para cubrir las deficiencias del conjunto de datos en el que se entrenó.
Una posible razón por la que no puede confiar en esto, recientemente propuesta en el Discord de Stable Diffusion, es que el modelo podría confundirse sobre la cantidad correcta de dedos que una mano humana realista debería tener porque la base de datos derivada de LAION que lo impulsa presenta personajes de dibujos animados que pueden tener menos dedos (lo que en sí mismo es un atajo laboral).

Dos de los posibles culpables del ‘síndrome de dedos perdidos’ en Stable Diffusion y modelos similares. A continuación, ejemplos de manos de dibujos animados del conjunto de datos LAION-aesthetics que impulsa a Stable Diffusion. Fuente: https://www.youtube.com/watch?v=0QZFQ3gbd6I
Si esto es cierto, entonces la única solución obvia es volver a entrenar el modelo, excluyendo contenido no realista humano, asegurando que los casos genuinos de omisión (es decir, amputados) estén adecuadamente etiquetados como excepciones. Desde un punto de vista de curación de datos, esto sería un desafío bastante grande, particularmente para esfuerzos comunitarios con recursos limitados.
El segundo enfoque sería aplicar filtros que excluyan este tipo de contenido (es decir, ‘mano con tres/cinco dedos’) de manifestarse en el momento de la renderización, de la misma manera que OpenAI ha filtrado GPT-3 y DALL-E 2, para que su salida pueda regularse sin necesidad de volver a entrenar los modelos de origen.

Para Stable Diffusion, la distinción semántica entre dígitos e incluso miembros puede volverse horriblemente borrosa, recordando a la rama de ‘terror corporal’ de las películas de terror de la década de 1980 de los likes de David Cronenberg. Fuente: https://old.reddit.com/r/StableDiffusion/comments/x6htf6/a_study_of_stable_diffusions_strange_relationship/
Sin embargo, de nuevo, esto requeriría etiquetas que pueden no existir en todas las imágenes afectadas, lo que nos deja con el mismo desafío logístico y presupuestario.
Podría argumentarse que quedan dos caminos hacia adelante: lanzar más datos al problema, y aplicar sistemas interpretativos de terceros que puedan intervenir cuando se presentan fallos físicos de este tipo al usuario final (al menos, esto último daría a OpenAI un método para proporcionar reembolsos por renderizaciones de ‘terror corporal’, si la empresa estuviera motivada para hacerlo).
3: Personalización
Una de las posibilidades más emocionantes para el futuro de Stable Diffusion es la perspectiva de que los usuarios u organizaciones desarrollen sistemas revisados; modificaciones que permitan que el contenido fuera de la esfera preentrenada de LAION se integre en el sistema – idealmente sin el gasto ingobernable de entrenar el modelo entero de nuevo, o el riesgo involucrado al entrenar en un gran volumen de imágenes nuevas en un modelo maduro y capaz.
Por analogía: si dos estudiantes menos dotados se unen a una clase avanzada de treinta estudiantes, o bien se asimilan y ponen al día, o fracasan como outsiders; en cualquier caso, el rendimiento promedio de la clase probablemente no se verá afectado. Si 15 estudiantes menos dotados se unen, sin embargo, la curva de calificaciones para toda la clase probablemente sufrirá.
De manera similar, la red de relaciones sinérgicas y bastante delicadas que se construyen durante el entrenamiento del modelo sostenido y costoso puede verse comprometida, en algunos casos efectivamente destruida, por nuevos datos excesivos, lo que reduce la calidad de salida del modelo en general.
El caso para hacer esto es principalmente donde su interés radica en apropiarse completamente de la comprensión conceptual del modelo de relaciones y cosas, y apropiarse de ella para la producción exclusiva de contenido que se asemeja al material adicional que agregó.
Así, entrenar 500,000 fotogramas de Los Simpson en un punto de control existente de Stable Diffusion probablemente obtendrá, eventualmente, un mejor simulador de Los Simpson de lo que podría haber ofrecido la construcción original, suponiendo que suficientes relaciones semánticas amplias sobrevivan al proceso (es decir, Homer Simpson comiendo un hot dog, que puede requerir material sobre hot dogs que no estaba en su material adicional, pero que ya existía en el punto de control), y suponiendo que no quiera cambiar repentinamente de crear fabulosos paisajes de Greg Rutkowski – porque su modelo post-entrenado ha tenido su atención enormemente desviada, y no será tan bueno para hacer ese tipo de cosas como solía ser.
Un ejemplo notable de esto es waifu-diffusion, que ha entrenado con éxito 56,000 imágenes de anime en un punto de control completado y entrenado de Stable Diffusion. Es una perspectiva difícil para un aficionado, sin embargo, ya que el modelo requiere un mínimo de 30 GB de VRAM, mucho más allá de lo que probablemente esté disponible en el nivel de consumo en las próximas versiones de la serie 40XX de NVIDIA.

El entrenamiento de contenido personalizado en Stable Diffusion a través de waifu-diffusion: el modelo tardó dos semanas de post-entrenamiento en producir este nivel de ilustración. Las seis imágenes de la izquierda muestran el progreso del modelo, a medida que se entrenaba, en la producción de salida coherente con el tema basada en los nuevos datos de entrenamiento. Fuente: https://gigazine.net/gsc_news/en/20220121-how-waifu-labs-create/
Una gran cantidad de esfuerzo podría gastarse en este tipo de ‘bifurcaciones’ de puntos de control de Stable Diffusion, solo para ser obstaculizado por la deuda técnica. Los desarrolladores en el Discord oficial ya han indicado que las versiones posteriores de los puntos de control no necesariamente serán compatibles con versiones anteriores, incluso con la lógica de prompt que puede haber funcionado con una versión anterior, ya que su interés principal es obtener el mejor modelo posible, en lugar de respaldar aplicaciones y procesos heredados.
Por lo tanto, una empresa o individuo que decida bifurcar un punto de control en un producto comercial efectivamente no tiene vuelta atrás; su versión del modelo es, en ese punto, una ‘bifurcación dura’, y no podrá aprovechar los beneficios de las versiones posteriores de stability.ai – lo que es un compromiso bastante grande.
La esperanza actual y mayor para la personalización de Stable Diffusion es Textual Inversion, donde el usuario entrena una pequeña cantidad de CLIP-imágenes alineadas.

Una colaboración entre la Universidad de Tel Aviv y NVIDIA, la inversión textual permite el entrenamiento de entidades discretas y novedosas, sin destruir las capacidades del modelo de origen. Fuente: https://textual-inversion.github.io/
La limitación aparente principal de la inversión textual es que se recomiendan un número muy bajo de imágenes – como cinco. Esto efectivamente produce una entidad limitada que puede ser más útil para tareas de transferencia de estilo que para la inserción de objetos fotorealistas.
Sin embargo, actualmente se están llevando a cabo experimentos dentro de los varios Discord de Stable Diffusion que utilizan un número mucho mayor de imágenes de entrenamiento, y queda por ver cuán productivo puede resultar el método. De nuevo, la técnica requiere una gran cantidad de VRAM, tiempo y paciencia.
Debido a estos factores limitantes, podemos tener que esperar un poco para ver algunos de los experimentos de inversión textual más sofisticados de los entusiastas de Stable Diffusion – y para ver si este enfoque puede ‘ponerte en la imagen’ de una manera que se vea mejor que un corte y pega de Photoshop, mientras retiene la funcionalidad asombrosa de los puntos de control oficiales.
Publicado por primera vez el 6 de septiembre de 2022.













