Ferramentas de IA 101

Flux da Black Forest Labs: O Próximo Salto em Modelos de Texto para Imagem. É Melhor do que o Midjourney?

mm
Black Forest Labs Open-Source FLUX.1: A 12 Billion Parameter Transformer Capable of Generating Images

Black Forest Labs, a equipe por trás do modelo de difusão estável revolucionário, lançou Flux – uma suíte de modelos de ponta que prometem redefinir as capacidades de imagens geradas por IA. Mas o Flux realmente representa um salto à frente no campo e como se compara aos líderes da indústria, como o Midjourney? Vamos mergulhar fundo no mundo do Flux e explorar seu potencial para remodelar o futuro da arte e mídia geradas por IA.

O Nascimento da Black Forest Labs

Black Forest Labs não é apenas outra startup de IA; é um poderoso talento com um histórico de desenvolvimento de modelos de IA generativos fundamentais. A equipe inclui os criadores do VQGAN, Latent Diffusion e da família de modelos de difusão estável que conquistou o mundo da arte de IA.

Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

Com uma rodada de financiamento de série de US$ 31 milhões liderada pela Andreessen Horowitz e apoio de notáveis investidores anjo, a Black Forest Labs posicionou-se à frente da pesquisa de IA generativa. Sua missão é clara: desenvolver e avançar modelos de aprendizado de máquina generativa de ponta para mídias como imagens e vídeos, enquanto impulsiona os limites da criatividade, eficiência e diversidade.

Apresentando a Família de Modelos Flux

A Black Forest Labs introduziu a suíte de modelos de texto para imagem FLUX.1, projetada para estabelecer novos padrões em detalhe de imagem, aderência a prompts, diversidade de estilo e complexidade de cena. A família Flux consiste em três variantes, cada uma adaptada a diferentes casos de uso e níveis de acessibilidade:

  1. FLUX.1 [pro]: O modelo de bandeira, oferecendo desempenho de nível superior na geração de imagens com seguimento de prompts superior, qualidade visual, detalhe de imagem e diversidade de saída. Disponível por meio de uma API, é posicionado como a opção premium para uso profissional e empresarial.
  2. FLUX.1 [dev]: Um modelo de peso aberto, destilado por orientação para aplicações não comerciais. É projetado para alcançar qualidade e capacidades de aderência a prompts semelhantes às da versão pro, enquanto é mais eficiente.
  3. FLUX.1 [schnell]: O modelo mais rápido da suíte, otimizado para desenvolvimento local e uso pessoal. Está disponível abertamente sob uma licença Apache 2.0, tornando-o acessível a uma ampla gama de aplicações e experimentos.

Eu fornecerei alguns exemplos de prompts únicos e criativos que demonstram as capacidades do FLUX.1. Esses prompts destacarão as forças do modelo em lidar com texto, composições complexas e elementos desafiadores, como mãos.

  • Mesclagem de Estilo Artístico com Texto: “Crie um retrato de Vincent van Gogh em seu estilo de assinatura, mas substitua sua barba por pinceladas em espiral que formam as palavras ‘Starry Night’ em cursiva.”
Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

  • Cena de Ação Dinâmica com Integração de Texto: “Um super-herói explodindo por uma página de quadrinhos. As linhas de ação e efeitos sonoros devem formar o nome do herói ‘FLUX FORCE’ em tipografia dinâmica e ousada.”
Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

  • Conceito Surreal com Colocação Precisa de Objetos: “Primeiro plano de um gato fofo com cores marrons e brancas sob a luz do sol da janela. Foco aguçado na textura e cor do olho. Iluminação natural para capturar o brilho e a profundidade autênticos do olho.”
Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

Esses prompts são projetados para desafiar as capacidades do FLUX.1 em renderização de texto, composição de cena complexa e criação de objetos detalhados, enquanto também destacam seu potencial para geração de imagens criativas e únicas.

Inovações Técnicas por trás do Flux

No coração das capacidades impressionantes do Flux, encontra-se uma série de inovações técnicas que o distinguem de seus antecessores e contemporâneos:

Modelos de Fluxo com Tecnologia de Transformador em Escala

Todos os modelos FLUX.1 públicos são construídos em uma arquitetura híbrida que combina blocos de transformador multimodais e paralelos, dimensionados para um impressionante 12 bilhões de parâmetros. Isso representa um salto significativo em tamanho e complexidade de modelo em comparação com muitos modelos de texto para imagem existentes.

Os modelos Flux melhoram os modelos de difusão de estado da arte anteriores, incorporando a correspondência de fluxo, um método geral e conceitualmente simples para treinar modelos generativos. A correspondência de fluxo fornece um framework mais flexível para modelagem generativa, com modelos de difusão sendo um caso especial dentro dessa abordagem mais ampla.

Para melhorar o desempenho do modelo e a eficiência do hardware, a Black Forest Labs integrou embeddings posicionais rotativos e camadas de atenção paralelas. Essas técnicas permitem um melhor tratamento de relações espaciais em imagens e um processamento mais eficiente de grandes conjuntos de dados.

Inovações Arquiteturais

Vamos desmembrar alguns dos principais elementos arquiteturais que contribuem para o desempenho do Flux:

  1. Arquitetura Híbrida: Ao combinar blocos de transformador multimodais e paralelos, o Flux pode processar efetivamente tanto informações textuais quanto visuais, levando a uma melhor alinhamento entre prompts e imagens geradas.
  2. Correspondência de Fluxo: Essa abordagem permite um treinamento mais flexível e eficiente de modelos generativos. Fornece um framework unificado que abrange modelos de difusão e outras técnicas generativas, potencialmente levando a uma geração de imagens mais robusta e versátil.
  3. Embeddings Posicionais Rotativos: Esses embeddings ajudam o modelo a entender e manter melhor as relações espaciais dentro das imagens, o que é crucial para a geração de conteúdo visual coeso e detalhado.
  4. Camadas de Atenção Paralelas: Essa técnica permite um processamento mais eficiente dos mecanismos de atenção, que são críticos para entender as relações entre diferentes elementos em ambos os prompts de texto e imagens geradas.
  5. Dimensionamento para 12B Parâmetros: O tamanho impressionante do modelo permite que ele capture e sintetize padrões e relações mais complexos, potencialmente resultando em saídas de maior qualidade e diversidade.

Benchmarks do Flux: Um Novo Padrão em Síntese de Imagem

https://blackforestlabs.ai/announcing-black-forest-labs/

https://blackforestlabs.ai/announcing-black-forest-labs/

A Black Forest Labs afirma que o FLUX.1 estabelece novos padrões em síntese de imagem, superando modelos populares como Midjourney v6.0, DALL·E 3 (HD) e SD3-Ultra em vários aspectos importantes:

  1. Qualidade Visual: O Flux visa produzir imagens com fidelidade mais alta, detalhes mais realistas e apelo estético geral melhor.
  2. Seguimento de Prompts: O modelo é projetado para aderir mais de perto aos prompts de texto fornecidos, gerando imagens que refletem com mais precisão as intenções do usuário.
  3. Variedade de Tamanho/Proporção: O Flux suporta uma ampla gama de proporções e resoluções, desde 0,1 até 2,0 megapixels, oferecendo flexibilidade para vários casos de uso.
  4. Tipografia: O modelo mostra capacidades melhoradas na geração e renderização de texto dentro das imagens, um desafio comum para muitos modelos de texto para imagem.
  5. Diversidade de Saída: O Flux é especificamente ajustado para preservar a diversidade completa de saída do pré-treinamento, oferecendo uma gama mais ampla de possibilidades criativas.

Flux vs. Midjourney: Uma Análise Comparativa

https://blackforestlabs.ai/announcing-black-forest-labs/

Agora, vamos abordar a pergunta que arde: O Flux é melhor que o Midjourney? Para responder a isso, precisamos considerar vários fatores:

Qualidade de Imagem e Estética

Tanto o Flux quanto o Midjourney são conhecidos por produzir imagens de alta qualidade, visualmente impressionantes. O Midjourney foi elogiado por seu estilo artístico e capacidade de criar imagens com um apelo estético distinto. O Flux, com sua arquitetura avançada e maior contagem de parâmetros, visa igualar ou superar esse nível de qualidade.

Exemplos iniciais do Flux mostram detalhes impressionantes, texturas realistas e um forte domínio da iluminação e composição. No entanto, a natureza subjetiva da arte torna difícil afirmar com certeza a superioridade nessa área. Os usuários podem encontrar que cada modelo tem suas forças em diferentes estilos ou tipos de imagens.

Seguimento de Prompts

Uma área onde o Flux pode superar o Midjourney é no seguimento de prompts. A Black Forest Labs enfatizou seu foco em melhorar a capacidade do modelo de interpretar e executar prompts de texto com precisão. Isso pode resultar em imagens geradas que mais de perto refletem as intenções do usuário, especialmente para solicitações complexas ou nuances.

O Midjourney às vezes foi criticado por tomar liberdades criativas com prompts, o que pode levar a resultados belos, mas inesperados. A abordagem do Flux pode oferecer um controle mais preciso sobre a saída gerada.

Velocidade e Eficiência

Com a introdução do FLUX.1 [schnell], a Black Forest Labs está visando uma das principais vantagens do Midjourney: velocidade. O Midjourney é conhecido por seus tempos de geração rápidos, o que o tornou popular para processos criativos iterativos. Se o Flux puder igualar ou superar essa velocidade enquanto mantém a qualidade, isso pode ser um ponto de venda significativo.

Acessibilidade e Facilidade de Uso

O Midjourney ganhou popularidade em parte devido à sua interface de usuário amigável e integração com o Discord. O Flux, sendo mais novo, pode precisar de tempo para desenvolver interfaces de usuário igualmente acessíveis. No entanto, a natureza de código aberto do modelo FLUX.1 [schnell] e [dev] pode levar a uma ampla gama de ferramentas e integrações desenvolvidas pela comunidade, potencialmente superando o Midjourney em termos de flexibilidade e opções de personalização.

Capacidades Técnicas

A arquitetura avançada do Flux e sua maior contagem de parâmetros sugerem que ele pode ter mais capacidade bruta em termos de compreensão de prompts complexos e geração de detalhes intricados. A abordagem de correspondência de fluxo e a arquitetura híbrida podem permitir que o Flux lide com uma gama mais ampla de tarefas e gere saídas mais diversificadas.

Considerações Éticas e Mitigação de Viés

Tanto o Flux quanto o Midjourney enfrentam o desafio de abordar preocupações éticas em imagens geradas por IA, como viés, desinformação e questões de direitos autorais. O destaque da Black Forest Labs para a transparência e seu compromisso em tornar os modelos amplamente acessíveis podem potencialmente levar a uma supervisão comunitária mais robusta e melhorias mais rápidas nesses aspectos.

Implementação de Código e Implantação

Usando o Flux com Diffusers

Os modelos Flux podem ser facilmente integrados a fluxos de trabalho existentes usando a biblioteca Hugging Face Diffusers. Aqui está um guia passo a passo para usar o FLUX.1 [dev] ou FLUX.1 [schnell] com Diffusers:

  1. Primeiro, instale ou atualize a biblioteca Diffusers:
!pip install git+https://github.com/huggingface/diffusers.git
  1. Em seguida, você pode usar o FluxPipeline para executar o modelo:
import torch
from diffusers import FluxPipeline

<p># Carregue o modelo
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16)</p>

<p># Ative o descarregamento de CPU para economizar VRAM (opcional)
pipe.enable_model_cpu_offload()</p>

<p># Gere uma imagem
prompt = "Um gato segurando um sinal que diz olá mundo"
image = pipe(
prompt,
height=1024,
width=1024,
guidance_scale=3.5,
output_type="pil",
num_inference_steps=50,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]</p>

<p># Salve a imagem gerada
image.save("flux-dev.png")

Este trecho de código demonstra como carregar o modelo FLUX.1 [dev], gerar uma imagem a partir de um prompt de texto e salvar o resultado.

Implantando o Flux como uma API com LitServe

Para aqueles que desejam implantar o Flux como um serviço de API escalável, a Black Forest Labs fornece um exemplo usando LitServe, um motor de inferência de alto desempenho. Aqui está uma visão geral do processo de implantação:

Defina o servidor de modelo:

from io import BytesIO
from fastapi import Response
import torch
import time
import litserve as ls
from optimum.quanto import freeze, qfloat8, quantize
from diffusers import FlowMatchEulerDiscreteScheduler, AutoencoderKL
from diffusers.models.transformers.transformer_flux import FluxTransformer2DModel
from diffusers.pipelines.flux.pipeline_flux import FluxPipeline
from transformers import CLIPTextModel, CLIPTokenizer, T5EncoderModel, T5TokenizerFast

<p>class FluxLitAPI(ls.LitAPI):
def setup(self, device):
# Carregue componentes do modelo
scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="scheduler")
text_encoder = CLIPTextModel.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
text_encoder_2 = T5EncoderModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="text_encoder_2", torch_dtype=torch.bfloat16)
tokenizer_2 = T5TokenizerFast.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="tokenizer_2", torch_dtype=torch.bfloat16)
vae = AutoencoderKL.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="vae", torch_dtype=torch.bfloat16)
transformer = FluxTransformer2DModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="transformer", torch_dtype=torch.bfloat16)</p>

<p># Quantize para 8 bits para caber em um GPU L4
quantize(transformer, weights=qfloat8)
freeze(transformer)
quantize(text_encoder_2, weights=qfloat8)
freeze(text_encoder_2)</p>

<p># Inicialize o pipeline Flux
self.pipe = FluxPipeline(
scheduler=scheduler,
text_encoder=text_encoder,
tokenizer=tokenizer,
text_encoder_2=None,
tokenizer_2=tokenizer_2,
vae=vae,
transformer=None,
)
self.pipe.text_encoder_2 = text_encoder_2
self.pipe.transformer = transformer
self.pipe.enable_model_cpu_offload()</p>

<p>def decode_request(self, request):
return request["prompt"]</p>

<p>def predict(self, prompt):
image = self.pipe(
prompt=prompt,
width=1024,
height=1024,
num_inference_steps=4,
generator=torch.Generator().manual_seed(int(time.time())),
guidance_scale=3.5,
).images[0]
return image</p>

<p>def encode_response(self, image):
buffered = BytesIO()
image.save(buffered, format="PNG")
return Response(content=buffered.getvalue(), headers={"Content-Type": "image/png"})</p>

<p># Inicie o servidor
if __name__ == "__main__":
api = FluxLitAPI()
server = ls.LitServer(api, timeout=False)
server.run(port=8000)</p>

Este código configura uma API LitServe para o Flux, incluindo carregamento de modelo, tratamento de solicitações, geração de imagens e codificação de respostas.

Inicie o servidor:

&lt;/pre&gt;
python server.py
&lt;pre&gt;

Use a API do modelo:

Você pode testar a API usando um script de cliente simples:

import requests
import json

<p>url = "http://localhost:8000/predict"
prompt = "um robô sentado em uma cadeira pintando uma imagem em uma tela de uma paisagem futurista, arte pop"</p>

<p>response = requests.post(url, json={"prompt": prompt})
with open("generated_image.png", "wb") as f:
f.write(response.content)</p>

<p>print("Imagem gerada e salva como generated_image.png")</p>

Recursos Chave da Implantação

  1. Arquitetura Sem Servidor: A configuração do LitServe permite uma implantação escalável e sem servidor que pode ser escalada para zero quando não estiver em uso.
  2. API Privada: Você pode implantar o Flux como uma API privada em sua própria infraestrutura.
  3. Suporte a Multi-GPU: A configuração é projetada para funcionar eficientemente em várias GPUs.
  4. Quantização: O código demonstra como quantizar o modelo para precisão de 8 bits, permitindo que ele execute em hardware menos poderoso, como GPUs L4 da NVIDIA.
  5. Descarregamento de CPU: O método enable_model_cpu_offload() é usado para conservar memória de GPU, descarregando partes do modelo para a CPU quando não estiverem em uso.

Aplicações Práticas do Flux

A versatilidade e o poder do Flux abrem uma ampla gama de aplicações potenciais em várias indústrias:

  1. Indústrias Criativas: Designers gráficos, ilustradores e artistas podem usar o Flux para gerar rapidamente arte conceitual, quadros de humor e inspirações visuais.
  2. Marketing e Publicidade: Marketeiros podem criar visuais personalizados para campanhas, conteúdo de mídia social e protótipos de produtos com velocidade e qualidade sem precedentes.
  3. Desenvolvimento de Jogos: Designers de jogos podem usar o Flux para prototipar rapidamente ambientes, personagens e ativos, acelerando o processo de pré-produção.
  4. Arquitetura e Design de Interiores: Arquitetos e designers podem gerar visualizações realistas de espaços e estruturas com base em descrições textuais.
  5. Educação: Educadores podem criar auxílios visuais personalizados e ilustrações para melhorar materiais de aprendizado e tornar conceitos complexos mais acessíveis.
  6. Cinema e Animação: Artistas de história e animadores podem usar o Flux para visualizar cenas e personagens rapidamente, acelerando o processo de pré-visualização.

O Futuro do Flux e da Geração de Imagem por Texto

A Black Forest Labs deixou claro que o Flux é apenas o início de suas ambições no espaço de IA generativa. Eles anunciaram planos para desenvolver sistemas de texto para vídeo gerativos competitivos, prometendo capacidades de criação e edição precisas em alta definição e velocidade sem precedentes.

Essa estratégia sugere que o Flux não é apenas um produto autônomo, mas parte de um ecossistema mais amplo de ferramentas de IA generativa. À medida que a tecnologia evolui, podemos esperar ver:

  1. Integração Aprimorada: Fluxos de trabalho sem interrupções entre geração de texto para imagem e texto para vídeo, permitindo a criação de conteúdo mais complexo e dinâmico.
  2. Customização Avançada: Controle mais fino sobre a saída gerada, possivelmente por meio de técnicas avançadas de engenharia de prompts ou interfaces de usuário intuitivas.
  3. Geração em Tempo Real: À medida que modelos como o FLUX.1 [schnell] continuam a melhorar, podemos ver capacidades de geração de imagem em tempo real que poderiam revolucionar a criação de conteúdo ao vivo e mídia interativa.
  4. Geração Transmodal: A capacidade de gerar e manipular conteúdo em várias modalidades (texto, imagem, vídeo, áudio) de forma coesa e integrada.
  5. Desenvolvimento de IA Ético: Continuação do foco no desenvolvimento de modelos de IA que não apenas são poderosos, mas também responsáveis e eticamente sólidos.

Conclusão: O Flux é Melhor que o Midjourney?

A pergunta de se o Flux é “melhor” que o Midjourney não é facilmente respondida com um simples sim ou não. Ambos os modelos representam a vanguarda da tecnologia de geração de imagem por texto, cada um com suas próprias forças e características únicas.

O Flux, com sua arquitetura avançada e ênfase na aderência a prompts, pode oferecer um controle mais preciso e potencialmente uma qualidade mais alta em certos cenários. Suas variantes de código aberto também fornecem oportunidades para personalização e integração que podem ser altamente valiosas para desenvolvedores e pesquisadores.

O Midjourney, por outro lado, tem um histórico comprovado, uma grande e ativa base de usuários e um estilo artístico distinto que muitos usuários aprenderam a amar. Sua integração com o Discord e interface de usuário amigável o tornaram altamente acessível a criativos de todos os níveis de habilidade técnica.

No final, o modelo “melhor” pode depender do caso de uso específico, preferências pessoais e das capacidades evolutivas de cada plataforma. O que é claro é que o Flux representa um passo significativo à frente no campo da IA generativa, introduzindo técnicas inovadoras e empurrando os limites do que é possível na síntese de imagem por texto.

Eu passei os últimos cinco anos me imergindo no fascinante mundo de Aprendizado de Máquina e Aprendizado Profundo. Minha paixão e expertise me levaram a contribuir para mais de 50 projetos de engenharia de software diversificados, com um foco particular em IA/ML. Minha curiosidade contínua também me levou em direção ao Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.