← All articles

NOTAS DE ENGENHARIA

Preservar o Estilo no Image to Prompt: O Que Mudámos e Porquê

A nossa ferramenta Image to Prompt estava a acertar no sujeito mas a errar no estilo. Uma fotografia granulada dos anos noventa voltava como um cartaz de filme polido. Esta é uma nota sobre porque é que isso acontece, o que mudámos, e que partes pode aplicar manualmente em qualquer ferramenta.

Cover image for Preservar o Estilo no Image to Prompt: O Que Mudámos e Porquê

Um sujeito fiel no estilo errado

Os relatos eram consistentes. Alguém carrega uma referência, obtém um prompt, executa-o, e o resultado é reconhecivelmente a mesma cena — o mesmo sujeito, o mesmo enquadramento, aproximadamente a mesma luz — mas não se parece com a sua imagem. A textura está mais limpa. A cor está mais rica. Algo foi suavizado.

Esse padrão é uma pista. Quando o sujeito e a composição sobrevivem mas a superfície e o acabamento não, o prompt está a descrever o que está no enquadramento, e não como o enquadramento foi feito. São tarefas diferentes, e a segunda é muito mais fácil de fazer mal.

O estilo era um item numa lista de nove

A nossa instrução ao modelo de visão costumava pedir-lhe que captasse “sujeito, cenário, composição, lente ou vista, iluminação, paleta, materiais, atmosfera, e estilo”. Lê-se como uma lista de verificação exaustiva. Na prática, é uma forma de garantir que o estilo recebe apenas um nono da atenção.

Uma lista plana convida a uma cobertura uniforme. Mas o estilo não é um atributo entre nove — decide como os outros oito são renderizados. Acontece também ser o mais difícil de pôr em palavras, o que o torna o item mais necessitado de orientação extra e, numa lista como essa, o item com menos probabilidade de a receber.

Dê ao estilo um vocabulário, não um adjetivo

Peça a um modelo de linguagem para descrever o estilo sem lhe dizer do que o estilo é feito, e ele recorre às palavras mais próximas do conceito: “arte digital”, “altamente detalhado”, “cinematográfico”. Estas não são descrições. Transportam quase nenhuma informação sobre a imagem específica que tem à frente.

Pior ainda, deixam uma lacuna, e o modelo de imagem a jusante preenche essa lacuna com a sua própria estética predefinida — que é precisamente o que se estava a tentar substituir. A correção é nomear os eixos em que o estilo realmente se decompõe, para que o modelo tenha algo concreto onde se apoiar.

  • Suporte e técnica: fotografia em película de 35mm, guache, renderização 3D, vetor plano, desenho a tinta.
  • Época ou movimento, que transporta muitas vezes mais informação do que qualquer adjetivo isolado.
  • Carácter de câmara: sensação de distância focal, profundidade de campo, tipo de película, ou o motor de renderização a ser imitado.
  • Traço: espessura de linha, comportamento do pincel, qualidade dos contornos, como as superfícies se encontram.
  • Correção de cor e temperatura, considerada separadamente de quais as cores que aparecem.
  • Grão, textura, e acabamento de superfície.
  • Pós-produção: halação, aberração cromática, pontos de meio-tom, sombreado cel, compressão intensa.

Nunca melhore a referência

Este ponto surpreendeu-nos pela sua importância. Todos os modelos no pipeline — o que lê a imagem e o que gera a partir do prompt — têm um viés de melhoria. Perante algo plano, subexposto, mal iluminado, ou comprimido, devolvem silenciosamente uma versão melhor.

Mas a imperfeição é um estilo. Uma fotografia de festa com flash direto, uma imagem de telemóvel sobre-exposta, uma digitalização de baixa resolução com bandas visíveis: essas qualidades são normalmente toda a razão pela qual alguém guardou a imagem. Por isso, a instrução diz agora isso mesmo, sem rodeios — se a imagem é amadora, plana, de baixa fidelidade, ou imperfeita, diga-o claramente e mantenha-a.

Se escreve prompts manualmente, esta é a melhoria mais fácil ao seu alcance. Descreva os defeitos de propósito.

Palavras de qualidade vazias não são grátis

“Bonito”, “deslumbrante”, “obra-prima”, “altamente detalhado”, “8k”, “premiado”. Parecem inofensivas, como aumentar um botão de volume. Não são. Um prompt tem um orçamento de atenção finito, e cada palavra de enchimento tira uma parte dele aos termos que realmente descrevem a sua imagem.

Também puxam em direção à média. “Premiado” não tem significado visual, pelo que o modelo o resolve para o que quer que tenha aprendido que são as imagens premiadas — uma estética forte e genérica, afastada da sua referência. A nossa instrução proíbe agora essa lista explicitamente.

Identifique o estilo antes de escrever o prompt

Pedir análise e resultado num único passo permite que o modelo trate o estilo como um espaço de adjetivo a preencher com o que estiver mais à mão. A instrução agora decorre em duas etapas. Antes de escrever seja o que for, o modelo identifica o suporte e a técnica de produção, e depois responde a uma pergunta específica.

Nomear essa diferença é toda a tarefa. Uma vez nomeada, o prompt é escrito com o suporte e o estilo em primeiro lugar, antes do sujeito — porque é aí que todos os modelos-alvo lhes dão mais peso.

Cada modelo lê um prompt de forma diferente

As nossas instruções anteriores por modelo afinavam o tom. Os prompts do Midjourney eram instruídos a ser “evocativos”, os do GPT Image a ser “diretos e literais”. Isso é um registo estilístico, e não é o que decide se um estilo sobrevive.

O que decide isso é o codificador de texto que o modelo usa, onde no prompt se situam os termos de estilo, e que controlos nativos o modelo expõe. Isso é concreto, e difere mais do que a maioria dos guias de prompts admite.

  • O Nano Banana e o GPT Image leem prosa em linguagem natural. Declare o suporte na oração inicial, antes do sujeito.
  • O Flux usa um codificador T5, lida bem com frases longas, e ignora completamente a sintaxe de ponderação como (term:1.2) — a ênfase tem de vir da formulação e da ordem das palavras.
  • O Midjourney dá muito peso ao início do prompt, prefere frases densas separadas por vírgulas, e não compreende a negação escrita em prosa.
  • O Stable Diffusion lê tokens CLIP em blocos de 77 tokens e dá mais peso ao início de cada um, pelo que as tags de suporte e estilo devem vir em primeiro lugar, não por último.

O Midjourney tem um parâmetro que luta contra a sua descrição

Esta é a coisa mais útil deste artigo, e nem sequer é uma técnica de escrita de prompts. O Midjourney aplica a sua própria estética por cima do seu prompt, regida pelo --stylize, cujo valor predefinido é 100. Nessa definição, o modelo é ativamente encorajado a fazer a imagem parecer-se com o Midjourney, em vez de com o que foi pedido.

Por isso, se está a converter uma referência e o resultado continua a voltar mais polido, mais cinematográfico, e mais dirigido artisticamente do que a sua fonte, nenhuma quantidade de descrição irá corrigir isso. É o parâmetro que está a sobrepor-se a si.

Todos os prompts do Midjourney que geramos agora terminam com --style raw, que desativa essa estética da casa, e um --stylize baixo, à volta de 50. As exclusões são expressas com --no em vez de em prosa, porque a negação em prosa não funciona aqui.

No Stable Diffusion, metade do prompt é o negativo

Os utilizadores do Stable Diffusion esperam dois blocos: o prompt e o prompt negativo. A fidelidade de estilo depende fortemente do segundo, porque é aí que se suprime o desvio estético predefinido que o modelo aplicaria de outra forma.

Estávamos apenas a gerar o primeiro bloco, o que é metade de um resultado. Os prompts do Stable Diffusion gerados agora começam com tags de suporte e estilo, aplicam a ponderação (term:1.2) com moderação às uma ou duas tags que definem o aspeto, e incluem um prompt negativo escrito para essa imagem em particular, em vez de uma lista genérica copiada e colada.

Quando o formato de saída e o modelo-alvo discordam

A ferramenta permite escolher um formato de saída — um prompt geral, um modelo estruturado, JSON — e escolher separadamente um modelo-alvo. Essas duas escolhas podem contradizer-se. “Devolver apenas JSON válido” e “escrever tags separadas por vírgulas terminando em parâmetros” não podem ser ambas satisfeitas.

Antes passávamos ambas as instruções e deixávamos o modelo resolver isso. E resolvia, mas de forma diferente em execuções diferentes. Essa inconsistência é invisível como erro e muito visível como experiência: a mesma imagem com as mesmas definições produz prompts de carácter visivelmente diferente, o que se lê como o estilo a perder-se ao acaso.

A precedência é agora explícita. Os formatos livres entregam todo o resultado ao modelo-alvo e aplicam a sua sintaxe e parâmetros na totalidade. Os formatos estruturados têm a sua própria forma, pelo que o modelo-alvo contribui apenas com vocabulário e não emite parâmetros.

Ler uma imagem é transcrição, não composição

Uma pequena mudança com um efeito desproporcionado: baixámos a temperatura de amostragem das ferramentas que leem uma imagem. Escrever um prompt a partir de uma ideia em bruto é um ato criativo e beneficia de alguma liberdade. Ler uma referência está mais próximo da transcrição, e cada grau de liberdade aí é um grau de desvio em relação ao que está realmente no enquadramento.

O Text to Prompt manteve a sua margem de liberdade. O Image to Prompt e o descritor tornaram-se visivelmente mais literais.

O que retirar disto

A maioria destas mudanças são coisas que pode aplicar manualmente, seja qual for a ferramenta que estiver a usar.

  • Nomeie o suporte primeiro, antes do sujeito, em cada prompt.
  • Descreva as imperfeições deliberadamente, porque os modelos as removem a menos que seja dito o contrário.
  • Elimine o enchimento de qualidade; consome atenção e puxa em direção à média.
  • No Midjourney, recorra ao --style raw e a um --stylize baixo antes de reescrever o prompt mais uma vez.
  • No Stable Diffusion, trate o prompt negativo como metade do trabalho.
  • Faça primeiro a pergunta identificadora: o que faz esta imagem parecer-se consigo mesma?