· 6 min de leitura · Vibeboa
Como o Retrato parou de trocar a cara das pessoas
O app devolvia alguém parecido com você, nunca você. A culpa não era do prompt — eram três decisões de engenharia, e a pior delas era mandar o modelo mais fraco na frente.
O Retrato faz uma coisa só: você manda uma foto, escolhe uma década ou um estilo, e ele devolve a foto refeita naquela linguagem visual. Funcionava — e devolvia sempre alguém parecido com você. Nunca você.
A suspeita óbvia era o prompt. Passei um bom tempo escrevendo travas de identidade cada vez mais longas, enumerando traço por traço: formato do maxilar, distância entre os olhos, cor da íris. Melhorou pouco. A causa estava em outro lugar.
Três erros, nenhum deles no texto
O primeiro: a fila de modelos começava pelo mais fraco. O flux-2-klein-4b é destilado com quatro passos fixos de inferência — rápido e ruim em preservar rosto. O flux-2-dev aceita passos e é o mais forte do catálogo. Eu estava pedindo fidelidade ao modelo que menos podia entregá-la.
O segundo: a saída era 1024×1024 fixo. Uma foto em retrato, 900×1200, era obrigada a caber num quadrado. O modelo redesenha o rosto para encaixar no formato antes de qualquer estilo entrar. A semelhança morria ali, na primeira linha do pedido.
O terceiro é o mais interessante. O modelo aceita imagem de referência de no máximo 512 px. Esse teto é duro e não se negocia. Mas ele aceita QUATRO referências — e eu mandava uma. Uma foto de corpo inteiro reduzida a 496 px entrega um rosto de talvez noventa pixels de lado. A informação do rosto era jogada fora antes de sair do navegador.
O que mudou
Agora vai a cena inteira numa referência e um recorte fechado de cada rosto nas outras, cada um ocupando os 496 px sozinho, recortado da foto em tamanho de trabalho e não da versão encolhida. Quando o navegador tem detector de rosto, são os rostos de verdade — e foto com duas pessoas volta com as duas.
Também tirei "two people" da lista de negativos. Estava apagando gente do quadro.
O modelo mais forte não venceu
Com a fila invertida, o flux-2-dev foi para a frente. E aí veio a medição que mudou a decisão de novo: ele é cobrado POR PASSO. A vinte passos e um megapixel, sai por volta de quatro centavos de dólar por imagem — cerca de trinta vezes o klein-4b. E em teste, duas vezes, passou de quatro minutos sem responder.
| modelo | tempo médio | custo por imagem |
|---|---|---|
| flux-2-klein-9b | 3,6 s | US$ 0,0166 |
| flux-2-dev (20 passos) | > 4 min sem resposta | ~US$ 0,041 |
O padrão virou o klein-9b, que é destilado em quatro passos, responde rápido e tem qualidade bem acima do 4b. O dev ficou atrás de um botão que diz "caprichar", com o custo escrito na tela. E cada modelo ganhou prazo: modelo em nuvem não falha só devolvendo erro — às vezes ele simplesmente não volta, e sem prazo a pessoa fica olhando para a tela por minutos para receber nada.
A instrução curta ganhou da longa
A última mudança foi desfazer o meu próprio trabalho. A receita detalhada descrevia o meio com precisão de fotógrafo: filme, lente, temperatura de cor, defeito de emulsão. Quanto mais eu descrevia a imagem desejada, mais o modelo entendia que tinha licença para construir uma imagem que coubesse na descrição — e a pessoa é a primeira coisa que ele reescreve para fazer caber.
A instrução curta faz o contrário: nomeia o tema numa frase e gasta o resto do texto dizendo o que não pode mudar. É a forma que funciona nas ferramentas de edição por conversa, e virou o padrão. A detalhada continua num botão, porque em cordel, azulejo e serigrafia a descrição do meio é justamente o que salva.
A parte que o modelo não faz
Um modelo de difusão sabe imaginar uma cena de 1987. Não sabe reproduzir o que a química de um filme, o tubo de uma TV ou a retícula de uma impressão faziam com o sinal da imagem. Isso não é imaginação, é processamento de sinal — e processamento de sinal se faz com aritmética.
Então o trabalho ficou dividido. O modelo constrói a cena; o navegador aplica o meio: curva, grão, halação, retícula de meio-tom de verdade, linha de varredura, aberração cromática, erro de registro entre chapas. É o que tira o resultado do território de "foto com filtro". Dá para desligar e comparar segurando um botão.
Medido em produção: 896×1184 de saída a partir de uma foto 900×1200, três referências, 2,9 segundos. Antes era 1024×1024 forçado, uma referência, 35 segundos.