00:00:00Que bom ver tantos aqui.
00:00:02Como já disse na introdução,
00:00:04vou apresentar o Flux,
00:00:06nossa família de modelos para gerar e editar imagens.
00:00:11Eu já estava...
00:00:12está funcionando.
00:00:13Sou Andy, cofundador da Black Force Labs.
00:00:17Antes de começar a falar do modelo,
00:00:20quero dar uma visão geral do que fazemos?
00:00:24Na Black Force Labs,
00:00:25acreditamos que a mídia visual se tornará a interface central para a comunicação humana no futuro.
00:00:34Nós nos vemos como o principal provedor de infraestrutura para impulsionar todas as imagens e vídeos que os humanos usarão para interagir,
00:00:46e não apenas o que as câmeras podem capturar,
00:00:50mas muito além disso.
00:00:51Com isso em mente, fundamos a empresa em agosto de 2024.
00:00:56Desde então,
00:00:57crescemos para 45 funcionários,
00:01:00distribuídos em duas sedes.
00:01:02A sede principal fica em Freiburg,
00:01:05na Floresta Negra,
00:01:07Alemanha,
00:01:08e também temos um escritório aqui em São Francisco.
00:01:12Desde que lançamos nossa família de geração de imagens,
00:01:17Flux,
00:01:18em agosto de 2024,
00:01:19quando fundamos a empresa,
00:01:21sempre estruturamos os lançamentos em três níveis diferentes e temos aprimorado constantemente a família de modelos.
00:01:32Os níveis são os seguintes.
00:01:34Temos os modelos Pro.
00:01:36Eles são superpoderosos e os mais rápidos que oferecemos.
00:01:41Estão disponíveis apenas via API VFL e também através de alguns parceiros de inferência,
00:01:48como File e Replicate.
00:01:50Imagino que vocês os conheçam.
00:01:53São super fáceis de integrar e escalam para volumes massivos quase instantaneamente..
00:02:03Este é o primeiro nível,
00:02:05mas,
00:02:05como alguns de vocês devem saber,
00:02:07meus cofundadores e eu temos raízes muito fortes em código aberto,
00:02:12assim como,
00:02:12creio,
00:02:13o fundador que nos convidou hoje.
00:02:15Também somos os desenvolvedores originais por trás do Stable Diffusion.
00:02:20Ainda seguimos essa filosofia.
00:02:22Amamos a comunidade de código aberto,
00:02:24e é por isso que também oferecemos pesos abertos e modelos de código aberto..
00:02:29Temos os modelos Flux Dev.
00:02:31Eles estão disponíveis publicamente para download e experimentação.
00:02:37São totalmente personalizáveis e oferecem muita flexibilidade para quem quiser usá-los.
00:02:44Finalmente, temos os modelos Flux Schnell.
00:02:47São totalmente de código aberto e,
00:02:50de certa forma,
00:02:51o ponto de entrada perfeito para o ecossistema Flux.
00:02:56Falando em ecossistema,
00:02:58se olharmos para o Model Atlas no Hugging Face,
00:03:01que visualiza os,
00:03:03creio,
00:03:03modelos de base de código aberto mais usados em diferentes domínios,
00:03:09podemos ver que o maior modelo individual no Hugging Face,
00:03:13com o maior ecossistema associado,
00:03:16é o nosso modelo Flux Dev.
00:03:18Isso demonstra que o Flux já se tornou o padrão para a geração aberta de imagens.
00:03:25Obviamente,
00:03:26buscamos avançar e expandir nossa distribuição no futuro.
00:03:30Isso sobre a empresa.
00:03:32Deixe-me ver se ainda não está funcionando.
00:03:36Enfim.
00:03:36Agora, para a parte principal da palestra..
00:03:41Queria aprofundar no Flux com vocês,
00:03:44especialmente no nosso modelo mais recente,
00:03:47o Flux Context,
00:03:49que unifica a geração de texto para imagem e a edição.
00:03:53Hoje quero falar sobre como unificar isso..
00:03:56Algumas palavras antes disso.
00:03:58Acho super importante ter este modelo conjunto porque,
00:04:02obviamente,
00:04:03a geração de imagens tem muitas aplicações interessantes,
00:04:07e vimos isso no ano passado,
00:04:09mas a edição de imagens,
00:04:11até este ano,
00:04:12não acompanhou o mesmo ritmo de desenvolvimento.
00:04:15A edição de imagens é,
00:04:17na verdade,
00:04:18um caso de uso super importante.
00:04:20Ela nos permite iterar sobre imagens existentes e oferece às pessoas,
00:04:25creio,
00:04:26um nível adicional de controle para modificar imagens com precisão e coisas do tipo.
00:04:32Isso é super importante.
00:04:33Com o Flux Context,
00:04:35criamos o momento decisivo para a edição de imagens.
00:04:39Foi lançado em junho de 2025.
00:04:41É um modelo que combina geração de imagens com recursos de edição como consistência de personagem,
00:04:48referência de estilo,
00:04:49edição local e tudo isso em velocidade quase em tempo real.
00:04:54Veremos isso mais tarde..
00:04:57Mas, como um bom exemplo, trouxe esta sequência de imagens.
00:05:01Da esquerda para a direita,
00:05:03começamos com uma imagem de entrada.
00:05:05Então,
00:05:06podemos instruir o modelo a remover este objeto do rosto dela e,
00:05:10em seguida,
00:05:11podemos colocá-la em um contexto completamente novo,
00:05:14mantendo a consistência do personagem.
00:05:17Isso é super importante.
00:05:18Houve muito trabalho de ajuste fino no passado para obter esse tipo de consistência de personagem no modelo,
00:05:25com base em modelos de texto para imagem disponíveis publicamente,
00:05:30mas esta edição instantânea de imagens nos permitiu eliminar todo esse ajuste fino,
00:05:35que é sempre um pouco trabalhoso,
00:05:37eu diria.
00:05:38É realmente incrível que isso agora leve quatro segundos ou algo assim.
00:05:43Finalmente, podemos simplesmente mudar o cenário.
00:05:46Neste caso,
00:05:47a imagem mais à direita,
00:05:48nós a transformamos em uma cena de inverno.
00:05:51Legal.
00:05:51Aqui estão mais alguns exemplos do que ele também pode fazer.
00:05:55Não é bom apenas para edições com consistência de personagem ou algo assim,
00:06:00mas também é ótimo para transferência de estilo.
00:06:04Vemos isso no lado esquerdo.
00:06:06Pegamos o estilo da imagem de entrada e o mapeamos para um novo conteúdo,
00:06:10ou podemos fazer coisas como edição de texto,
00:06:13apenas mudando Montreal para Freiburg,
00:06:16mantendo a fonte consistente.
00:06:18Tudo isso é combinado em um único modelo e você pode interagir com ele através de uma interface de texto super simples.
00:06:26Legal.
00:06:26Muito importante,
00:06:27este modelo não é apenas um modelo geral,
00:06:30mas também é muito bom em resolver problemas de negócios específicos,
00:06:35importantes e interessantes.
00:06:36Por exemplo,
00:06:37aqui no exemplo da esquerda,
00:06:39podemos extrair esta saia de uma imagem do mundo real e obter uma foto de produto e um zoom quase instantaneamente,
00:06:47novamente,
00:06:47em questão de segundos.
00:06:49Isso,
00:06:49antes,
00:06:50com esses modelos de edição,
00:06:52levava horas,
00:06:53dias,
00:06:53ou nem era possível.
00:06:55Da mesma forma,
00:06:56no lado direito,
00:06:57podemos passar de um esboço para uma saída totalmente renderizada em alguns segundos.
00:07:02Legal.
00:07:03Como já mencionei,
00:07:04o Flux Context combina texto para imagem e edição de imagem.
00:07:08Acabamos de ver alguns exemplos.
00:07:10Vamos dar uma olhada rápida no que isso realmente significa em termos do pipeline do modelo que você precisa fazer.
00:07:18Aqui vemos o pipeline clássico de texto para imagem.
00:07:21Bem simples.
00:07:22Todos nós o conhecemos.
00:07:23Usamos um prompt de texto.
00:07:25O passamos pelo modelo.
00:07:27O modelo então faz alguma mágica.
00:07:29Explicarei como criar um modelo assim em um segundo.
00:07:32Então obtemos uma imagem que,
00:07:34esperamos,
00:07:35se o modelo for bom,
00:07:36segue nosso prompt de texto de entrada.
00:07:39Se você olhar para a edição de imagens,
00:07:41ela parece um pouco diferente.
00:07:43Começamos com uma imagem,
00:07:45que mostramos ao modelo de certa forma,
00:07:48e então não adicionamos uma instrução de texto que descreva uma cena inteira,
00:07:53mas apenas uma mudança nessa imagem.
00:07:55Aqui temos duas condicionantes.
00:07:57Na primeira parte, temos apenas mais entradas.
00:08:00No primeiro exemplo, tínhamos apenas uma entrada.
00:08:03Agora descrevemos uma mudança e o modelo deve então modificar a imagem de acordo com a mudança.
00:08:10Algumas partes,
00:08:11como a igreja aqui,
00:08:12devem permanecer as mesmas após a edição.
00:08:15Outras não.
00:08:15É isso que esses modelos de edição fazem.
00:08:18É uma tarefa bem diferente.
00:08:20Combinar isso em um único modelo é realmente ótimo porque você pode fazer tudo.
00:08:25Você pode gerar uma imagem,
00:08:27depois editá-la e obter muito mais flexibilidade,
00:08:30de certa forma.
00:08:31Já mencionei que,
00:08:32antes de lançarmos esses modelos de edição,
00:08:35ou antes de vermos esses modelos de edição gerais,
00:08:38havia muito trabalho de ajuste fino em modelos de texto para imagem para obter esse tipo de nível de controle no modelo.
00:08:46Mas isso não é mais necessário.
00:08:48Podemos fazer isso instantaneamente.
00:08:51Isso reduz significativamente o tempo necessário para obter bons resultados.
00:08:56Então, isso é tudo em termos do pipeline.
00:08:58Agora,
00:08:59vamos ver como podemos realmente treinar esses modelos.
00:09:02E há um algoritmo muito importante sobre o qual quero falar.
00:09:06O algoritmo que nos permite treinar esses modelos é chamado Latent Flow Matching,
00:09:12que é composto por dois aspectos,
00:09:14Latent e Flow Matching,
00:09:16e quero esclarecer um pouco sobre ambos..
00:09:24Vamos começar com o Latente.
00:09:26Isso vem da modelagem generativa latente.
00:09:28Este é um algoritmo que meus cofundadores e eu criamos há quase cinco anos.
00:09:33Para explicar o que isso significa,
00:09:35vamos primeiro olhar o seguinte exemplo.
00:09:37O que visualizo aqui são basicamente duas imagens,
00:09:40e para nós,
00:09:41elas parecem exatamente iguais.
00:09:43A da esquerda é um JPEG,
00:09:45e a da direita é a mesma imagem como um PNG.
00:09:47Então,
00:09:48a da esquerda é uma aproximação da da direita,
00:09:51mas não vemos nenhuma diferença..
00:09:53Ou há alguém que veja uma diferença nessas duas imagens?
00:09:57Acho que não.
00:09:58Ok, agora vamos olhar o tamanho do arquivo dessas imagens.
00:10:03O tamanho do arquivo do JPEG é,
00:10:05na verdade,
00:10:06quase uma ordem de magnitude menor do que o tamanho do arquivo do PNG.
00:10:11Isso é bastante notável,
00:10:13e todos sabemos como a compressão de imagem funciona,
00:10:16mas apenas perceber que podemos remover aparentemente muita informação de uma imagem sem notar é bastante notável,
00:10:25eu diria..
00:10:26Então,
00:10:27aparentemente,
00:10:28há muita informação em uma imagem que não podemos perceber com o olho humano.
00:10:33Outra forma de visualizar isso é plotar a similaridade perceptual de uma imagem — no último exemplo,
00:10:40de um JPEG,
00:10:40e a aproximação dessa imagem — desculpe,
00:10:43no último exemplo,
00:10:44um PNG é a imagem — e a aproximação é o JPEG dessa imagem,
00:10:48e podemos plotá-la em relação ao tamanho do arquivo.
00:10:52Ao fazer isso, obtemos este gráfico.
00:10:54Este é um gráfico conceitual,
00:10:56então não é real,
00:10:58mas conceitualmente se parece com isso.
00:11:00A similaridade perceptual aumenta rapidamente e depois permanece em um nível constante por quase todo o tamanho do arquivo.
00:11:09É disso que os algoritmos de compressão com perdas,
00:11:12como o JPEG,
00:11:13se aproveitam,
00:11:14e você pode perguntar agora o que isso tem a ver com modelagem generativa?
00:11:19Isso nos mostra que para um sinal perceptual,
00:11:22ou um sinal natural,
00:11:24como uma imagem — para áudio é o mesmo — para parecer real,
00:11:28ou ser percebido como real.
00:11:29Não precisamos modelar todos os detalhes de alta frequência que não podemos perceber,
00:11:35e,
00:11:36portanto,
00:11:36treinar um modelo generativo no espaço de pixels em todos esses detalhes de alta frequência seria,
00:11:43na verdade,
00:11:44um grande desperdício de computação e tempo,
00:11:47porque o modelo aprenderia a representar aspectos que nem percebemos,
00:11:52então é inútil aprender isso,
00:11:54certo?
00:11:54E isso está no cerne da modelagem generativa latente.
00:11:58Então,
00:11:58em vez de treinar um modelo generativo no espaço de pixels diretamente em imagens,
00:12:04aprendemos um modelo de compressão que extrai um espaço de menor dimensão,
00:12:09o chamado espaço latente.
00:12:11Este espaço latente é o que vemos aqui no centro.
00:12:14Vamos ver se o ponteiro laser funciona.
00:12:17Ah, sim, este aqui.
00:12:18Como aprendemos este modelo?
00:12:20É realmente super simples..
00:12:24Usamos uma imagem aqui à esquerda.
00:12:26A passamos por um codificador,
00:12:28então,
00:12:29efetivamente,
00:12:29este é um autoencoder,
00:12:31passamos a imagem pelo codificador,
00:12:34então chegamos a este espaço latente,
00:12:36e a representação então a passamos por uma operação chamada regularização..
00:12:42Isso força o modelo a remover informações dessa representação latente.
00:12:47Pode ser implementado de forma discreta ou contínua,
00:12:51e então novamente reconstruímos a imagem a partir desta representação latente.
00:12:56Então,
00:12:57um autoencoder clássico,
00:12:58que treinamos para basicamente produzir reconstruções semelhantes à entrada,
00:13:04e,
00:13:04muito importante,
00:13:06adicionamos esta perda do discriminador.
00:13:09Isso pode ser imaginado como um prior para garantir que,
00:13:13na verdade,
00:13:13apenas os detalhes que importam perceptualemente aos nossos olhos humanos sejam refletidos nesta representação latente.
00:13:22Novamente,
00:13:23esta regularização força o modelo a reduzir ou remover informações,
00:13:27e o discriminador garante que ele remova as informações corretas que não podemos perceber.
00:13:34Assim,
00:13:34chegamos,
00:13:35uma vez treinado este modelo,
00:13:37a este espaço latente que então é usado para treinar o modelo gerado.
00:13:42O espaço latente é uma representação de menor dimensão da imagem de entrada ou de uma imagem que é perceptualemente equivalente.
00:13:51Este é basicamente o aspecto latente do algoritmo de flow-matching latente.
00:13:57Vamos falar sobre o segundo, flow-matching.
00:14:00Novamente,
00:14:00tudo o que explico agora acontece neste espaço latente.
00:14:04Então, o que quer que façamos agora, vocês veem aqui.
00:14:08No lado esquerdo,
00:14:09cada imagem é incorporada nesse espaço latente,
00:14:13basicamente.
00:14:14Então, sim, vamos falar sobre flow-matching.
00:14:17Algoritmos de flow-matching são uma família geral de algoritmos usados para traduzir de uma distribuição muito simples,
00:14:25que,
00:14:26em nosso caso,
00:14:27é sempre a distribuição normal padrão,
00:14:30então estamos falando agora de distribuições de probabilidade.
00:14:34Eu visualizei aqui.
00:14:36Esta é uma distribuição muito simples aqui.
00:14:39Algoritmos de flow-matching traduzem isso ou nos fornecem meios para treinar um campo vetorial,
00:14:45representado por uma rede neural — este aqui — para mapear entre a distribuição simples e distribuições muito complicadas,
00:14:54como a distribuição de dados de imagens naturais.
00:14:58Então, esta é a distribuição de dados.
00:15:00O que fazemos para treinar isso?
00:15:03O algoritmo de flow-matching nos fornece um meio muito simples para fazer isso.
00:15:08Tudo o que temos que fazer durante o treinamento é extrair uma amostra desta distribuição normal padrão aqui.
00:15:16Então temos uma amostra,
00:15:18e então a atribuímos a uma amostra da distribuição de dados,
00:15:22um exemplo de treinamento,
00:15:24e acoplamos isso,
00:15:25e então podemos construir este tipo de vetor que os conecta direta e linearmente..
00:15:34Se fizermos isso para cada exemplo em nosso conjunto de dados de treinamento — ou seja,
00:15:40pegamos o exemplo,
00:15:41amostramos aleatoriamente um ponto da normal padrão e os conectamos — então chegamos a este tipo de campo vetorial construído aqui.
00:15:50Eu poderia agora falar muito sobre as propriedades dos campos vetoriais.
00:15:54Uma propriedade importante é que os caminhos não podem se cruzar em campos vetoriais,
00:16:00e vemos que há muitos cruzamentos acontecendo,
00:16:03então este obviamente não é o verdadeiro campo vetorial que traduz entre cada ponto nesta distribuição,
00:16:10ou entre esta distribuição e aquela..
00:16:13O incrível sobre o flow-matching é que,
00:16:16se você seguir esta regra — ou seja,
00:16:18treinamos o modelo para basicamente sempre prever esses tipos de vetores entre a amostra de dados e a amostra da distribuição normal padrão.
00:16:29Chegamos ao verdadeiro campo vetorial,
00:16:31e ele se parece assim.
00:16:33Então aqui vemos que os caminhos não se cruzam mais,
00:16:37e o algoritmo de flow-matching simplesmente garante isso.
00:16:41Isso é um pouco mágico,
00:16:43mas se você escrever matematicamente,
00:16:45na verdade vemos que faz sentido.
00:16:48E assim,
00:16:48podemos então treinar o modelo para representar este verdadeiro campo vetorial que traduz entre a normal padrão e nossa distribuição de dados..
00:17:00E,
00:17:00importante,
00:17:01queremos ser capazes de criar imagens com base em entradas de texto,
00:17:07então o que fazemos é condicionar esta rede sempre a uma entrada de texto,
00:17:13basicamente,
00:17:14para cada exemplo de imagem.
00:17:16Legal..
00:17:17Então,
00:17:17o que estamos fazendo quando estamos amostrando o modelo?
00:17:21Temos este campo vetorial que representa o mapeamento entre essas duas distribuições.
00:17:26O que fazemos então é começar com uma amostra da normal padrão.
00:17:30Podemos amostrá-la com um computador, certo?
00:17:33Todos sabemos disso.
00:17:34E então integramos ao longo dessas trajetórias representadas pela rede neural.
00:17:39Podemos fazer isso com um algoritmo simples de Euler-forward.
00:17:43Provavelmente muitos de vocês os conhecem.
00:17:46Então,
00:17:46com um esquema de integração numérica,
00:17:49podemos simplesmente integrar ao longo dessas trajetórias aqui e então chegar à amostra de dados.
00:17:55Nós o passamos pelo decodificador novamente e chegamos.
00:17:58Então,
00:17:59novamente,
00:17:59isso acontece no espaço latente,
00:18:01mas aqui chegamos então novamente no espaço de pixels.
00:18:05E é assim que então posso criar imagens com base em um prompt de texto.
00:18:09Legal.
00:18:10Uma coisa,
00:18:10esses esquemas de integração numérica são bastante,
00:18:14eu acho,
00:18:14eles usam muitos passos,
00:18:16então eles dividem isso,
00:18:17este processo aqui passo a passo em até 50 passos.
00:18:20Então,
00:18:21esses modelos de flow-matching latente são naturalmente bastante lentos e levam cerca de 30 segundos a um minuto para gerar uma imagem,
00:18:29o que é um pouco demorado..
00:18:32Falarei sobre como torná-los rápidos muito em breve.
00:18:35Mas este é o algoritmo geral de flow-matching latente.
00:18:38Então,
00:18:38latente novamente,
00:18:39conecta ou representa este espaço latente ou significa este espaço latente onde treinamos o modelo.
00:18:45E o algoritmo de flow-matching é o que acabamos de discutir aqui.
00:18:49Ok,
00:18:49agora expliquei como criamos imagens com base em prompts de texto,
00:18:53mas como isso se aplica agora ao contexto,
00:18:55que é um modelo de edição,
00:18:57certo?
00:18:57Isso também é super simples.
00:18:59Então, esta é uma arquitetura básica do Flux Context.
00:19:02É um modelo transformer.
00:19:03Todos nós sabemos disso..
00:19:05É um pouco especial, mas a mágica reside na entrada.
00:19:08Então vemos aqui no lado esquerdo a entrada no modelo.
00:19:12Primeiro temos a entrada de texto que é incorporada por um codificador de texto em um conjunto de tokens de texto.
00:19:21E então temos o codificador de imagem que já vimos no último slide,
00:19:26certo?
00:19:26Este aqui.
00:19:27É o que vemos agora aqui.
00:19:29Então temos este codificador de imagem e lá temos dois conjuntos de tokens visuais.
00:19:35Primeiro temos o conjunto de tokens visuais que realmente usamos para gerar.
00:19:40Esta será a imagem de saída.
00:19:42E então temos,
00:19:43se quisermos fazer edição de imagem,
00:19:46um segundo conjunto de tokens visuais que apenas modelam ou que apenas representam a imagem de contexto.
00:19:53Ou seja,
00:19:54a imagem de referência que estou mostrando ao modelo.
00:19:58E o que fazemos então é passar isso para o modelo transformer.
00:20:02É um especial porque contém os chamados blocos de fluxo duplo.
00:20:07Estes são,
00:20:08eu diria,
00:20:08uma espécie de modelos especialistas para cada fidelidade.
00:20:12Então aqui lidamos com os tokens visuais e os tokens de texto separadamente..
00:20:20Para tudo,
00:20:20exceto a operação de atenção,
00:20:23a operação de atenção acontece então conjuntamente sobre todos os tokens.
00:20:28E então temos blocos padrão,
00:20:30blocos transformer padrão onde basicamente mapeamos todas as entradas e os tokens de texto e os tokens visuais com os mesmos mapeamentos antes da operação de atenção.
00:20:43E assim, podemos simplesmente entrar na edição de imagens..
00:20:48Se você fornecer uma imagem de entrada aqui e se fizer geração de texto para imagem,
00:20:54você simplesmente não fornece isso e então temos apenas um prompt de texto como entrada,
00:21:00certo?
00:21:00Legal.
00:21:01Último ponto aqui.
00:21:02Como o modelo é tão rápido?
00:21:04Então, não sei quantos de vocês conhecem os modelos Flux.
00:21:08Talvez possam levantar a mão se conhecem os modelos Flux?
00:21:12Ou, na verdade, alguns.
00:21:13Ok, legal.
00:21:14Então, todos sabemos que eles são bem rápidos, certo?
00:21:18O que quero dizer quando digo rápido?
00:21:20Somos basicamente,
00:21:22na maioria das vezes,
00:21:23ordens de magnitude mais rápidos do que modelos comparáveis.
00:21:27Então aqui,
00:21:28por exemplo,
00:21:29olhamos para um modelo obviamente muito lento,
00:21:32mas bom,
00:21:33o GPD image one.
00:21:34Também aqui para edição,
00:21:35os modelos Flux são mais de 10 vezes mais rápidos,
00:21:39até mais de,
00:21:40sim,
00:21:4020 vezes.
00:21:41Então é realmente insano o quão rápidos eles são em comparação com modelos comparavelmente poderosos.
00:21:48E a razão para isso é um algoritmo que desenvolvemos há dois,
00:21:52três anos.
00:21:53Chama-se destilação adversária de difusão e o objetivo deste algoritmo é reduzir o número de passos de integração numérica.
00:22:01Eu disse a vocês anteriormente que estes são,
00:22:04na maioria das vezes,
00:22:0650 para um modelo de flow-matching padrão e o objetivo aqui é reduzi-los para apenas quatro.
00:22:12Cada passo de integração numérica significa uma passagem direta pela rede neural,
00:22:18então podemos imaginar que isso leva muito tempo,
00:22:21então queremos reduzi-lo o máximo possível.
00:22:24Como funciona?
00:22:25Inicializamos duas redes aqui, um professor e um aluno.
00:22:29Ambos são inicializados a partir do modelo de flow-matching aprendido através do algoritmo que acabei de mostrar a vocês.
00:22:37E o que fazemos então é treinar o aluno para obter a mesma qualidade de imagem na saída em quatro passos que o professor faz em 50 passos.
00:22:47Este é o objetivo e é assim que fazemos.
00:22:50Começamos com uma imagem,
00:22:51a codificamos novamente para uma latência aqui e então geramos uma imagem de saída para o aluno em quatro passos ou no número de passos alvo que queremos fazer.
00:23:03E então a decodificamos novamente para pixels..
00:23:08No início,
00:23:09esta imagem aqui parece muito borrada e não muito realista.
00:23:12E o objetivo é melhorá-la, obviamente.
00:23:15Então,
00:23:15o que estamos fazendo é usar isso novamente,
00:23:18codificá-lo novamente para latência e então fazer a mesma coisa com o professor,
00:23:23mas em 50 passos em vez de quatro passos.
00:23:26Isso então resulta em uma imagem de alta qualidade e então usamos esta perda de destilação,
00:23:32basicamente apenas uma perda para garantir que as distribuições do professor ou do aluno correspondam às do professor.
00:23:39Isso sozinho,
00:23:40infelizmente,
00:23:41não nos permitiria basicamente gerar imagens que pareçam reais.
00:23:45Então o que adicionamos é outra perda do discriminador.
00:23:49Vimos isso já para a parte do autoencoder na parte de modelagem generativa latente da palestra anteriormente.
00:23:56Isso é basicamente o mesmo.
00:23:57Então treinamos um discriminador para distinguir imagens geradas pelo aluno de imagens reais que inserimos aqui.
00:24:04E isso acontece em um espaço de características dyno v2 ou em um espaço de modelo de representação de imagem aprendido,
00:24:12de certa forma.
00:24:13E assim,
00:24:14podemos então treinar o modelo para,
00:24:16no final,
00:24:17gerar imagens realistas,
00:24:18em vez de usar 50 passos,
00:24:20ele usa apenas quatro passos.
00:24:22Isso é obviamente um enorme aumento de velocidade.
00:24:25No entanto, último ponto aqui.
00:24:27Se olharmos para isso aqui,
00:24:28parece bastante,
00:24:29eu diria,
00:24:30muitos custos adicionais,
00:24:32certo?
00:24:32Porque aqui temos que entrar no espaço latente.
00:24:35Então,
00:24:36começamos no espaço da imagem,
00:24:37passamos para o espaço latente,
00:24:39e decodificamos novamente,
00:24:41então temos que codificar novamente e decodificar novamente.
00:24:45E então nós,
00:24:46este também está codificando novamente em outro espaço de representação.
00:24:50Muito custo adicional,
00:24:52muitos custos de memória relacionados a isso.
00:24:55E isso é muito,
00:24:56foi quando,
00:24:56depois que o criamos,
00:24:58ficamos maravilhados porque nos permitiu treinar modelos rápidos.
00:25:02Foi tão trabalhoso treinar isso.
00:25:04Então pensamos, ok, como podemos realmente simplificar isso?
00:25:08E a resposta é sempre a resposta.
00:25:10Apenas mova-o para o espaço latente sempre que tiver um pixel.
00:25:14Então o que fizemos foi criar uma abordagem de destilação adversária de difusão latente.
00:25:20É basicamente muito semelhante ao que fizemos para o algoritmo geral de modelagem generativa latente.
00:25:26Apenas movemos tudo para o espaço latente.
00:25:29A mesma coisa,
00:25:30mas em vez de ter que usar esses codificadores e decodificadores,
00:25:34podemos simplesmente nos livrar deles.
00:25:37E, importante, como discriminador, não usamos mais o dyno..
00:25:44Este modelo de representação de imagem,
00:25:46usamos o professor porque ele de qualquer forma já vive no espaço latente,
00:25:50nos fornece uma representação de imagem muito boa.
00:25:53Então também podemos usar o professor como discriminador.
00:25:57E o resto é basicamente quase o mesmo.
00:25:59Também removemos a perda de destilação.
00:26:02Descobrimos que não precisamos dela, o que também é legal..
00:26:06Então, ficamos sem essa perda e tudo é simplificado.
00:26:11E assim,
00:26:11podemos então,
00:26:13de uma forma muito eficiente em termos de memória,
00:26:17também reduzir o número de passos de integração de cinco para quatro.
00:26:24Então temos um aumento de velocidade de 12,
00:26:285 vezes,
00:26:29e é isso que vemos como esta ordem de magnitude nos gráficos que acabei de mostrar no início desta seção.
00:26:39Então é basicamente assim que obtemos um modelo muito rápido a partir de um flow-matching,
00:26:48de um modelo base de flow-matching.
00:26:51E agora,
00:26:52antes que esta palestra termine,
00:26:55eu trouxe uma demonstração para mostrar o Flux um pouco em ação.
00:27:01Vamos ver.
00:27:02Então, vamos usá-lo para edição de imagens aqui.
00:27:06Deixe-me carregar algo depois.
00:27:09O que estamos fazendo aqui?
00:27:12Este parece bom.
00:27:13Sim.
00:27:14Ok.
00:27:14Sim.
00:27:15Isso é bom.
00:27:16Então aqui começo com o logo do meu clube de futebol favorito,
00:27:22o SC Freiburg.
00:27:23Tenho que dizer 'soccer' quando estou nos EUA.
00:27:28Ok.
00:27:28Este é o meu clube favorito e quero criar uma camiseta com este logo.
00:27:35Então, digamos, coloque este logo em uma camiseta.
00:27:40Parece um pouco estranho porque não tenho uma tela na minha frente.
00:27:46Ok.
00:27:46Lá vamos nós.
00:27:48Gerando.
00:27:48Deixe-me diminuir um pouco isso..
00:27:53Talvez assim.
00:27:55Ok.
00:27:55Legal.
00:27:56Esperamos alguns segundos e podemos obter este belo logo em uma camiseta.
00:28:03E agora o legal é que podemos realmente continuar, certo?
00:28:08Podemos iterar sobre isso.
00:28:10Então,
00:28:11digamos que este logo está um pouco grande demais,
00:28:16eu diria.
00:28:17Diminua o logo e coloque-o na parte restante.
00:28:21Novamente.
00:28:22Espere alguns segundos.
00:28:24Ok.
00:28:25Legal.
00:28:25E chegamos a um resultado que é realmente super legal.
00:28:30É exatamente o que eu queria.
00:28:33Quero começar com este novamente.
00:28:36E quero agora mudar a cor porque a cor do SC Freiburg não é preta,
00:28:42é vermelha.
00:28:43Então, deixe a camiseta vermelha.
00:28:46Também super simples.
00:28:48Agora estamos na edição local.
00:28:51Estamos apenas editando partes locais da imagem, certo?
00:28:56Neste caso, a cor.
00:28:58E,
00:28:59importante,
00:29:00fizemos algumas edições e ainda vemos que o logo é representado de forma muito consistente.
00:29:08Então,
00:29:09esta é a consistência de personagem ou,
00:29:12neste caso,
00:29:13de objeto que vimos.
00:29:15Isso é super importante.
00:29:18Pense em um profissional de marketing que tem um objeto e quer colocá-lo em um determinado contexto,
00:29:27certo?
00:29:28Em termos de valor comercial, é ótimo, é super importante.
00:29:33E agora,
00:29:34finalmente,
00:29:35adicionamos uma transformação mais complexa.
00:29:39Podemos dizer para colocar a camiseta em um homem caminhando no parque.
00:29:46Ops.
00:29:46Então esta é uma transformação complexa e você poderia ter dito,
00:29:53ok,
00:29:53coisas como mudar a cor você pode fazer no Photoshop,
00:29:58certo?
00:29:59Historicamente,
00:30:00coisas assim,
00:30:01não é o que ferramentas de geração de imagem padrão ou anteriores,
00:30:07não-IA,
00:30:08eram capazes ou podiam fazer.
00:30:11Isso é realmente super legal.
00:30:14Então aqui temos agora este tipo de homem e,
00:30:18finalmente,
00:30:19acho que estou no tempo,
00:30:21mas vamos fazer uma última coisa que mostra o quão geral este modelo é.
00:30:28Também podemos fazer transferência de estilo, certo?
00:30:33Então, digamos, transforme isso em uma pintura em aquarela..
00:30:42Certo, o último.
00:30:44E antes, com modelos como estes, você provavelmente teria...
00:30:48você teria treinado este ajuste fino único para cada um desses tipos de tarefas e agora podemos simplesmente combiná-lo em uma única coisa,
00:31:00o que é bem legal.
00:31:01Legal.
00:31:01Então agora eu poderia imprimi-lo e pendurá-lo na minha parede ou algo assim.
00:31:08Enfim,
00:31:08sim,
00:31:09acho que isso está mostrando o poder desses modelos.
00:31:13Ah, algo travou.
00:31:14Eu queria mostrar um último slide porque terminei,
00:31:18mas estamos contratando e se quiser se juntar a nós,
00:31:22por favor,
00:31:23escaneie aqui ou visite o playground,
00:31:26a demonstração que acabei de mostrar,
00:31:29disponível gratuitamente.
00:31:31Muito obrigado.
00:31:32Espero que tenham aprendido algo..