00:00:00Es bueno ver a tantos aquí.
00:00:02Como ya mencioné en la introducción,
00:00:05les daré una inmersión en Flux,
00:00:07nuestra familia de modelos para generar y editar imágenes.
00:00:12Ya estaba...
00:00:13¿funciona.
00:00:14Soy Andy, cofundador de Black Force Labs.
00:00:17Antes de empezar con el modelo,
00:00:19quiero darles una visión general de lo que hacemos?
00:00:24En Black Force Labs,
00:00:25creemos que los medios visuales se convertirán en la interfaz central para la comunicación humana en el futuro.
00:00:34Nos vemos como el proveedor de infraestructura central para impulsar todas las imágenes y videos que los humanos usarán para interactuar entre sí,
00:00:46y no solo lo que las cámaras pueden capturar,
00:00:50sino mucho más allá.
00:00:51Con eso en mente, fundamos la empresa en agosto de 2024.
00:00:56Desde entonces,
00:00:57hemos crecido hasta tener 45 empleados y estamos distribuidos en dos sedes.
00:01:03La sede principal está en Friburgo,
00:01:06en la Selva Negra de Alemania,
00:01:08y también tenemos una oficina aquí en San Francisco.
00:01:12Desde que lanzamos nuestra familia de generación de imágenes,
00:01:17Flux,
00:01:18en agosto de 2024,
00:01:19cuando fundamos la empresa,
00:01:21siempre hemos estructurado los lanzamientos en tres niveles diferentes y hemos avanzado constantemente la familia de modelos.
00:01:32Los niveles son los siguientes.
00:01:34Tenemos los modelos Pro.
00:01:36Son superpotentes y los modelos más rápidos que ofrecemos.
00:01:41Están disponibles solo a través de la API de VFL y también a través de un par de socios de inferencia como,
00:01:49por ejemplo,
00:01:50File y Replicate.
00:01:52Supongo que también los conocen.
00:01:54Son muy fáciles de integrar y escalan a volúmenes masivos casi al instante..
00:02:03Este es el primer nivel,
00:02:05pero como algunos de ustedes sabrán,
00:02:07mis cofundadores y yo tenemos raíces muy fuertes en el código abierto,
00:02:12similar,
00:02:12creo,
00:02:13al fundador que nos ha invitado hoy.
00:02:15También somos los desarrolladores originales detrás de Stable Diffusion.
00:02:20Seguimos fieles a eso.
00:02:22Amamos la comunidad de código abierto,
00:02:24y por eso también ofrecemos pesos abiertos y modelos de código abierto..
00:02:29Tenemos los modelos Flux Dev.
00:02:32Estos están disponibles públicamente para descargar,
00:02:36para experimentar.
00:02:37Son totalmente personalizables y ofrecen mucha flexibilidad para cualquiera que quiera usarlos.
00:02:45Finalmente, tenemos los modelos Flux Schnell.
00:02:48Son completamente de código abierto y son,
00:02:51en cierto modo,
00:02:53el punto de entrada perfecto al ecosistema Flux.
00:02:56Hablando del ecosistema,
00:02:58si miran el Model Atlas en Hugging Face,
00:03:01que visualiza los,
00:03:03creo,
00:03:03modelos de base de código abierto más utilizados en diferentes dominios,
00:03:09podemos ver que el modelo más grande en Hugging Face con el ecosistema más amplio es nuestro modelo Flux Dev.
00:03:17Eso demuestra que Flux ya se ha convertido en el estándar para la generación abierta de imágenes.
00:03:25Obviamente,
00:03:26buscamos seguir avanzando o extendiendo nuestra distribución en el futuro.
00:03:32Eso es todo por la empresa.
00:03:34Déjenme ver si sigue sin funcionar.
00:03:36En fin.
00:03:37Ahora, la parte principal de la charla..
00:03:41Quería profundizar en Flux con ustedes,
00:03:44especialmente en nuestro modelo más reciente,
00:03:48Flux Context,
00:03:49que unifica la generación de texto a imagen y la edición.
00:03:53Hoy quiero hablarles de cómo unificar esto..
00:03:56Un par de palabras antes de eso.
00:03:59Creo que es superimportante tener este modelo conjunto porque,
00:04:03obviamente,
00:04:04la generación de imágenes tiene muchas aplicaciones interesantes y lo hemos visto el año pasado,
00:04:10pero la edición de imágenes,
00:04:12hasta este año,
00:04:13no había mantenido el mismo ritmo de desarrollo.
00:04:16La edición de imágenes es,
00:04:18de hecho,
00:04:19un caso de uso superimportante.
00:04:21Nos permite iterar sobre imágenes existentes y,
00:04:24creo,
00:04:25da a las personas un nivel adicional de control para modificar imágenes con precisión y demás.
00:04:31Esto es superimportante.
00:04:33Con Flux Context,
00:04:34hemos creado el momento decisivo para la edición de imágenes.
00:04:38Fue lanzado en junio de 2025.
00:04:40Es un modelo que combina la generación de imágenes con elementos para la edición como la consistencia de personajes,
00:04:48la referencia de estilo,
00:04:50la edición local y todo eso a una velocidad casi en tiempo real.
00:04:54Lo veremos más tarde..
00:04:57Pero como buen ejemplo, les traje esta fila de imágenes.
00:05:01De izquierda a derecha, empezamos con una imagen de entrada.
00:05:05Luego podemos pedirle al modelo que elimine este objeto de su cara y después podemos colocarla en un contexto completamente nuevo manteniendo la consistencia del personaje.
00:05:16Esto es superimportante.
00:05:18Se hizo mucho trabajo de ajuste fino en el pasado para lograr este tipo de consistencia de personajes en el modelo,
00:05:25basándose en modelos de texto a imagen disponibles públicamente,
00:05:29pero esta edición instantánea de imágenes nos permitió eliminar todo ese ajuste fino,
00:05:35que siempre es un poco laborioso,
00:05:37diría yo.
00:05:38Es realmente asombroso que esto ahora tarde cuatro segundos o algo así.
00:05:43Finalmente, podemos simplemente cambiar el escenario.
00:05:46En este caso,
00:05:47la imagen de la derecha,
00:05:49la cambiamos a una escena invernal.
00:05:51Genial.
00:05:51Aquí hay un par de ejemplos más de lo que también puede hacer.
00:05:55No solo es bueno para ediciones consistentes de personajes o algo así,
00:06:00sino que también es muy útil para la transferencia de estilo.
00:06:04Lo vemos en el lado izquierdo.
00:06:06Tomamos el estilo de la imagen de entrada y lo mapeamos a un nuevo contenido,
00:06:11o podemos hacer cosas como edición de texto,
00:06:14simplemente cambiando Montreal a Friburgo manteniendo la fuente consistente.
00:06:19Todo esto está combinado en un solo modelo y se puede interactuar con él a través de una interfaz de texto supersencilla.
00:06:27Genial.
00:06:28Muy importante,
00:06:29este modelo no solo es un modelo general,
00:06:31sino que también es muy bueno para resolver problemas de negocio específicos,
00:06:36importantes e interesantes.
00:06:38Por ejemplo,
00:06:39en el ejemplo de la izquierda,
00:06:41podemos extraer esta falda de una imagen 'in-the-wild' y obtenemos una toma de producto de esto y un zoom casi al instante,
00:06:49de nuevo,
00:06:50en cuestión de segundos.
00:06:51Esto,
00:06:52antes de estos modelos de edición,
00:06:54tardaba horas,
00:06:55días,
00:06:55o ni siquiera era posible.
00:06:57De manera similar,
00:06:58en el lado derecho,
00:06:59podemos pasar de un boceto a una salida completamente renderizada en un par de segundos.
00:07:05Genial.
00:07:06Como ya mencioné,
00:07:07Flux Context combina texto a imagen y edición de imágenes.
00:07:11Acabamos de ver un par de ejemplos.
00:07:13Veamos brevemente qué significa esto en términos de la pipeline del modelo que se necesita.
00:07:19Aquí vemos la pipeline clásica de texto a imagen.
00:07:22Bastante simple.
00:07:23Todos la conocemos.
00:07:24Usamos un prompt de texto.
00:07:26Lo pasamos por el modelo.
00:07:28El modelo luego hace algo de magia.
00:07:30Les explicaré cómo crear un modelo así en un segundo.
00:07:34Luego obtenemos una imagen que,
00:07:36con suerte,
00:07:36si el modelo es bueno,
00:07:38sigue nuestro prompt de texto de entrada.
00:07:40Si miramos la edición de imágenes, se ve bastante diferente.
00:07:44Empezamos con una imagen,
00:07:46que le mostramos al modelo de alguna manera,
00:07:49y luego no añadimos una instrucción de texto que describa una escena completa,
00:07:54sino solo un cambio a esa imagen.
00:07:56Aquí tenemos dos condicionamientos.
00:07:58La primera parte, solo tenemos más entradas.
00:08:01En el primer ejemplo, solo teníamos una entrada.
00:08:04Ahora describimos un cambio y el modelo debería modificar la imagen según el cambio.
00:08:10Algunas partes,
00:08:11como la iglesia aquí,
00:08:12deberían ser las mismas después de la edición.
00:08:15Otras no.
00:08:16Esto es lo que hacen estos modelos de edición.
00:08:19Es una tarea bastante diferente.
00:08:21Combinar esto en un solo modelo es realmente genial porque puedes hacer de todo.
00:08:26Puedes generar una imagen,
00:08:28luego editarla y obtener mucha más flexibilidad de alguna manera.
00:08:32Ya mencioné que antes de lanzar estos modelos de edición,
00:08:36o antes de ver estos modelos de edición generales,
00:08:39se hizo mucho trabajo de ajuste fino en modelos de texto a imagen para obtener este tipo de nivel de control en el modelo.
00:08:47Pero esto ya no es necesario.
00:08:49Podemos hacerlo al instante.
00:08:51Esto reduce significativamente el tiempo que se necesita para obtener buenos resultados.
00:08:57Así que esto es todo en cuanto a la pipeline.
00:09:00Ahora, veamos cómo podemos entrenar estos modelos.
00:09:03Y hay un algoritmo muy importante del que quiero hablar.
00:09:07El algoritmo que nos permite entrenar estos modelos se llama Latent Flow Matching,
00:09:12que se compone de dos aspectos,
00:09:14Latent y Flow Matching,
00:09:16y quiero arrojar un poco de luz sobre ambos..
00:09:24Empecemos con lo Latente.
00:09:25Esto proviene del modelado generativo latente.
00:09:28Es un algoritmo que mis cofundadores y yo ideamos hace casi cinco años.
00:09:32Para explicar lo que esto significa,
00:09:34veamos primero el siguiente ejemplo.
00:09:36Lo que visualizo aquí son básicamente dos imágenes,
00:09:39y para nosotros,
00:09:40se ven exactamente igual.
00:09:42La de la izquierda es un JPEG,
00:09:44y la de la derecha es la misma imagen como PNG.
00:09:47Así que la de la izquierda es una aproximación de la de la derecha,
00:09:51pero no vemos ninguna diferencia..
00:09:53¿O hay alguien que vea una diferencia en estas dos imágenes?
00:09:57No lo creo.
00:09:58Bien, ahora veamos el tamaño de archivo de estas imágenes.
00:10:02El tamaño de archivo del JPEG es en realidad casi un orden de magnitud menor que el tamaño de archivo del PNG.
00:10:10Esto es bastante notable,
00:10:11y todos sabemos cómo funciona la compresión de imágenes,
00:10:15pero el simple hecho de darnos cuenta de que aparentemente podemos eliminar mucha información de una imagen sin notarlo es bastante notable,
00:10:25diría yo..
00:10:26Así que,
00:10:27aparentemente,
00:10:27hay mucha información en una imagen que no podemos percibir con nuestro ojo humano.
00:10:33Otra forma de visualizar esto es graficar la similitud perceptual de una imagen en el último ejemplo de un JPEG,
00:10:40y la aproximación de esta imagen – perdón,
00:10:43en el último ejemplo de un PNG es la imagen – y la aproximación es el JPEG de esta imagen,
00:10:49y podemos graficarla contra el tamaño del archivo.
00:10:52Al hacer esto, obtenemos este gráfico.
00:10:55Este es un gráfico conceptual,
00:10:57así que no es real,
00:10:58pero conceptualmente se ve así.
00:11:00La similitud perceptual aumenta rápidamente y luego se mantiene en un nivel constante durante casi todo el tamaño del archivo.
00:11:08Esto es lo que aprovechan los algoritmos de compresión con pérdida como JPEG,
00:11:13y ahora podrían preguntarse qué tiene esto que ver con el modelado generativo.
00:11:19Nos muestra que para una señal perceptual,
00:11:21o una señal natural,
00:11:23como una imagen —para el audio es lo mismo—,
00:11:26para parecer real,
00:11:27o ser percibida como real.
00:11:28No necesitamos modelar todos los detalles de alta frecuencia que no podemos percibir,
00:11:34y por lo tanto,
00:11:35entrenar un modelo generativo en el espacio de píxeles con todos estos detalles de alta frecuencia sería en realidad un gran desperdicio de computación y tiempo,
00:11:46porque el modelo aprendería a representar aspectos que ni siquiera percibimos,
00:11:51así que es inútil aprender esto,
00:11:53¿verdad?
00:11:53Y eso está en el núcleo del modelado generativo latente.
00:11:57Así que,
00:11:58en lugar de entrenar un modelo generativo en el espacio de píxeles directamente sobre imágenes,
00:12:04aprendemos un modelo de compresión que extrae un espacio de menor dimensión,
00:12:09llamado espacio latente.
00:12:10Este espacio latente es lo que vemos aquí en el centro.
00:12:14Veamos si el puntero láser funciona.
00:12:16Oh, sí, este de aquí.
00:12:18¿Cómo aprendemos este modelo?
00:12:20Es realmente supersencillo..
00:12:24Usamos una imagen aquí a la izquierda.
00:12:26La pasamos por un codificador,
00:12:28así que,
00:12:29efectivamente,
00:12:29esto es un autocodificador,
00:12:31pasamos la imagen por el codificador,
00:12:34luego llegamos a este espacio latente,
00:12:36y la representación la pasamos por una operación que se llama regularización..
00:12:42Esto obliga al modelo a eliminar información de esta representación latente.
00:12:47Se puede implementar de forma discreta o continua,
00:12:51y luego,
00:12:51de nuevo,
00:12:52reconstruimos la imagen a partir de esta representación latente.
00:12:56Así que,
00:12:57un autocodificador clásico,
00:12:59que entrenamos para que produzca reconstrucciones similares a la entrada,
00:13:04y,
00:13:05muy importante,
00:13:06añadimos esta pérdida del discriminador.
00:13:08Esto se puede imaginar como un prior para asegurar que solo los detalles que importan perceptualmente a nuestros ojos humanos se reflejen en esta representación latente.
00:13:20De nuevo,
00:13:21esta regularización obliga al modelo a reducir o eliminar información,
00:13:26y el discriminador se asegura de que elimine la información correcta que no podemos percibir.
00:13:32Así,
00:13:33una vez que hemos entrenado este modelo,
00:13:35llegamos a este espacio latente que luego se utiliza para entrenar el modelo generado.
00:13:41El espacio latente es una representación de menor dimensión de la imagen de entrada o de una imagen que es perceptualmente equivalente.
00:13:51Este es básicamente el aspecto latente del algoritmo de 'latent flow-matching'.
00:13:56Hablemos del segundo, 'flow-matching'.
00:13:59De nuevo,
00:14:00todo lo que explico ahora ocurre en este espacio latente.
00:14:04Así que, lo que sea que hagamos ahora, lo ven aquí.
00:14:07En el lado izquierdo,
00:14:09cada imagen se incrusta en ese espacio latente,
00:14:12básicamente.
00:14:13Así que, sí, hablemos de 'flow-matching'.
00:14:16Los algoritmos de 'flow-matching' son una familia general de algoritmos que se utilizan para traducir de una distribución muy simple,
00:14:25que en nuestro caso es siempre la distribución normal estándar,
00:14:29así que ahora estamos hablando de distribuciones de probabilidad.
00:14:34Lo visualicé aquí.
00:14:35Esta es una distribución muy simple.
00:14:38Los algoritmos de 'flow-matching' traducen esto o nos proporcionan los medios para entrenar un campo vectorial,
00:14:45representado por una red neuronal,
00:14:48este de aquí,
00:14:49para mapear entre la distribución simple y distribuciones muy complicadas,
00:14:54como la distribución de datos de imágenes naturales.
00:14:57Así que esta es la distribución de datos.
00:15:00¿Qué hacemos para entrenar esto?
00:15:02El algoritmo de 'flow-matching' nos proporciona un medio muy simple para hacerlo.
00:15:08Todo lo que tenemos que hacer durante el entrenamiento es tomar una muestra de esta distribución normal estándar aquí.
00:15:16Así que tenemos una muestra,
00:15:18y luego la asignamos a una muestra de la distribución de datos,
00:15:23un ejemplo de entrenamiento,
00:15:24y acoplamos esto,
00:15:26y luego podemos construir este tipo de vector que los conecta directa y linealmente..
00:15:34Si hacemos esto para cada ejemplo en nuestro conjunto de datos de entrenamiento,
00:15:39es decir,
00:15:40simplemente tomamos el ejemplo,
00:15:42muestreamos aleatoriamente un punto de la normal estándar y los conectamos,
00:15:46entonces llegamos a este tipo de campo vectorial construido aquí.
00:15:51Ahora podría hablar mucho sobre las propiedades de los campos vectoriales.
00:15:55Una propiedad importante es que las trayectorias no pueden cruzarse en los campos vectoriales,
00:16:01y vemos que hay muchos cruces,
00:16:03así que este obviamente no es el verdadero campo vectorial que traduce entre cada punto de esta distribución,
00:16:10o entre esta distribución y aquella..
00:16:13Lo asombroso de 'flow-matching' es que,
00:16:16si simplemente sigues esta regla,
00:16:18es decir,
00:16:19entrenamos el modelo para que básicamente siempre prediga este tipo de vectores entre la muestra de datos y la muestra de la distribución normal estándar.
00:16:29Llegamos al verdadero campo vectorial, y este se ve así.
00:16:33Así que aquí vemos que las trayectorias ya no se cruzan,
00:16:37y el algoritmo de 'flow-matching' simplemente lo garantiza.
00:16:41Esto es un poco mágico,
00:16:43pero si lo escribimos matemáticamente,
00:16:45en realidad vemos que tiene sentido.
00:16:48Y así,
00:16:48podemos entrenar el modelo para que represente este verdadero campo vectorial que traduce entre la normal estándar y nuestra distribución de datos..
00:17:00Y,
00:17:00lo que es importante,
00:17:02queremos poder crear imágenes basadas en entradas de texto,
00:17:07así que lo que hacemos es condicionar esta red siempre a una entrada de texto,
00:17:13básicamente,
00:17:14para cada ejemplo de imagen.
00:17:16Genial..
00:17:17Entonces, ¿qué hacemos cuando muestreamos el modelo?
00:17:20Tenemos este campo vectorial que representa el mapeo entre esas dos distribuciones.
00:17:26Lo que hacemos es empezar con una muestra de la normal estándar.
00:17:30Podemos muestrearla con un ordenador, ¿verdad?
00:17:33Todos lo sabemos.
00:17:34Y luego integramos a lo largo de estas trayectorias representadas por la red neuronal.
00:17:39Podemos hacer esto con un simple algoritmo de Euler hacia adelante.
00:17:43Probablemente muchos de ustedes los conozcan.
00:17:46Así que,
00:17:47con un esquema de integración numérica,
00:17:49podemos simplemente integrar a lo largo de estas trayectorias y luego llegar a la muestra de datos.
00:17:56La pasamos por el decodificador de nuevo y llegamos.
00:17:59Así que,
00:17:59de nuevo,
00:18:00esto ocurre en el espacio latente,
00:18:02pero aquí llegamos de nuevo al espacio de píxeles.
00:18:05Y así es como puedo crear imágenes basadas en un prompt de texto.
00:18:10Genial.
00:18:10Una cosa,
00:18:11estos esquemas de integración numérica son bastante,
00:18:14creo,
00:18:15usan muchos pasos,
00:18:16así que desglosan este proceso paso a paso en hasta 50 pasos.
00:18:20Así que estos modelos de 'latent flow matching' son inherentemente bastante lentos y tardan entre 30 segundos y un minuto en generar una imagen,
00:18:29lo cual es un poco largo..
00:18:32Hablaré de cómo hacerlos rápidos muy pronto.
00:18:34Pero este es el algoritmo general de 'latent flow matching'.
00:18:38Así que 'latente' de nuevo,
00:18:39conecta o representa este espacio latente o significa este espacio latente donde entrenamos el modelo.
00:18:45Y el algoritmo de 'flow matching' es lo que acabamos de discutir aquí.
00:18:49Bien,
00:18:49ahora expliqué cómo creamos imágenes basadas en prompts de texto,
00:18:53pero ¿cómo se aplica esto ahora a 'context',
00:18:55que es un modelo de edición,
00:18:57verdad?
00:18:57Esto también es supersencillo.
00:18:59Así que esta es una arquitectura básica de Flux Context.
00:19:02Es un modelo transformador.
00:19:03Todos lo sabemos..
00:19:05Es un poco especial, pero la magia reside en la entrada.
00:19:08Así que vemos aquí a la izquierda la entrada al modelo.
00:19:12Primero tenemos la entrada de texto que simplemente es incrustada por un codificador de texto en un conjunto de tokens de texto.
00:19:21Y luego tenemos el codificador de imágenes que ya vimos en la última diapositiva,
00:19:26¿verdad?
00:19:27Este de aquí.
00:19:28Esto es lo que vemos ahora.
00:19:30Así que tenemos este codificador de imágenes y ahí tenemos dos conjuntos de tokens visuales.
00:19:36Primero tenemos el conjunto de tokens visuales que realmente usamos para generar.
00:19:41Esta será la imagen de salida.
00:19:43Y luego tenemos,
00:19:45si queremos hacer edición de imágenes,
00:19:47un segundo conjunto de tokens visuales que simplemente modelan o que simplemente representan la imagen de contexto.
00:19:55Es decir,
00:19:56la imagen de referencia que le estoy mostrando al modelo.
00:19:59Y lo que hacemos es pasar esto al modelo transformador.
00:20:03Es uno especial porque contiene los llamados bloques de doble flujo.
00:20:08Estos son,
00:20:09diría yo,
00:20:09una especie de modelos expertos para cada fidelidad.
00:20:13Así que aquí manejamos los tokens visuales y los tokens de texto por separado..
00:20:20Para todo,
00:20:20excepto para la operación de atención,
00:20:23la operación de atención ocurre conjuntamente sobre todos los tokens.
00:20:28Y luego tenemos bloques estándar,
00:20:30bloques transformadores estándar donde básicamente mapeamos todas las entradas y los tokens de texto y los tokens visuales con los mismos mapeos antes de la operación de atención.
00:20:43Y así, podemos simplemente pasar a la edición de imágenes..
00:20:48Si proporcionan una imagen de entrada aquí y si hacen generación de texto a imagen,
00:20:54simplemente no la proporcionan y entonces solo tenemos un prompt de texto como entrada,
00:21:00¿verdad?
00:21:00Genial.
00:21:01Último punto aquí.
00:21:02¿Cómo es el modelo tan rápido?
00:21:04No sé cuántos de ustedes conocen los modelos Flux.
00:21:07¿Podrían levantar la mano si conocen los modelos Flux?
00:21:11O en realidad, algunos.
00:21:12Bien, genial.
00:21:13Así que todos sabemos que son bastante rápidos, ¿verdad?
00:21:17¿A qué me refiero cuando digo rápido?
00:21:20Básicamente,
00:21:20somos la mayoría de las veces órdenes de magnitud más rápidos que los modelos comparables.
00:21:26Así que aquí,
00:21:27por ejemplo,
00:21:28vemos un modelo obviamente muy lento pero bueno,
00:21:31GPD image one.
00:21:32También aquí para la edición,
00:21:34los modelos Flux son más de 10 veces más rápidos,
00:21:38incluso más de,
00:21:39sí,
00:21:3920 veces.
00:21:40Así que es realmente una locura lo rápidos que son en comparación con modelos comparativamente potentes.
00:21:47Y la razón de eso es un algoritmo que desarrollamos hace dos,
00:21:51tres años.
00:21:51Se llama 'adversarial diffusion distillation' y el objetivo de este algoritmo es reducir el número de pasos de integración numérica.
00:22:00Les dije antes que estos son la mayoría de las veces 50 para un modelo de 'flow matching' estándar y el objetivo aquí es reducirlos a tan solo cuatro.
00:22:10Cada paso de integración numérica significa un pase hacia adelante a través de la red neuronal,
00:22:17así que podemos imaginar que esto lleva mucho tiempo,
00:22:20por lo que queremos reducirlo tanto como sea posible.
00:22:24¿Cómo funciona?
00:22:25Inicializamos dos redes aquí, un maestro y un estudiante.
00:22:29Ambas se inicializan a partir del modelo de 'flow matching' aprendido mediante el algoritmo que les acabo de mostrar.
00:22:37Y lo que hacemos es entrenar al estudiante para que obtenga la misma calidad de imagen en la salida en cuatro pasos que el maestro en 50 pasos.
00:22:47Este es el objetivo y así es como lo hacemos.
00:22:50Empezamos con una imagen,
00:22:51la codificamos de nuevo a una latencia aquí y luego generamos una imagen de salida para el estudiante en cuatro pasos o en el número de pasos objetivo que queremos hacer.
00:23:03Y luego la decodificamos de nuevo a píxeles..
00:23:08Al principio, esta imagen se ve muy borrosa y poco realista.
00:23:12Y el objetivo es mejorarla, obviamente.
00:23:14Así que lo que hacemos es usar esto de nuevo,
00:23:17codificarlo de nuevo a latencia y luego hacer lo mismo con el maestro pero en 50 pasos en lugar de cuatro pasos.
00:23:25Esto resulta en una imagen de alta calidad y luego usamos esta pérdida de destilación,
00:23:30básicamente solo una pérdida para asegurar que las distribuciones del maestro o del estudiante coincidan con las del maestro.
00:23:38Esto por sí solo,
00:23:39desafortunadamente,
00:23:41no nos permitiría generar imágenes que parezcan reales.
00:23:44Así que lo que añadimos es otra pérdida del discriminador.
00:23:48Ya vimos esto para la parte del autocodificador en la parte de modelado generativo latente de la charla anterior.
00:23:55Esto es básicamente lo mismo.
00:23:57Así que entrenamos un discriminador para distinguir las imágenes generadas por el estudiante de las imágenes reales que introducimos aquí.
00:24:06Y esto ocurre en un espacio de características de dyno v2 o en un espacio de modelo de representación de imagen aprendido,
00:24:14de alguna manera.
00:24:15Y así,
00:24:15podemos entrenar el modelo para que al final genere imágenes realistas en lugar de usar 50 pasos,
00:24:22solo usa cuatro pasos.
00:24:23Eso es obviamente una enorme aceleración.
00:24:26Sin embargo, último punto aquí.
00:24:28Si miramos esto,
00:24:29parece que hay muchos gastos generales,
00:24:31¿verdad?
00:24:32Porque aquí tenemos que pasar al espacio latente.
00:24:35Así que empezamos en el espacio de la imagen,
00:24:38pasamos al espacio latente,
00:24:40y decodificamos de nuevo,
00:24:41luego tenemos que codificar de nuevo y decodificar de nuevo.
00:24:45Y luego,
00:24:46este también codifica de nuevo a otro espacio de representación.
00:24:50Mucho gasto general,
00:24:51muchos costos de memoria relacionados con esto.
00:24:54Y esto es simplemente muy...
00:24:56cuando lo ideamos,
00:24:57nos asombró porque nos permitió entrenar modelos rápidos.
00:25:01Fue muy laborioso entrenar esto.
00:25:03Así que pensamos,
00:25:04'bien,
00:25:04¿cómo podemos simplificar esto?' Y la respuesta es siempre la respuesta.
00:25:09Simplemente muévelo al espacio latente siempre que tengas un píxel.
00:25:13Así que lo que hicimos fue idear un enfoque de destilación de difusión adversaria latente?
00:25:19Es básicamente muy similar a lo que hicimos para el algoritmo general de modelado generativo latente.
00:25:26Simplemente movemos todo aquí al espacio latente.
00:25:29Lo mismo,
00:25:30pero en lugar de tener que usar estos codificadores y decodificadores,
00:25:34podemos simplemente deshacernos de ellos.
00:25:37Y,
00:25:37lo que es importante,
00:25:39como discriminador,
00:25:40ya no usamos dyno..
00:25:44Este modelo de representación de imágenes,
00:25:46usamos al maestro porque ese de todos modos ya vive en el espacio latente,
00:25:50nos proporciona una representación de imagen muy buena.
00:25:53Así que también podemos usar al maestro como discriminador.
00:25:57Y el resto es básicamente casi lo mismo.
00:25:59También eliminamos la pérdida de destilación.
00:26:02Descubrimos que no la necesitamos,
00:26:04lo cual también es genial..
00:26:06Así que tenemos una pérdida menor y todo se simplifica.
00:26:11Y así,
00:26:11podemos,
00:26:12de una manera muy eficiente en memoria,
00:26:16también reducir el número de pasos de integración de cinco a cuatro.
00:26:23Así que tenemos una aceleración de 12.5 veces,
00:26:27y eso es en realidad lo que vemos como este orden de magnitud en los gráficos que les mostré al principio de esta sección.
00:26:39Así que,
00:26:39básicamente,
00:26:41así es como obtenemos un modelo muy rápido a partir de un modelo de 'flow matching' base.
00:26:49Y ahora,
00:26:50antes de que termine esta charla,
00:26:53les he traído una demostración para mostrarles Flux un poco en acción.
00:27:00Veamos.
00:27:01Así que usémoslo para editar imágenes aquí.
00:27:05Déjenme subir algo después.
00:27:07¿Qué estamos haciendo aquí.
00:27:10Este se ve bien?
00:27:11Sí.
00:27:12Bien.
00:27:12Sí.
00:27:13Esto está bien.
00:27:14Así que aquí empiezo con el logo de mi club de fútbol favorito,
00:27:20el SC Freiburg.
00:27:22Tengo que decir 'soccer' cuando estoy en EE.
00:27:26UU.
00:27:27Bien.
00:27:27Este es mi club favorito y quiero crear una camiseta con este logo.
00:27:34Así que digamos, 'pon este logo en una camiseta'.
00:27:38Se siente un poco raro porque no tengo una pantalla delante de mí.
00:27:45Bien.
00:27:45Aquí vamos.
00:27:46Generando.
00:27:47Déjenme hacer esto un poco más pequeño..
00:27:53Quizás así.
00:27:54Bien.
00:27:55Genial.
00:27:55Esperamos un par de segundos y podemos obtener este bonito logo en una camiseta.
00:28:03Y ahora lo bueno es que podemos seguir, ¿verdad?
00:28:07Podemos iterar sobre esto.
00:28:09Así que digamos que este logo es un poco demasiado grande,
00:28:14diría yo.
00:28:15'Haz el logo más pequeño y ponlo en la parte restante'.
00:28:20De nuevo.
00:28:21Esperamos un par de segundos.
00:28:24Bien.
00:28:24Genial.
00:28:25Y llegamos a un resultado que es realmente muy bueno.
00:28:30Eso es lo que quería.
00:28:31Quiero empezar con este de nuevo.
00:28:34Y ahora quiero cambiar el color porque el color del SC Freiburg no es negro,
00:28:41es rojo.
00:28:42Así que 'haz la camiseta roja'.
00:28:45También supersencillo.
00:28:47Ahora estamos en la edición local.
00:28:50Solo estamos editando partes locales de la imagen, ¿verdad?
00:28:55En este caso, el color.
00:28:57Y,
00:28:58lo que es importante,
00:29:00hemos hecho un par de ediciones y todavía vemos que el logo está representado de manera muy consistente.
00:29:09Así que esta es la consistencia de personaje o,
00:29:13en este caso,
00:29:15de objeto que vimos.
00:29:16Esto es superimportante.
00:29:19Piensen en un especialista en marketing que tiene un objeto y quiere colocarlo en un contexto determinado,
00:29:28¿verdad?
00:29:29Esto,
00:29:29en términos de valor empresarial,
00:29:32es genial,
00:29:33es superimportante.
00:29:35Y ahora,
00:29:36finalmente,
00:29:37añadimos una transformación más compleja.
00:29:40Podemos decir 'pon la camiseta a un hombre caminando en el parque'.
00:29:46Ups.
00:29:47Así que esta es una transformación compleja y podrían haber dicho,
00:29:53'bueno,
00:29:53cosas como cambiar el color se pueden hacer en Photoshop,
00:29:59¿verdad?' Históricamente,
00:30:01cosas así,
00:30:02esto no es lo que las herramientas de generación de imágenes estándar o anteriores no basadas en IA solían poder hacer o podían hacer?
00:30:14Esto es realmente genial.
00:30:16Así que aquí tenemos ahora y finalmente,
00:30:20creo que estoy a tiempo,
00:30:22pero hagamos una última cosa que muestra lo general que es este modelo.
00:30:28También podemos hacer transferencia de estilo, ¿verdad.
00:30:33Así que digamos, 'haz de esto una pintura de acuarela'.?
00:30:42Muy bien, el último.
00:30:44Y antes de modelos como estos, probablemente habrías...
00:30:48habrías entrenado un ajuste fino único para cada una de estas tareas y ahora podemos simplemente combinarlo en una sola cosa,
00:30:58lo cual es bastante genial.
00:31:01Genial.
00:31:01Así que ahora podría imprimirlo y colgarlo en mi pared o algo así.
00:31:06En fin, sí, creo que esto muestra el poder de estos modelos.
00:31:11Oh, algo se ha caído.
00:31:13Quería mostrarles una última diapositiva porque he terminado,
00:31:18pero estamos contratando y si quieren unirse a nosotros,
00:31:22por favor,
00:31:23escaneen esto aquí o visiten el 'playground',
00:31:27la demo que les acabo de mostrar,
00:31:29disponible gratuitamente.
00:31:31Muchas gracias.
00:31:33Espero que hayan aprendido algo..