1 pontos por GN⁺ 2 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • underdrawing é uma abordagem em que primeiro se cria, com uma ferramenta determinística, uma imagem-base contendo os números e as posições do texto, e depois um modelo de geração de imagens aplica o estilo visual por cima para aumentar a precisão
  • Na tarefa de posicionar 50 pedras de apoio em espiral e numerá-las de 1 a 50, Gemini 3 Pro e ChatGPT Images 2 não conseguiram manter números e ordem de forma consistente sem underdrawing
  • Na mesma tarefa, Gemini 3.0 Pro com underdrawing produziu um resultado correto em numeração, quantidade e ordem dos botões e forma espiral
  • A implementação pode ser feita com ferramentas como SVG/HTML, posicionando números e texto no local e na orientação desejados, exportando isso como imagem e depois fornecendo essa imagem junto com um prompt de texto a um modelo multimodal de imagem
  • Esse método não é perfeito em todas as tentativas, mas permite separar o posicionamento determinístico da capacidade de expressão visual do modelo generativo em criações de imagem nas quais a disposição de texto e números é importante

Contexto principal e forma de implementação

  • É um padrão que surgiu no processo de criação de uma imagem de tabuleiro de aventura com 100 etapas, resumido como “dar um contorno e deixar que ele pinte por cima”
  • Camada determinística

    • SVG/HTML é visualmente mais seco, mas muito forte em posicionamento matemático e precisão
    • Basta posicionar números e texto na localização e orientação desejadas e exportar isso como uma imagem contendo esses pixels
    • O formato pode usar a ferramenta que você quiser, como SVG, Python, Mermaid etc.
  • Camada generativa

    • Modelos de geração de imagem produzem resultados visualmente excelentes, mas são pouco confiáveis em matemática e texto
    • Em um modelo multimodal de imagem capaz de receber imagem e texto como entrada e gerar imagem como saída, como o Gemini 3.0 Pro, a imagem de underdrawing e o prompt de texto são fornecidos juntos
    • No exemplo, o prompt da etapa 1 faz o modelo criar um SVG com 50 pedras de apoio organizadas em uma espiral interna no sentido anti-horário, com numeração sequencial de 1 a 50 em cada pedra
    • No exemplo, o prompt da etapa 2 pede a conversão dessa imagem em um diorama em claymation com aparência fotográfica, em ângulo baixo e levemente inclinado, com chocolates artesanais e balas dispostos em um caminho em espiral
  • Automação e limitações

    • Claude Code ou Codex podem executar cada etapa no lugar do usuário
    • O resultado é bom, mas não é perfeito em todas as tentativas, e mesmo no resultado final o “71” não aparece

1 comentários

 
GN⁺ 2 시간 전
Comentários do Hacker News
  • Fico feliz em ver esse movimento de compreender mais profundamente o que os LLMs fazem bem por natureza e o que fazem mal — não que seja impossível, mas são tarefas com baixa chance de sucesso por causa de limitações fundamentais
    É parecido com definir a arquitetura de software por humanos e deixar a implementação das funções para o LLM, ou fazer com que ele escreva consultas SQL em vez de tentar realizar a análise de dados em si
    Seria bom ter uma taxonomia de tarefas e pesquisas mais clara sobre que tipos de unidade de trabalho se encaixam bem em LLMs e quais não se encaixam; aos poucos surge uma intuição, mas ainda vejo muita gente tropeçando nisso com frequência

    • A abordagem de “o humano define a arquitetura e o LLM escreve as funções” era, até pouco tempo atrás, o uso recomendado por usuários iniciais de ferramentas de assistência de programação com LLM
      Fazia-se o modelo criar primeiro um esboço e depois implementar cada função separadamente; também já apareceram algumas vezes no HN posts de blog mostrando essa abordagem com um termo emprestado do trabalho de animação
    • A expressão limitações fundamentais aparece muito em discussões sobre LLMs, mas ainda não existe uma prova rigorosa de que essas limitações de fato existam
      Até 2 anos atrás, tarefas como contar caracteres ou lidar com fonemas eram tratadas como impossíveis por causa de “limitações fundamentais”, e hoje muitas vezes já não são problema nem sem ferramentas
  • Sempre que leio prompts de geração de imagem, noto detalhes muito específicos que o modelo obviamente ignorou
    Aqui também, os chocolates/doces das duas últimas imagens passam longe de ter aparência artesanal; parecem produtos esterilizados de produção em massa, e o ponto de vista também não está correto
    Se o modelo ignora a maior parte, por que escrever prompts tão longos?

    • Gostei do exemplo em que pediram “iluminação de estúdio” e o modelo encheu a foto de equipamentos de iluminação de estúdio
    • Os doces não estão realmente tentando parecer artesanais; o modelo está tentando bater com imagens dos dados de treino que empresas promoveram e rotularam como artisanal
      Termos como rustic, homemade, amateur talvez combinem melhor com a forma como esse material foi etiquetado
    • Quando usei geração de imagem algumas vezes, ela falhava repetidamente exatamente nesse tipo de detalhe
      No começo achei que era falta de habilidade minha para escrever prompts, mas quando você passa a observar esse tipo de discrepância, percebe que ela aparece com bastante frequência
    • Acho que a maior parte desses prompts detalhados é gerada por IA
    • Fiquei curioso para saber quanto tempo levou para pensar em tudo isso
      Se a meta era uma imagem como a última, com pequenos “botões” dispostos em espiral, talvez nem parecesse doce, mas mesmo alguém não muito bom em Blender provavelmente conseguiria fazer isso em uma tarde
  • Encontrei uma técnica simples para obter texto e números com mais consistência em imagens geradas por IA
    Fiquei surpreso que os modelos de imagem ainda não façam isso sozinhos, e achei tão útil que quis compartilhar

    • Em certo sentido, isso é parecido com usar ControlNet
      Já venho usando há algum tempo a mesma técnica, só que com SVG como imagem-base, e funciona bem
    • Muito impressionante, simples e estável
      Parece algo que os laboratórios de pesquisa em geração de imagem vão adotar em breve
    • Isso não seria uma espécie de chain of thought, algo parecido com https://arxiv.org/abs/2201.11903?
      Em vez de deixar o usuário fazer o modelo resolver em 0-shot, a estrutura ajuda a solução em 1-shot ou k-shot
      Já usei técnicas parecidas com grande eficácia, e o campo é tão novo e se move tão rápido que ainda parece faltar terminologia comum, então o post e os exemplos são muito úteis
      Dito isso, também parece possível que esse fenômeno já tenha sido observado e entendido em comunidades menores ou sob outros nomes
    • Em resumo, a ideia é primeiro criar o contorno correto em SVG e depois enviar essa imagem junto com o prompt de texto para o Gemini 3.0 Pro renderizar a imagem com os números e o texto corretos
  • Isso é só img2img usando como ponto de partida uma primeira imagem com a estrutura correta feita em código

    • Sim, é exatamente isso
      Para quem usa modelos generativos desde o começo do Stable Diffusion, essa é uma técnica bastante comum e útil: usar um esboço (SVG, desenho à mão etc.) como um ControlNet improvisado para guiar a saída do modelo generativo
      Antigamente eu usava uma abordagem parecida para compor visualizações arquitetônicas
      Se você queria colocar sofás, cadeiras ou outros móveis em posições específicas, podia criar uma cena simples com ferramentas como Poser para definir aproximadamente a posição das principais “peças de cenário”, gerar um mapa de profundidade a partir disso e alimentá-lo em um modelo generativo da época, como o SDXL, para orientar o posicionamento dos objetos
    • No geral é exatamente o que o autor disse, só com um pouco mais de contexto para iniciantes
    • Sim, mas para criar esse código você pode usar outro modelo gerador de código
  • Esse hack é definitivamente do tipo “como eu não pensei nisso antes”
    Fico feliz de ter mais uma carta na manga para a próxima vez que a geração de imagem ficar abaixo do esperado

    • Os apps originais de Stable Diffusion já tinham image-to-image
      Só que o desempenho não era tão bom quanto hoje; por isso, não entendo muito bem por que isso está sendo visto como novidade
  • A objeção padrão é a seguinte: se um LLM fosse realmente inteligente, por que ele mesmo não descobriria que esse processo em 2 etapas produz resultados melhores?

    • Em um nível básico, modelos de imagem são apenas sistemas que recebem tokens de texto na entrada e produzem tokens de imagem na saída
      Para planejar estratégia, revisar o resultado e tentar de novo, é preciso um processo em estilo agente por cima disso
      Parece haver um pouco disso no Nano Banana e no gpt-image-2, mas é parecido com a diferença entre pedir para o modelo escrever código de uma vez só e deixar um agente com ferramentas cuidar disso
      Até um agente bem básico pode produzir código melhor do que o ChatGPT sozinho
    • Porque, em geral, os LLMs são hardcoded para apenas refinar um pouco os prompts do tipo “faça uma imagem” e passá-los para um modelo separado
    • O que não sabe, não sabe
    • Porque na verdade não é inteligente
    • Ninguém pediu para ele fazer isso
  • Faço esse tipo de coisa há muito tempo; é parecido com usar mapas de profundidade ou line art para controlar a silhueta

  • Gostei da sensação da conclusão: “funciona, mas na verdade nem tanto”
    Bem no espírito da onda de LLM/IA generativa: o texto inteiro mostra um esforço complicado para acertar um único exemplo extremamente estreito, algo que quase funciona, mas no fim não funciona direito

    • Se funcionar nem que seja em parte, já é útil
      Para uma pessoa, é fácil verificar se os números estão corretos e, se estiverem errados, basta gerar a imagem de novo
      Ainda é várias ordens de grandeza mais fácil do que criar a imagem do zero sem o modelo
  • Achei que, para a tarefa clássica de “um SVG de um pelicano andando de bicicleta”, talvez desse para tentar a abordagem inversa
    Se você fizer o modelo cuspir SVG diretamente, a qualidade provavelmente vai ser ruim
    Mas geração de imagem consegue criar facilmente uma imagem realista incrível; então talvez uma boa forma de obter um SVG decente de pelicano-de-bicicleta seja gerar primeiro a imagem e depois fazer o modelo traçá-la e transformá-la em SVG
    No fim, pessoas também raramente criam obras de arte em SVG digitando apenas números em um bloco de notas; o essencial continua sendo vê-las e pensá-las como imagem

  • Isso também parece parecido com a forma como uma pessoa tentaria fazer algo com precisão
    Se você pedir a um artista para desenhar de uma vez, sem revisão nem esboço, um grande arranjo circular de pedras e ainda numerá-las em ordem, não seria surpreendente surgirem erros de posicionamento