Carlos Cardoso 21/08/2024 às 13:38
Flux é algo que ao contrário da Inquisição Espanhola, todo mundo esperava, mas não tão cedo, não tão bom. É, sem sombra de dúvida, o modelo open source de geração de imagens mais avançado do momento, brigando pau a pau, ou mais precisamente mano a mano com ferramentas tipo DALL-E e Midjourney.
O Flux foi criado pela Black Forest Labs, uma startup de IA fundada por ex-membros da Stability AI, criadora do Stable Diffusion, e lançado dia 1º de agosto de 2024, sem aviso, apenas soltaram a bomba. E meninos e meninas, que bomba!
(nota: Os prompts estão traduzidos, mas foram introduzidos (epa!) originalmente em inglês)
Cinco meses antes a Stability AI lançou o Stable Diffusion 3, um modelo promissor, mas que não diferia muito do Stable DiffusionXL, e acabou decepcionando muita gente. As ferramentas de facto para o povo que gera imagens em casa continuaram sendo o Stable Diffusion 1.5 e o SDXL, ambos com um excelente conjunto de acessórios, como ControlNets, IP Adapters, LORAs e similares. Por isso o ceticismo quando o Flux apareceu.
A Black Forest Labs espertamente disponibilizou vários parceiros onde era possível testar o Flux, sem precisar instalar localmente, e os primeiros resultados foram avassaladores. O Flux é superior a tudo que a Stability AI já produziu, especialmente em alguns pontos:
Normalmente precisamos de várias tentativas até conseguir que o Stable Diffusion gere a imagem de acordo com o prompt. Ele costuma “esquecer” um ou outro elemento, ignorando ou alterando outros, às vezes misturando conceitos. Em cenas complexas isso é trabalhoso, temos que usar recursos como inpainting e IP Adapters para induzir a IA a produzir exatamente o que queremos.
No caso do Flux ele tem um interpretador muito mais poderoso, “traduzindo” o prompt em tokens internos de forma muito mais eficiente. Ele consegue entender muito melhor o que o autor do prompt quer que ele desenhe.
Mais ainda; ele entende linguagem natural, não é preciso mais usar tags e macetes como (((decote))) ou escamas:3 para enfatizar detalhes. Você pode apenas descrever em detalhes meticulosos o que quer desenhar. E se faltar imaginação, pode pedir ao ChatGPT para descrever para você, e copiar o prompt.
Essa aderência do Flux permite uma capacidade de composição de cena inigualável, mesmo comparando com ferramentas tipo Midjourney, e não pára aí.
Se você achou o Bond aí de cima complexo, veja esta imagem, que roubei do Reddit. Ao lado dela, o (gigantesco) prompt.
Você pode detalhar sua imagem até o ponto em que precise de ajuda psiquiátrica para controlar sua obsessão. O Flux de vez em quando vai cometer um errinho ou outro, mas no geral sua imagem incrivelmente complexa e detalhada será produzida seguindo seu prompt.
Todo mundo do meio sabia que o problema das IAs com mãos era transitório, mas ninguém imaginou que seria resolvido tão rápido. Nenhuma das imagens acima sofreu qualquer retoque. O Flux tem uma taxa de acerto altíssima em se tratando de mãos, mesmo em situações complexas.
Prompt: Uma mão feminina segurando uma maçã. A maçã é brilhante e perfeita com uma única folha verde, há um reflexo de uma janela na maçã. A mão é jovem, impecável, as unhas são longas e pintadas com esmalte roxo brilhante. Ela está usando um anel de ouro (Crédito: Flux)
Ele também entende e faz bem pés e poses impossíveis para o SD3, como pessoas deitadas de bruços na grama.
Claro, o Flux não é perfeito. Desenhar mãos é algo complicado mesmo para humanos. Neste artigo aqui, expliquei o motivo dessa dificuldade. Em resumo, a IA não entende o conceito de “mão”, e a quantidade de amostras usadas para seu treinamento não é suficiente para que a maioria das variações quase infinitas de posições de dedos seja aprendida.
Mesmo assim, o Flux tem uma taxa de acerto altíssima, mãos ruins deixam de ser regra e viram exceção.
Prompt: seven cute cartoon animals side by side, each one with a t-shirt with a letter, the letters form the word "MeioBit" (Crédito: Flux)
A primeira versão do Stable Diffusion eram incapaz de criar texto coerente. A SDXL era melhorzinha. A 3 até quebrava o galho com palavras curtas. Online o DALL-E 3 era um modelo com boa capacidade para texto, mas estamos falando de modelos rodando em datacentres. Localmente não havia nada que chegasse aos pés dele.
Até o Flux. Ele não só é excelente com texto, a aderência ao prompt e a capacidade de entender o contexto faz com que imagens complexas como a dos bichinhos acima seja prontamente compreendida. Sem mentira, essa foi a primeira tentativa.
O texto do caderno demorou mais, o Flux precisou de várias tentativas até acertar, mas isso é preciosismo. No mundo real a gente escolheria a versão mais adequada e corrigiria no Photoshop.
O Flux usa um LLM (Large Language Model) bem decente para traduzir os prompts para sua linguagem interna de tokens, e esse LLM é treinado em vários idiomas. O Flux fala inglês, alemão, romeno, francês, espanhol e até português. A imagem da Supergirl acima foi gerada com o prompt 100% em português.
Aviso: Os resultados não são consistentes, o prompt em inglês produz resultados melhores, especialmente em casos de prompts mais complexos, mas é bom que a possibilidade de fazer prompts simples na Última Flor do Lácio exista.
O Flux é muito bom, mas o que ele tem de bom, tem de pesado. Já é um milagre ele rodar em hardware para consumidor final, ie Gamers. Isso quer dizer que não vai rodar na maioria dos PCs.
Há uns malucos que conseguiram rodar o Flux com 4GB de VRAM, mas sendo prático, dificilmente você conseguirá um desempenho minimamente aceitável com menos de 8GB de VRAM, e uns 16GB de RAM. Ah sim, sua GPU tem que ser Nvidia. Se você for Team Red, game over.
No meu caso, uso uma GeForce 3060 com 12GB de VRAM e 64GB de RAM. Consigo gerar uma imagem 1024x1024 no Flux em mais ou menos um minuto e meio.
A melhor interface para usar o Flux é o ComfyUI, mas ele tem uma curva de aprendizado meio cruel, e sendo honesto, é bem assustador para novatos. Eu compreendo que pessoas normais olhem um workflow desses e saiam correndo.
A alternativa é o Forge, um fork do AUTOMATIC1111, ele é voltado para iniciantes, pode ser bem complexo se você quiser, ou funcionar quase na base do next-next-next. Com a vantagem de ter todas as aplicações necessárias, como GIT, Python, PIP no mesmo pacote.
Acesse este site do GitHub e baixe a última versão do Forge. É recomendado que você escolha a webui_forge_cu121_torch231.7z, é a mais estável.
Crie uma pasta no seu disco C: chamada FORGE, e salve o arquivo de 1.74GB nele.
Usando o Winrar ou outro descompactador de arquivos se sua preferência descompacte o webui_forge_cu121_torch231.7z. O resultado deve ser uma organização de pastas assim:
Agora você pode apagar o arquivo .7z e liberar espaço em disco, você vai precisar.
Com um duplo-clique, execute sem dó o arquivo update.bat.
*CABUM* você foi interrompido por uma tela de alerta, avisando que coisas horríveis podem acontecer se você executar esse arquivo. Confie em mim, clique em mais informações e selecione Executar Assim Mesmo.
Ele irá acessar o repositório do Forge no GitHub e baixar a versão mais recente. Rapidamente, pedirá para você apertar qualquer tecla, e a janela de terminal se fechará.
Duplo-clique em run.bat, você receberá de novo o alerta assustador. De novo, clique em mais informações e execute mesmo assim.
Agora o Forge irá instalar as dependências, os módulos do Python necessários para rodar a aplicação, e baixará um checkpoint do Stable Diffusion 1.5. Se tudo der certo, ao final ele abrirá uma janela do seu navegador com a interface do Forge.
No campo do prompt, digite algo como “Emma Watson eating a plate of spaghetti” e clique em Generate. Se tudo der certo, em alguns segundos você terá uma imagem.
Ou dezenas, só escolher no slider Batch Count quantas imagens você quer gerar.
Ah sim, na nossa instalação as imagens são salvas na pasta:
C:\Forge\webui\outputs\txt2img-images
Você não chegou até aqui para usar o SD1.5, obviamente. Vamos então para o prato principal: Primeiro, baixe o checkpoint do Flux. Não a versão com 23GB, isso é forçar a amizade. A Comunidade produziu versões quantizadas com excelente quantidade e metade do tamanho.
Neste link do Huggingface, baixe o arquivo flux1-dev-bnb-nf4-v2.safetensors, são apenas 12GB.
Enquanto está baixando, vá na pasta:
C:\Forge\webui\models\Stable-diffusion\
Crie uma pasta chamada FLUX dentro dela, o caminho agora será:
C:\Forge\webui\models\Stable-diffusion\FLUX
É nesta pasta que você deve colocar o flux1-dev-bnb-nf4-v2.safetensors, depois que ele terminar de baixar.
Agora clique no alto da interface, canto esquerdo, selecione a UI “Flux”. Do lado, selecione o checkpoint FLUX\ flux1-dev-bnb-nf4-v2.safetensors. Caso ele não apareça, clique no ícone de refresh e tente de novo.
Agora é só escrever seu prompt, e mandar gerar a imagem. Vai demorar bem mais. No meu caso, com a resolução default do Forge para Flux, 896 x 1152, uma imagem leva aproximadamente 1’15” para ser gerada.
Você pode usar os controles de resolução para diminuir ou aumentar o tamanho da imagem a ser gerada, mas não vá muito além de 1200x1200. O ideal é 1024x1024, ou até menos, 512x512, quando você estiver experimentando com prompts. Quanto menor a imagem, mais rápido será gerada.
Complexidade. Quanto mais complexa a rede neural, mais interações são possíveis entre os nós, essa complexidade determina quantos parâmetros são analisados para a geração da imagem. No Stable Diffusion 1.5, a rede neural tinha 890 milhões de parâmetros. O SDXL comporta 2.3 bilhões de parâmetros, e a qualidade já era bem superior.
O Flux opera com 12 bilhões de parâmetros, essa complexidade por si só resolveu vários dos problemas que afligiam as versões anteriores. Agora imagine em alguns anos, redes com 100, 200 bilhões de parâmetros, o que serão capazes de criar!
No próximo artigo ensinarei técnicas de prompt, composição e como usar LLMs para refinar e aprimorar suas imagens, bem como ferramentas e extensões do Forge.
Por enquanto, divirta-se com o Flux.