Workshop de desenho de IA, parte onze: prototipagem rápida com FLUX.1 [schnell]

As variedades FLUX.1, [dev] e [schnell] disponíveis para lançamento local (das quais começamos a falar na última edição do Workshop), são chamadas de “destiladas” pelos próprios desenvolvedores em comparação com o FLUX completo. 1 [pro] – uma vez que tanto o número de parâmetros operacionais quanto os requisitos de hardware para eles são significativamente reduzidos em comparação com aquele. Ao mesmo tempo, como afirmado, o modelo de destilação de primeira ordem – [dev] – foi especialmente treinado para reproduzir com a maior precisão possível os resultados do original, mais complexo [pro] (disponível, lembramos, apenas para usuários online através da API) em termos da qualidade das imagens finais, bem como do cumprimento meticuloso das instruções de texto.

Em alto astral

Para tal clareamento do modelo (este procedimento é chamado de “destilação guiada”), sem comprometer sua funcionalidade, tivemos que pagar, é claro, um determinado preço. Em particular, o parâmetro CFG, como discutimos anteriormente, para FLUX.1 [dev] e [schnell] é inicialmente recomendado para ser deixado estritamente igual a um – o que torna completamente desnecessário o uso de dicas negativas (que em si não são o ferramenta mais inequívoca em qualquer Neste caso, eles começam a ser aplicados à imagem formada no espaço latente somente quando os valores da orientação livre do classificador excedem 1). Até certo ponto, as funções de controle de geração de CFG são assumidas para FLUX.1 por um novo valor, chamado simplesmente de “orientação” e definido como 3,5 por padrão. Quanto mais baixa a orientação, pior a imagem segue a dica, mas detalhes individuais – especialmente a pele humana – tornam o modelo mais realista como um todo, enquanto “recomendações” infladas levam a uma execução quase literal da dica (dentro dos limites do as capacidades do modelo, é claro – falaremos mais sobre isso daqui a pouco), mas os rostos, digamos, saem completamente plásticos e não naturais.

Um exemplo simples de como a destilação restringe a variabilidade do modelo enquanto mantém a qualidade (e adequação da dica) de cada imagem separadamente. Todas as imagens acima foram geradas usando a mesma frase “princesa guerreira e seu exótico animal de estimação de batalha, castelo em ruínas como plano de fundo” com diferentes sementes aleatórias: na linha superior – usando um modelo SDXL 1.0 LoRA aprimorado por vários (o mesmo em todos os casos) Modelos LoRA; no meio – FLUX.1 [dev], na parte inferior – FLUX.1 [schnell]. A diferença no nível de diversidade é óbvia, assim como a diferença visível entre [dev] e [schnell] em termos de estética geral

Со всеми этими неприятностями можно бороться, и уже борются: за прошедшие с момента релиза FLUX.1 считаные месяцы энтузиасты успели и научиться запускать новинку с CFG > 1 (respectivamente, obtendo sua resposta a uma dica negativa, e não apenas positiva), e como primeira aproximação, “desdestilar” a versão de [dev], usando na direção oposta o conhecido algoritmo de destilação baseado em um bastante extenso (150 mil) conjunto de imagens anotadas de treinamento. Infelizmente, essas soluções dificilmente podem ser consideradas ideais: sem acesso aos pesos iniciais [pro], nada mais são do que paliativos, que em diferentes cenários de uso nem sempre demonstram resultados obviamente excelentes – em comparação até com o modelo [schnell], que representa a segunda derivada do processo de otimização, versão destilada acelerada do FLUX.1. Além disso, retornar a um ponteiro sem classificador sem unidade dobra imediatamente o tempo de execução de tais modelos em hardware local – o que, do ponto de vista dos proprietários de adaptadores gráficos não muito poderosos, não pode ser considerado uma vantagem.

E, no entanto, as vantagens do FLUX.1, mesmo para esta parte do orçamento do público de entusiastas do desenho de IA, são óbvias demais para continuar a ignorar a novidade da moda, permanecendo comprometidos com os muito mais rápidos SDXL e SD 1.5. Em termos de fidelidade aos prompts do FLUX.1, é difícil encontrar iguais entre outros modelos generativos de texto para imagem com pesos abertos disponíveis para execução local – e, portanto, eu realmente quero aprender como usá-lo para que não tornam-se terrivelmente dolorosos por longos minutos (transformando-se em horas) gastos esperando a próxima imagem ser gerada. Talvez, num certo sentido, a destilação de [dev] e [schnell] possa até ser considerada uma vantagem: sim, a variabilidade das imagens resultantes, juntamente com o rico potencial de sugestões negativas, é sacrificada a esta mesma destilação – mas há é uma oportunidade, escolhendo as palavras certas nas restantes partes positivas, extrair do espaço latente uma imagem o mais próxima possível da pretendida. Além disso, é obviamente de qualidade muito decente e com um número correto quase garantido de dedos nas mãos de personagens antropomórficos – o que é uma vantagem extremamente significativa para os entusiastas do desenho de IA que estão longe da verdadeira criatividade artística e que não são muito hábeis no desenho manual. terminar uma imagem incompleta com perfeição no GIMP ou outro editor.

Se o modelo T5 pré-treinado já for capaz de preencher adequadamente lacunas semânticas em sentenças em linguagem natural, concentrando-se no significado geral identificado da frase, então, após treinamento adicional em um conjunto de dados expandido, ele também poderá lidar com questões que exigem um resposta exata (fonte: Google Research)

Do ponto de vista da tradução correta de palavras em imagens, talvez a principal vantagem do FLUX.1 em comparação com outros modelos que estudamos anteriormente seja a presença de um sistema abrangente para converter texto em tokens (que são então usados ​​para extrair imagens do espaço latente): pacotes CLIP e T5. O modelo de transformador unificado de transferência de texto para texto (cinco letras “t” seguidas dá a sigla T5), proposto por pesquisadores do Google em 2020, não duplica de forma alguma o padrão para Stability AI, BFL e muitos outros produtos. outros desenvolvedores são o codificador CLIP (pré-treinamento contrastivo de linguagem-imagem; “correspondência de uma imagem a um texto com base no treinamento preliminar”). Pelo contrário: converte texto em texto, como se estivesse mastigando o modelo CLIP – que, a julgar pelo tamanho do arquivo com pesos para ele (apenas 246 MB, como lembramos da última vez que instalamos o FLUX.1 [dev ] ; o arquivo t5xxl em codificação de 16 bits, deixe-nos lembrá-lo para comparação, ocupa até 9,79 GB), um pássaro voando baixo – o que e como exatamente precisa ser representado pela bolsa de couro empoleirada do outro lado do monitor do computador.

O T5 faz isso, é claro, de uma forma um tanto incomum, mas completamente algorítmica, e se você entender exatamente como, obter imagens adequadas à solicitação de composição do usuário usando o novo modelo será muito mais fácil do que com SDXL ou SD 1.5. O SD3M, como observamos na época, também é utilizado para interpretar dicas no T5 em combinação com até duas versões do CLIP – vamos mencionar isso por uma questão de justiça. Mas esta criação inglória da IA ​​​​de estabilidade acabou sendo tão impiedosamente emasculada antes de ser lançada na natureza que hoje um raro, até mesmo o mais sincero, entusiasta do desenho de IA se lembra dela pelo menos em pesadelos. O recém-criado Stable Diffusion 3.5 talvez seja um assunto diferente, mas a comunidade apenas começou a explorar suas capacidades. Em uma palavra, voltando ao tema principal deste “Workshop”: para revelar plenamente o potencial do FLUX.1, você precisa aprender a redigir corretamente os prompts de texto para ele, facilitando ao T5 a interpretação de seus eficientes, mas modelo CLIP tacanho. E para isso seria muito legal aprender como prototipar rapidamente texto para imagem – para que você possa, após avaliar o resultado da próxima iteração, ajustar o texto no campo de entrada; após o que, enviando novamente a tarefa para execução, aguarde o aparecimento de uma nova imagem não por horas ou dezenas de minutos, mas pelo menos nas primeiras centenas de segundos. Felizmente, as ferramentas para esse tipo de atividade já foram desenvolvidas por entusiastas e estamos começando a estudá-las.

⇡#Sutilezas da quantização

E vamos começar prestando homenagem ao modelo FLUX.1 [schnell], cuja execução envolve apenas quatro etapas de iteração (etapas) – afinal, esta é uma versão acelerada de sua criação, fornecida oficialmente a nós pelos desenvolvedores de BFL. Sim, os entusiastas do desenho de IA têm muitas reclamações sobre isso – incluindo reclamações sobre a qualidade da imagem final, sobre flexibilidade (em termos de às vezes ser muito literal ao seguir a dica), sobre o nível de elaboração de pequenos detalhes, etc. O pior é que, mesmo que você encontre uma semente bem-sucedida para uma determinada dica específica com o modelo [schnell] usando uma pesquisa cega e gratuita, você não será capaz de mudar para [dev] com a mesma semente e obter basicamente a mesma imagem, só que de melhor qualidade – terá uma composição uniforme, é muito diferente, uma vez que a “aceleração” adicional [schnell] à destilação influenciou significativamente o método usado aqui para comparar imagens extraídas do espaço latente com tokens . E ainda assim [schnell] tem um potencial considerável: digamos, ninguém se incomoda, tendo criado uma imagem que dá certo na composição usando este modelo, depois amplia-a com maior qualidade (procedimento de luxo) usando outro – o mesmo FLUX.1 [dev ] ou SDXL/SD 1.5 com quaisquer extensões LoRA, tanto na versão simples upscale com acabamento generativo, quanto com mais ferramentas controladas pelo operador Adaptador ControlNet/IP, inpainting/outpainting – e outras desenvolvidas pela comunidade ao longo dos últimos anos de desenvolvimento de IA local – desenho. Em geral, não faz sentido negligenciar a ferramenta de prototipagem rápida padrão do arsenal da BFL – e nós a usaremos.

Para carregar o UNet no formato GGUF, você precisa usar o nó “Unet Loader (GGUF)”: clicando duas vezes em uma área vazia do campo de trabalho, na janela de pesquisa que se abre, comece a digitar “gguf” – e você verá isso quase imediatamente

A última edição do Workshop contém todas as instruções para instalação do ambiente de trabalho ComfyUI na versão autônoma – não vamos repeti-las. Observamos apenas que no momento da redação deste material, a versão atual deste ambiente é 0.2.4 e que contém links para todos os arquivos necessários para o lançamento do [schnell], nomeadamente os modelos UNet, CLIP/T5 e VAE, juntamente com a referência os ciclogramas estão presentes nas páginas da seção correspondente com exemplos criados pessoalmente por ComfyAnonimous, autor deste espaço de trabalho.

Porém, se o arquivo flux1-schnell.safetensor com os pesos do modelo UNet principal de 23,8 GB ainda não foi baixado, não há necessidade de pressa: faz sentido acelerar o trabalho com o FLUX.1 começar aqui mesmo. A representação padrão dos pesos do modelo generativo como uma matriz de números reais de 16 bits (formato FP16) consome muitos recursos; Não é por acaso que as versões compactadas de tais arquivos estão se tornando cada vez mais populares – com uma diminuição na profundidade de bits para 8 (FP8) e até 4 (NF4). Uma diminuição compreensível na qualidade em comparação com o modelo original de 16 bits ao usar tais UNets nem sempre é catastrófica, e seus tamanhos são significativamente reduzidos – o que permite que caibam inteiramente, mesmo na memória de vídeo não mais extensa. Portanto, para 16 GB de RAM de vídeo, o que é ideal hoje, e para a GeForce GTX 1070 instalada em nosso sistema de teste com 8 GB de memória, a versão flux1-schnell-Q4_K_S.gguf é formalmente adequada, que ocupa menos de 7 GB. Vamos prestar atenção na extensão: ela indica que é utilizada a codificação GGUF, especialmente projetada para armazenamento compacto da matriz de pesos de modelos generativos (não apenas compressão, mas quantização, quantização, desses dados específicos) – e para isso você vai precisa instalar um complemento especialmente desenvolvido, ComfyUI-, no ambiente de trabalho do GGUF, a partir de seu repositório Git Hub (https://github.com/city96/ComfyUI-GGUF).

Um ciclograma de referência com uma “galáxia em uma garrafa” junto com o resultado de sua execução no ambiente de trabalho ComfyUI: o nó “Unet Loader (GGUF)” já foi usado aqui para carregar o modelo flux1-schnell-Q4_K_S.gguf, e todos os outros parâmetros de geração permanecem os mesmos – apenas esses nós não estão lotados para maior clareza

Na página citada acima com exemplos de gerações com FLUX.1 no ambiente ComfyUI, existem imagens em formato PNG que contêm os ciclogramas correspondentes – para vê-los, após o carregamento, basta arrastar a imagem com o mouse do “Explorer” para campo de trabalho do meio ambiente. Depois de alterar o nó de origem para carregar o modelo UNet na codificação FP padrão para “Unet Loader (GGUF)” e deixar todos os outros parâmetros inalterados, com o prompt “uma garrafa com uma galáxia arco-íris dentro dela em cima de uma mesa de madeira no meio de uma cozinha moderna” obtemos aproximadamente o mesmo que nas variantes FP16 e Q8.

Resultados da execução do mesmo ciclograma (exceto que diferentes nós foram usados ​​para carregar UNet nos formatos FP e GGUF) com os mesmos parâmetros de geração, incluindo dica e semente, mas para o modelo FLUX.1 [schnell] em representações diferentes: à esquerda – FP16, no centro – Q8_0, à direita – Q4_K_S

A diferença de tamanho e duração da execução é mais do que impressionante. O modelo FP-16 original [schnell] ocupa quase 24 GB e gera uma imagem a uma velocidade de aproximadamente 69 segundos por iteração (lembre-se, para esta versão destilada e acelerada do FLUX.1 é recomendado produzir quatro no total), GGUF Q8_0 – 12 GB e 31 s/it., Q4_K_S – 7 GB e 29 s/it. Deve-se entender que nos três exemplos foi medida a velocidade de emissão apenas da primeira imagem: já que o carregamento preliminar na memória e a execução dos modelos CLIP e T5 também demoram um certo tempo, no modo de busca livre – quando o texto a dica é baixa e a semente muda apenas aleatoriamente – a segunda imagem e as subsequentes de uma série serão extraídas do espaço latente ainda mais rápido.

Uma conclusão interessante surge após comparar as três imagens que recebemos com o ciclograma de teste: a diferença visual entre FP16 e Q8_0 é mínima, enquanto a primeira opção de codificação [schnell] demora mais de duas vezes mais para ser executada; as imagens obtidas usando Q8_0 e Q4_K_S diferem muito mais notavelmente – mas a duração da geração para elas é aproximadamente a mesma. E esta não é uma flutuação aleatória: logo após o aparecimento dos modelos GGUF no Hugging Face, houve quase um consenso na comunidade de entusiastas quanto à preferência do Q8_0 a todas as outras opções, incluindo as codificações FP e NF – a perda na execução o tempo de tais modelos em comparação com mais compressão é mínimo (especialmente para [schnell] com suas quatro iterações), assim como a diferença visual da versão FP16 original. Por este motivo, futuramente, no âmbito deste “Workshop”, utilizaremos o modelo flux1-schnell-Q8_0.gguf do repositório FLUX.1-schnell-gguf. Alguns minutos por imagem são bastante aceitáveis, considerando o quão fiel o modelo FLUX.1 é a uma pista composta corretamente. Outra questão é como realmente conseguir essa correção?

⇡#Aqui está sua espada

Voltemos aos dois tipos de codificadores de texto mencionados anteriormente – CLIP e T5. Com o primeiro, tudo fica mais ou menos claro: trata-se de um modelo de rede neural, treinado para comparar certas imagens com um determinado texto (mais precisamente, tokens numéricos condicionais nos quais se transforma por conveniência de processamento por um sistema de computação digital ). Novamente, seria mais correto falar não de imagens em uma forma acessível à percepção humana, mas de vetores em algum espaço essencialmente multidimensional – aquele mesmo latente – que pode ser percebido como abstraído de entidades reais, apresentado na forma de números numéricos. sequências, ideias quase platônicas de objetos empíricos, suas características (tamanho, cor, textura superficial…), poses, estilos artísticos, etc. Já na próxima etapa, esses vetores são transformados em imagens (neste caso, imagens, já que estamos falando de modelos de IA para desenho, mas também é possível em texto, e em código de programa, e em vídeos, e em música, dependendo da tarefa em questão) submodelo generativo VAE, autoencoder variacional.

Como a documentação oficial do FLUX.1 é bastante escassa, os próprios entusiastas começaram a entender o código-fonte aberto do novo modelo – e eventualmente compilaram o seguinte diagrama de blocos aproximado de seu funcionamento: a dica de texto vem de baixo, é processada em conjunto por CLIP e T5 (fonte: Reddit)

O CLIP, apesar de todas as suas vantagens, não é ideal: sua “atenção” se dissipa rapidamente à medida que uma determinada dica de texto aumenta (quanto mais próxima do final uma determinada palavra estiver, menor será a probabilidade de ver um objeto ou característica associada a ela em a imagem); ele não percebe bem as frases em linguagem natural (uma lista de substantivos separados por vírgulas é “mais compreensível” para ele do que uma frase coerente). Uma opção para ajudar o modelo generativo a aprofundar a solicitação do operador é envolver um transcodificador adicional, outro modelo generativo treinado especificamente para converter frases formuladas por humanos em um conjunto de palavras-chave que é obviamente melhor percebido pelo modelo CLIP. Este transcodificador é o modelo T5 que já mencionamos mais de uma vez, que, em estreita interação com o CLIP, constrói no espaço latente (de acordo com a experiência adquirida durante o treinamento preliminar) o vetor que melhor corresponde à solicitação do usuário. Grosso modo, CLIP é um bom artista, embora não brilhante, capaz de retratar a essência correspondente em resposta a uma palavra familiar que ouve, enquanto T5 é um gestor que nada sabe de desenho, tem certo domínio da fala humana e é bem ciente do vocabulário do colega; traduzir conscientemente para uma linguagem CLIP acessível as tarefas recebidas de um operador ao vivo.

O resultado da sua colaboração no caso do FLUX.1 muitas vezes (muito mais frequentemente do que para SD1.5 e SDXL) acaba por ser extremamente satisfatório – já falamos sobre isso na última edição do Workshop. Sim, também existem dificuldades associadas tanto às peculiaridades de treinar todos os submodelos envolvidos no processo de desenho, quanto à destilação das versões [dev] e [schnell] disponíveis para execução local. Por exemplo, mencionar uma espada em uma dica de ferramenta literalmente faz com que o modelo gere cenas da vida medieval/fantasia. E como na Idade Média histórica quase todos os homens andavam com barba, e suas imagens nesta forma vão parar nos bancos de dados de treinamento de modelos generativos, a sugestão banal “um homem com uma espada” é 100% provável (testamos esta tese em uma amostra de 350 gerações com sementes aleatórias – não houve perseverança suficiente para mais) gerará imagens de homens barbudos armados com várias lâminas. Além disso, a ligação “barba-espada” ao nível do modelo revelou-se tão forte – recordamos, também devido à destilação das versões FLUX.1 disponíveis para execução local – que mesmo uma indicação direta de imberbe (em várias versões – “sem barba”, “sem barba”, “raspado”, “queixo limpo”, etc.) se funcionar, então em grau mínimo: o lugar da barba do personagem gerado às vezes é ocupado por barba por fazer de três dias, mas isso é tudo. É aqui que uma dica negativa seria útil, mas sua adição involuntariamente artificial, através dos esforços de entusiastas, ao ciclo de trabalho FLUX.1 padrão gera, infelizmente, artefatos adicionais e prolonga o tempo de execução.

As espadas estão no lugar – mas, infelizmente, as barbas também, embora a dica neste caso seja formulada como “um homem imberbe com uma espada”; Além disso, uma tentativa de capturar simultaneamente uma espada e a falta de barba do espaço latente gera artefatos óbvios – preste atenção tanto na arma em si quanto nas mãos que a seguram (fonte: geração de IA baseada no modelo FLUX.1 [schnell])

Um ponto importante: embora o ciclograma de referência que usamos até agora tenha uma janela de entrada de texto para uma dica positiva, o modelo está pronto para aceitar instruções de texto para os modelos CLIP e T5 separadamente – e isso por si só já permite melhorar significativamente o qualidade da imagem (especialmente com uma composição complexa) na ausência de ferramentas externas adicionais como ControlNet, dicas regionais e outras. O SD3M também oferecia essa opção – lembramos que havia até três conversores de texto: duas variedades de CLIP e um T5 – mas esse modelo agora caiu ingloriamente no esquecimento, e os entusiastas apenas começaram a colocar suas mãos experientes no SD 3.5. FLUX.1, mesmo na versão [schnell], é um assunto diferente, e agora verificaremos isso em detalhes.

No lugar do nó original “CLIP Text Encode (Prompt)” – no centro na parte superior, já com a entrada e saída desconectadas – para inserir um prompt de texto, introduziremos “CLIPTextEncodeFlux” no ciclograma de referência. Logo à direita do último está o nó “BasicScheduler” mencionado abaixo com o número de etapas “4”, já alterado para usar o agendador “beta”

Primeiro, vamos alterar o valor “simples” para “beta” no nó “BasicScheduler”: a combinação do algoritmo de amostragem (sampler) “euler” e do agendador (scheduler) “beta” é reconhecida pela comunidade como ideal para o Família de modelos FLUX.1 em termos de velocidade de execução e qualidade geral das imagens resultantes. A seguir, em algum lugar vazio do campo de trabalho, clique duas vezes com o botão esquerdo do mouse e na barra de pesquisa que se abre, comece a digitar “cliptext…”. Ao digitar no menu suspenso abaixo desta linha, aparecerá a opção “CLIPTextEncodeFlux”, entre outras; Vamos clicar nele – agora apareceu um nó inédito no campo de trabalho com dois campos de texto (o superior é para o modelo CLIP, o inferior é para o T5) e uma linha na qual está definido o parâmetro de orientação, orientação, com o valor padrão “3,5”. Observemos, a propósito, que no ciclograma de referência original para [schnell] este parâmetro não está definido em nenhum lugar, e se você posteriormente tentar alterá-lo em um nó que acabou de ser introduzido no ciclograma, ele não será tem algum efeito na imagem final – esta é outra consequência da dupla emasculação (destilação + aceleração) da versão utilizada do FLUX.1. Para a opção [dev], ao contrário, o tamanho da liderança importa, mas falaremos sobre prototipagem rápida com [dev] em outro momento.

⇡#Frasco com segredo

Então, colocando “CLIPTextEncodeFlux” no lugar de “CLIP Text Encode (Prompt)” e conectando as conexões de entrada e saída onde deveriam estar – “clip” e “CONDITIONING”, respectivamente – primeiro, vamos ter certeza de que tudo funciona corretamente. Vamos colocar a dica anterior em ambos os campos de entrada de texto que agora estão disponíveis, “uma garrafa com uma galáxia arco-íris dentro dela em cima de uma mesa de madeira no meio de uma cozinha moderna”, e, usando a mesma semente, executaremos o ciclograma – que deve indicar que a imagem resultante completa é idêntica à anterior. Por precaução, um lembrete: aqui e além ainda usamos o modelo principal com quantização GGUF Q8_0.

À esquerda e no centro – o resultado da geração com o algoritmo de amostragem Euler e o escalonador simples, mas no primeiro caso usando o nó padrão “CLIP Text Encode (Prompt)” com um único campo para inserir uma dica geral, e no segundo a mesma dica é inserida através de “CLIPTextEncodeFlux” com linhas de texto idênticas em ambos os campos: as imagens são completamente idênticas. À direita está o mesmo método de inserção de texto, mas com o par euler + beta: a estética geral melhorou (puxadores mais realistas nos móveis, uma chaleira no fogão, o fundo curvo de uma garrafa é mostrado mais corretamente, etc.)

E agora vamos à parte divertida: enriqueceremos lexicamente a dica do modelo T5, transformando-a em uma longa descrição da cena desejada. O significado desta ação é o seguinte: como as versões do FLUX.1 disponíveis para execução local são destiladas, o mesmo texto de entrada, mas com valores iniciais diferentes, gerará aproximadamente as mesmas composições, e bastante escassas em termos de meios visuais. Por outras palavras, a variabilidade deste modelo é pior que a do SDXL e mesmo do SD 1.5 – aí seria de esperar uma profusão de interpretações em resposta às pistas mais simples, embora em termos estéticos estas interpretações nem sempre agradassem ao operador. Para FLUX.1 a situação é oposta: a estética da imagem, que é gerada por uma dica lacônica, é na maioria das vezes bastante aceitável (se você não tentar combinar algo incompatível do ponto de vista do modelo, como espadas e imberbe), mas a variabilidade é extremamente escassa.

É aqui que a capacidade do T5 de interpretar descrições longas e detalhadas em linguagem humana de uma forma lapidar que o CLIP possa entender vem em socorro. Deixando uma linha curta na janela superior de entrada de texto do nó “CLIPTextEncodeFlux”, na inferior deverá ser colocada uma linha expandida, rica em detalhes e enriquecida com pequenos detalhes, destinada especificamente ao T5. Se a proficiência em inglês do operador não for adequada, você poderá esboçar essa descrição em russo e usar qualquer tradutor on-line. Ou recorrer a serviços de melhoria de prompt especialmente criados para esse fim, dos quais já existem alguns na Internet, inclusive totalmente gratuitos – porém, muitas vezes com restrições no número de solicitações em determinado intervalo de tempo, pois costumam utilizar GPT ou outros modelos de nuvem generativos para tradução de texto para texto. Em princípio, você pode executar esses enriquecedores de texto em um PC local (além disso, integrando o nó correspondente diretamente no ciclograma ComfyUI), mas tal escapada exigirá uma quantidade razoável de recursos e tempo de computação – especialmente em uma máquina com GTX 1070; porque – não desta vez.

Como resultado, da nossa dica inicial obtemos o seguinte, por exemplo, tela verbal:

À esquerda ainda está a mesma imagem (extrema direita na ilustração anterior) que foi obtida alimentando a mesma dica curta nas entradas CLIP e T5; à direita está o que aparece se o T5 oferecer um texto significativamente mais rico

Modelos apenas com codificadores CLIP simplesmente não serão capazes de extrair todas as informações contidas neste texto, mas o T5, no caso do FLUX.1, virá prontamente em socorro. Depois de colocar os dois parágrafos resultantes na segunda janela de entrada de texto do nó “CLIPTextEncodeFlux”, executaremos o ciclograma para execução – e veremos um resultado surpreendentemente diferente em comparação com o anterior. As diferenças são literalmente marcantes: aqui está uma galáxia inegavelmente espiral (e não uma nebulosa indistinta e disforme) dentro do frasco, e um fundo enriquecido com detalhes, e uma textura de madeira que se tornou extremamente pitoresca – em uma palavra, o jogo claramente vale a pena a vela. Além disso, o que é importante do ponto de vista da prototipagem rápida, a velocidade de execução do modelo com diferentes opções de dicas para CLIP e T5 permanece quase a mesma.

Acontece que ao ajustar a entrada de texto para o conversor T5, o operador consegue influenciar significativamente a imagem final – tanto na composição como um todo quanto nos detalhes e estilo artístico. A ideia geral é clara: a dica para o CLIP deve ser simples, concisa, baseada em conceitos obviamente bem representados no array de treinamento, enquanto toda a poética da imagem visual criada pelo sistema deve estar concentrada na descrição do T5.

À esquerda – não há engarrafamento; à direita – já está instalado e a composição está praticamente inalterada

Até que ponto esta poética influenciará a imagem final será apreciada pelo exemplo a seguir. Depois de aplicar uma ponta enriquecida na entrada do conversor T5, a rolha que antes tapava o gargalo da nossa garrafa desapareceu algures. Vamos devolvê-lo ao seu lugar – mas não completando o desenho, mas simplesmente acrescentando uma menção ao longo texto destinado especificamente ao T5. Para isso, basta alterar a primeira inclusão de “garrafa de vidro” para “garrafa de vidro com rolha”, ou seja, adicionar uma única palavra a estes dois parágrafos. E o resultado – cuidado!

À esquerda está a primeira versão da imagem com réplica; à direita está o segundo, mais aceitável, e tudo isso com a mesma semente

Substituir o frasco por uma retorta química? Também não há problema: em vez disso

Frasco de vidro, de formato elegante, gargalo cônico e base larga

Vamos inserir o seguinte fragmento no texto da segunda dica:

Retorta de vidro com gargalo suave e curvilíneo que leva a um bico delicado, primorosamente projetado para vazamento preciso

Logo abaixo – outra substituição: “Dentro da garrafa” – para “Dentro da retorta”,

и, наконец, «dentro de uma simples garrafa» → «dentro de uma simples retorta»

Aqui o resultado não é tão impressionante – o exaustor acima do fogão à esquerda assumiu uma forma não natural e a mesa de alguma forma esticada indecentemente até a janela. Vamos tentar recorrer a um dos modelos generativos on-line para ajudar a enriquecer as dicas – vamos ver o que isso transforma na frase banal “retorta de vidro sobre uma mesa”. Aqui está o que:

Em um laboratório mal iluminado, repleto do leve cheiro de produtos químicos e do forte cheiro de vidro, uma retorta de vidro meticulosamente trabalhada fica sobre uma mesa de madeira resistente, sua superfície brilhando sob a luz bruxuleante de uma lamparina a óleo. A retorta apresenta um pescoço suave e curvilíneo que leva a um bico delicado, primorosamente projetado para um vazamento preciso. Uma mistura de líquidos azuis vibrantes e verdes profundos borbulha suavemente em seu interior, criando pequenas ondulações rítmicas que refletem a luz como pequenas joias. Ao redor da retorta, notas espalhadas com rabiscos apressados ​​sugerem experimentos recentes, enquanto prateleiras empoeiradas transbordam de vidros coloridos, cada peça única em formato e tamanho. A atmosfera está densa de expectativa, como se a réplica contivesse segredos esperando para serem revelados, e um leve sussurro do passado permanecesse no ar.

A partir desta descrição detalhada (aliás, você pode gerar uma imagem bastante interessante a partir dela), vamos acrescentar à primeira menção de uma réplica em nosso bloco de texto anterior para T5 – “retorta de vidro com pescoço liso e curvilíneo levando a um bico delicado” – apenas duas palavras no início: “meticulosamente trabalhado”. E vamos rodar novamente o ciclograma para execução: o resultado está na ilustração anterior à direita.

E agora este é um assunto completamente diferente. Embora a réplica aqui pareça mais um vaso, no geral o objetivo inicialmente traçado foi alcançado: mantendo o fundo quase inalterado, ajustamos de forma bastante perceptível o elemento central da composição. Essa manipulação de dicas no nível de palavras individuais – e a manipulação é sutil, pois é realizada em um nível mais delicado que o modelo CLIP T5 – abre muitas oportunidades para refinar gerações de sucesso nas quais algo deu errado parcialmente . A estabilidade do CLIP praticamente garante a estabilidade geral da imagem em um valor fixo da semente, e a mudança do T5 levará gradativamente o operador ao resultado desejado – e como [schnelle] é simplesmente criado para prototipagem rápida, este caminho não será demorar muito.

Agora a retorta [schnelle] gerada pelo modelo está à esquerda, e à direita está o resultado de FLUX.1 [dev] em uma versão quantizada de Q8_0 com um número de etapas de 20 e todos os outros parâmetros inalterados, incluindo a amostragem algoritmo, agendador, semente e ambas as dicas. Esta é definitivamente uma galáxia em uma réplica!

Multar; mas as imagens produzidas pela versão [dev] do FLUX.1, como já tivemos a oportunidade de ver, em termos de estética geral ainda estão muito acima das criações do [schnelle] de alta velocidade. Não será realmente possível dominar a prototipagem rápida para um modelo que foi originalmente concebido para 20 passos de iteração em vez de 4 – e, portanto, menos destilado e, portanto, do ponto de vista estético, capaz de produzir um resultado ainda mais atraente? Felizmente, essas oportunidades existem e da próxima vez iremos conhecê-las. Enquanto isso, os interessados ​​podem baixar imagens PNG com ciclogramas integrados para gerar as garrafas e retortas que analisamos usando este link.

Materiais relacionados

  • A Adobe surpreendentemente tornou o aplicativo de desenho Fresco gratuito.
  • Os smartphones Honor Magic7 terão um agente de IA integrado e oferecerão renderização de IA usando NPU.
  • Midjourney lançará um editor de imagens de IA.
  • Jogando na liga principal: uma revisão do software russo com inteligência artificial.
  • O Microsoft Paint adicionou funções de preenchimento e apagamento de IA, assim como o Photoshop.
avalanche

Postagens recentes

Os usuários do iPhone 16 começaram a ouvir vozes de outras pessoas nos alto-falantes

Violações acidentais de privacidade são uma das principais preocupações dos consumidores quando se trata de…

3 horas atrás

Diálogos e locações de “Tarantino” que dão vontade de gritar: novos detalhes de “Rus vs.

Ocupado com o desenvolvimento de uma sequência “revolucionária” do jogo de ação pseudo-histórico “Rus vs.…

3 horas atrás

O sucessor espiritual de Left 4 Dead receberá uma sequência – o ator “acendeu” Back 4 Blood 2

Quando, no início de 2023, o Californian Turtle Rock Studios (Left 4 Dead) reduziu o…

4 horas atrás

A Nike lançou tênis quase inteiramente impressos em 3D.

A Nike revelou o Air Max 1000, o primeiro tênis da empresa feito quase inteiramente…

4 horas atrás

O laptop de bolso GPD Pocket 4 com chips AMD será oferecido ao preço de US$ 829

A empresa GPD anunciou os preços de seu dispositivo móvel híbrido GPD Pocket 4. O…

4 horas atrás