[La interpretación del principio de difusión estable es fácil de entender, y el texto largo del hígado reventado de 10,000 palabras de nivel épico, aliméntelo a la boca]

imagen


Sitio web personal

1. Prefacio (saltable)

Hola a todos. Soy Tian-Feng. Hoy presentaré algunos principios de difusión estable. El contenido es fácil de entender. Porque suelo jugar Ai pintando, así que es como escribir un artículo para explicar su principio. Ha sido un largo tiempo, si te es de utilidad, espero darle manita arriba, gracias.

Como modelo de generación de imágenes de código abierto Stability-AI, la difusión estable no es inferior a ChatGPT, y su impulso de desarrollo no es menor que el de la mitad del viaje. Con el soporte de muchos complementos, su lanzamiento también se mejora de forma inalámbrica. Por supuesto , el método también es ligeramente más complicado que el punto intermedio. código fuente de la tesis

En cuanto a por qué código abierto, **Fundador: La razón por la que lo hice es porque creo que es parte de la narrativa compartida, y alguien necesita mostrar públicamente lo que está pasando. Nuevamente, esto debería ser de código abierto por defecto. Dado que el valor no reside en ningún modelo o dato patentado, crearemos modelos de código abierto que sean auditables, incluso con datos autorizados. **No hablemos mucho, empecemos.

Dos, difusión estable

Puede ser difícil para usted entender las imágenes en el documento original de arriba, pero no importa. Dividiré las imágenes de arriba en módulos individuales para su interpretación, y finalmente los combinaré. Creo que puede entender lo que significa cada paso de la imagen sí.

Primero, dibujaré un diagrama de modelo simplificado contra el diagrama original para una fácil comprensión. Comencemos con la fase de entrenamiento. Puede encontrar que falta VAEdecoder. Esto se debe a que nuestro proceso de entrenamiento se completa en el espacio latente. Ponemos el decodificador en la segunda fase de la fase de muestreo. El dibujo webui de difusión estable que usamos generalmente está en la fase de muestreo. En cuanto a la fase de entrenamiento, la mayoría de nosotros, la gente común, no podemos completarla en absoluto. El tiempo de entrenamiento que necesita debe medirse por año de GPU (una sola GPU V100 tarda un año). Si tiene 100 tarjetas, debería ser posible durante un mes. En cuanto al costo fotoeléctrico de ChatGPT de decenas de millones de dólares y decenas de miles de clústeres de GPU, se siente que la IA está luchando por el poder de cómputo ahora. Alejándose de nuevo, vuelve
imagen

1 clip

Comencemos primero con la palabra indicadora. Ingresamos una palabra indicadora, un gato con rayas blancas y negras (un gato con rayas blancas y negras), y el clip asignará el texto a un vocabulario, y cada signo de puntuación de palabra tiene un número correspondiente. cada palabra, un token. Antes de que la entrada de difusión estable se limitara a 75 palabras (ahora desaparecidas), es decir, 75 tokens. Mirando lo anterior, puede encontrar cómo 6 palabras corresponden a 8 tokens. Esto se debe a que también contiene el token de inicio y el token final, cada número corresponde a un vector de 768 dimensiones, que puede considerarse como la tarjeta de identificación de cada palabra, y los vectores de 768 dimensiones correspondientes a palabras con significados muy similares son básicamente los mismos. Después del clip obtenemos un vector de texto (8,768) correspondiente a la imagen.

La difusión estable utiliza el modelo de preentrenamiento del clip de openAi, es decir, puede ser usado después del entrenamiento por otros. ¿Cómo se entrena el clip? ¿Cómo relaciona las imágenes con la información del texto? (La siguiente extensión se puede ver u omitir, y no afecta la comprensión. Solo necesita saber que se usa para convertir la palabra indicadora en un vector de texto correspondiente a la imagen generada)

Los datos requeridos por CLIP son imágenes y sus títulos, y el conjunto de datos contiene alrededor de 400 millones de imágenes y descripciones. Debe obtenerse directamente del rastreador, y la información de la imagen se usa directamente como etiqueta. El proceso de entrenamiento es el siguiente:

CLIP es una combinación de codificador de imagen y codificador de texto, que utiliza dos codificadores para codificar datos por separado. Las incrustaciones resultantes se comparan luego utilizando la distancia del coseno Al comienzo del entrenamiento, incluso si la descripción del texto coincide con la imagen, la similitud entre ellos debe ser muy baja.

imagen

A medida que el modelo se actualiza continuamente, las incrustaciones del codificador para la codificación de imágenes y texto se volverán gradualmente similares en las etapas posteriores. La repetición de este proceso en el conjunto de datos y el uso de un codificador de gran tamaño de lote finalmente pueden generar un vector de incrustación en el que existe una similitud entre la imagen de un perro y la oración "imagen de un perro".

Proporcione un mensaje de texto, luego calcule la similitud de cada mensaje y encuentre el que tenga la probabilidad más altaimagen

2. modelo de difusión

Arriba hemos obtenido una entrada de unet, todavía necesitamos una entrada de una imagen de ruido, si ingresamos una imagen de gato de 3x512x512, no procesamos la imagen de gato directamente, sino que convertimos la imagen de 512x512 a través del codificador VAE Comprimir desde el espacio de píxeles ( espacio de píxeles) al espacio latente (espacio latente) 4x64x64 para el procesamiento, y la cantidad de datos es casi 64 veces menor.

[imagen

Un espacio latente es simplemente una representación de datos comprimidos. La compresión se refiere al proceso de codificación de información con menos bits que la representación original. La reducción de dimensionalidad perderá algo de información, pero en algunos casos, la reducción de dimensionalidad no es mala. A través de la reducción de la dimensionalidad, podemos filtrar información menos importante y mantener solo la información más importante.

Después de obtener el vector espacial latente, ahora llegamos al modelo de difusión, por qué la imagen se puede restaurar después de agregar ruido, el secreto está en la fórmula, aquí uso el documento DDPM como explicación teórica, el documento y, por supuesto, el versión mejorada DDIM, etc., si está interesado, compruébelo usted mismo

difusión hacia adelante (difusión hacia adelante)

  • El primero es la difusión directa (forward difusion), que es el proceso de agregar ruido, y finalmente se convierte en un ruido puro.

  • Se suma ruido gaussiano en cada momento, y este último momento se obtiene sumando ruido en el momento anterior

imagen

Entonces, ¿tenemos que obtenerlo del paso anterior cada vez que agregamos ruido?¿Podemos obtenerlo en el primer paso de agregar ruido? La respuesta es SÍ, el efecto es: agregamos ruido a la imagen durante el proceso de entrenamiento es aleatorio, si aleatorizamos a 100 pasos de ruido (suponiendo que el número de pasos de tiempo se establece en 200 pasos), si queremos agregue ruido del primer paso, obtenemos el segundo paso, damos vueltas y vueltas, lleva demasiado tiempo, de hecho, estos ruidos agregados son regulares, nuestro objetivo actual es obtener la imagen con ruido agregado a la imagen en cualquier momento. tiempo siempre y cuando tengamos la imagen original X0, sin tener que conseguir paso a paso la imagen de ruido deseada.

inserte la descripción de la imagen aquí

Permítanme explicar lo anterior, de hecho, he marcado claramente lo que debe marcarse.

Primero, el rango de αt es 0.9999-0.998,

En segundo lugar, el ruido agregado a la imagen se ajusta a la distribución gaussiana, es decir, el ruido agregado al vector espacial latente se ajusta a un valor medio de 0 y una varianza de 1. Cuando Xt-1 se lleva a Xt, ¿por qué los dos los elementos se pueden combinar, porque Z1Z2 son ambos Se ajusta a la distribución gaussiana, entonces su suma Z2' también se ajusta, y la suma de sus varianzas es la nueva varianza , así que suma sus respectivas varianzas, (la que tiene el signo de raíz es la desviación estándar), si no puede entenderlo, puede considerarlo un teorema. Permítanme decir una cosa más, para Z–>a+bZ, entonces la Gaussiana de Z también es de (0, σ)–>(a, bσ), y ahora obtenemos la relación entre Xt y Xt-2

En tercer lugar, si trae Xt-2 nuevamente, obtiene la relación con Xt-3 y encuentra la ley, que es la multiplicación acumulativa de α, y finalmente obtiene la relación entre Xt y X0, ahora podemos obtener directamente cualquier imagen ruidosa en el momento.

En cuarto lugar, porque el ruido de inicialización de la imagen es aleatorio, suponiendo que establezca el número de pasos de tiempo (timesteps) en 200, es decir, divida el intervalo 0,9999-0,998 en 200 partes iguales, que representan el valor α en cada momento, según la fórmula de Xt y X0, debido a que α se multiplica (más pequeño), se puede ver que cuanto más avanza, más rápido se agrega el ruido, aproximadamente en el intervalo de 1-0.13, 0 el tiempo es 1, entonces Xt representa la imagen en sí, y 200 representa la imagen con α siendo aproximadamente 0.13 El ruido ocupa 0.87 Debido a que es una multiplicación, el ruido se hace cada vez más grande No es un proceso promedio.

Quinto, agregue una oración, si el truco de reparametrización (truco de reparametrización)
es X(u,σ2), entonces X se puede escribir en la forma de X=μ+σZ, donde Z~N(0,1). Este es el truco de la reparametrización.

La técnica de reparametrización es muestrear de una distribución con parámetros.Si muestrea directamente (la acción de muestreo es discreta y no diferenciable), no hay información de gradiente, entonces en BP backpropagation When , el parámetro gradiente no se actualizará. El truco de la reparametrización nos permite muestrear desde , conservando la información del gradiente.

difusión inversa

  • Una vez que se completa la difusión directa, el siguiente paso es la difusión inversa. Esto puede ser más difícil que el anterior. La clave es cómo obtener la imagen original paso a paso a partir de una imagen ruidosa.

imagen

  • A partir de la dirección inversa, nuestro objetivo es obtener un X0 libre de ruido a partir de la imagen de ruido Xt. Comenzamos por encontrar Xt-1 a partir de Xt. Aquí, primero asumimos que se conoce X0 (ignore por qué se conoce la suposición) y lo reemplazaremos más tarde. En cuanto a cómo reemplazarlo, ¿no se conoce la relación entre Xt y X0 en la difusión hacia adelante? Ahora sabemos Xt, y Xt se usa para representar X0, pero todavía hay un ruido Z que se desconoce En este momento entrará en juego Unet, necesita poner Ruido predicho.
  • Aquí usamos la fórmula bayesiana (es decir, la probabilidad condicional), usamos los resultados de la fórmula bayesiana, hemos escrito un documento antes

imagen

Es decir, sabiendo Xt para encontrar Xt-1, no sabemos cómo encontrar la dirección inversa, pero buscando la dirección directa, si conocemos X0, entonces podemos encontrar estos elementos.
inserte la descripción de la imagen aquí
(https://tianfeng.space/wp-content/uploads/2023/05/download-3.png)(https://tianfeng.space/wp-content/uploads/2023/05/download-3.png)
Comencemos a interpretar, dado que estos tres elementos están todos en línea con la separación gaussiana, luego traigamos la distribución gaussiana (también llamada distribución normal), por qué su multiplicación es igual a la suma, porque e2 * e3 = e2+3, esto es comprensible ( pertenece a exp, que es la potencia de e), bueno, ahora tenemos una fórmula general, y luego continuamos simplificando

En primer lugar, expandimos el cuadrado. Ahora la incógnita es solo Xt-1, y tiene el formato AX2+BX+C. No olvides que incluso la suma está en línea con la distribución gaussiana. Ahora hacemos el original Fórmula gaussiana en el mismo formato, y el rojo es la varianza. El recíproco del azul multiplicado por la varianza y dividido por 2 para obtener el valor medio μ (el resultado de la simplificación se muestra a continuación, si está interesado en usted mismo, simplifique usted mismo), y regrese a X0. Antes se decía que X0 era conocido, y ahora se convierte a Xt (Conocido) significa, sustituyendo μ, ahora solo Zt permanece desconocido,inserte la descripción de la imagen aquí

  • Zt es en realidad el ruido que queremos estimar en cada momento
    - aquí usamos el modelo Unet para predecir - hay tres parámetros de entrada del modelo, que son la distribución Xt
    en el momento actual y el tiempo t , así como el texto anterior vector , y luego emite el ruido predicho, este es todo el proceso,

imagen

  • El algoritmo 1 anterior es el proceso de entrenamiento,

El segundo paso es obtener datos. En términos generales, es una especie de gato, perro o algo así, o una especie de imagen de estilo. No puede venir con todo tipo de imágenes en un lío, y el modelo no puede aprender. él.

El tercer paso es decir que a cada imagen se le asigna aleatoriamente un momento de ruido (como se mencionó anteriormente),

En el cuarto paso, el ruido se ajusta a la distribución gaussiana,

El quinto paso es calcular la pérdida del ruido real y el ruido predicho (la entrada DDPM no tiene vector de texto, si no lo escribes lo entiendes como una entrada adicional), y actualizas los parámetros. Hasta que el ruido de la salida del entrenamiento sea muy diferente del ruido real, se entrena el modelo Unet

  • A continuación, llegamos al proceso de muestreo Algorithm2
  1. ¿No significa que Xt se ajusta a la distribución gaussiana?
  2. Ejecute T veces y encuentre Xt-1 a X0 a su vez, ¿no es T veces?
  3. ¿No es Xt-1 la fórmula que derivamos de la difusión inversa, Xt-1=μ+σZ, se conocen la media y la varianza, el modelo Unet predice el único ruido desconocido Z, εθ se refiere al Unet entrenado ,

mapa de muestreo

  • Para facilitar la comprensión, dibujé el diagrama de Vincent y el diagrama de Tusheng respectivamente. Las personas que usan webui de difusión estable para dibujar deben sentirse familiares. Si es un diagrama de Vincent, es para inicializar directamente un ruido y realizar un muestreo.
  • La imagen es para agregar ruido en su base original, y el peso del ruido lo controla usted mismo. ¿La interfaz webui tiene un rango de redibujado, eso es todo,
  • El número de iteraciones es el número de pasos de muestreo de nuestra interfaz webui.
  • La semilla de semilla aleatoria es una imagen de ruido que obtuvimos al azar inicialmente, por lo que si desea reproducir la misma imagen, la semilla debe ser consistente

imagen

imagen

Resumen de etapa

Miremos esta imagen de nuevo ahora. No hablé de eso, excepto de Unet (que se presentará por separado a continuación). ¿No es mucho más simple? El extremo izquierdo es el codificador-decodificador en el espacio de píxeles, y el extremo derecho es el clip que convierte el texto en un vector de texto En el medio Lo anterior es la adición de ruido, y la parte inferior es el ruido de predicción de Unet, y luego la imagen de salida se obtiene mediante muestreo y decodificación continuos. Este es el mapa de muestreo del artículo original, sin dibujar el proceso de entrenamiento.

imagen

3. Modelo Unet

Se cree que el modelo unet es más o menos conocido por todos, es una fusión de características de múltiples escalas, como la pirámide de imágenes FPN, PAN, muchas de las cuales son ideas similares, generalmente usan resnet como columna vertebral (reducción de muestreo) y actúan como un codificador, de modo que podamos obtener mapas de características de múltiples escalas, y luego, en el proceso de muestreo ascendente, unión de muestreo ascendente (mapas de características obtenidos mediante muestreo descendente antes), este es un Unet ordinario

imagen

¿Cuál es la diferencia entre la Unet de stablediffusion? Encontré una foto aquí. Admiro a esta joven por su paciencia. Déjame tomar prestada su foto.

imagen

Permítanme explicar el módulo ResBlock y el módulo SpatialTransformer. La entrada es timestep_embedding, context y input. Las tres entradas son el número de pasos de tiempo, los vectores de texto, las imágenes con ruido y el número de pasos de tiempo. Puede entenderlo como el código de posición en el transformador, en lenguaje natural Se usa para decirle al modelo la información de posición de cada palabra en una oración. Diferentes posiciones pueden tener significados muy diferentes. Aquí, agregar información de paso de tiempo puede entenderse como decirle al modelo que agregue el información de tiempo del primer paso del ruido (por supuesto, esto es lo que entiendo).

timestep_embedding usa codificación seno y coseno

imagen

La entrada del módulo ResBlock es la codificación de tiempo y la salida de imagen convolucional, sumarlos, esta es su función, sin mencionar los detalles específicos, es convolución, conexión completa, estos son muy simples.

La entrada del módulo SpatialTransformer es el vector de texto y la salida del paso anterior ResBlock,

imagen

Habla principalmente de atención cruzada, y otras son transformaciones de algunas dimensiones, operaciones de convolución y varias normas de grupo normalizadas, normas de capa,

Use la atención cruzada para fusionar las características del espacio latente (espacio latente) con las características de otra secuencia modal (vector de texto), y agréguelo al proceso inverso del modelo de difusión, prediga inversamente el ruido que debe reducirse en cada paso a través de Unet, y use el ruido GT y La función de pérdida para el ruido de predicción calcula los gradientes.

Mirando la imagen en la esquina inferior derecha, puede saber que Q es la característica del espacio latente (espacio latente), y KV se obtiene conectando dos conexiones completas de vectores de texto, y el resto es la operación normal del transformador. QK y softmax, se obtiene una puntuación, luego se multiplica por V, transformando la salida de la dimensión, puede pensar en el transformador como un extractor de características, puede mostrarnos información importante (solo para ayudar a comprender), casi así, después de la operación es similar, y finalmente genera el ruido predicho.

Aquí debe estar familiarizado con el transformador, saber qué es la atención propia, qué es la atención cruzada, si no sabe cómo encontrar un artículo, siento que no se puede explicar claramente.

Terminado, adiós, muestra un cuadro de comparación webui

3. Extensión webui de difusión estable

recorte de parámetros

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_62403633/article/details/131022283
Recomendado
Clasificación