Explorando a Compreensão Composicional do ChatGPT com SVG

Dec 29 2022
Peço ao ChatGPT para desenhar e explicar as imagens SVG programáticas
Os modelos fundamentais podem gerar imagens realistas a partir de prompts, mas esses modelos entendem seus próprios desenhos? A geração de SVG (Scalable Vector Graphics) nos dá uma oportunidade única de fazer essa pergunta. O SVG é programático, consistindo em círculos, retângulos e linhas.

Os modelos fundamentais podem gerar imagens realistas a partir de prompts, mas esses modelos entendem seus próprios desenhos? A geração de SVG (Scalable Vector Graphics) nos dá uma oportunidade única de fazer essa pergunta. O SVG é programático, consistindo em círculos, retângulos e linhas. Portanto, o modelo deve decompor esquematicamente o objeto de destino em partes significativas, aproximando cada parte usando formas simples e, em seguida, organizando as partes juntas de maneira significativa.

Em comparação com a geração do desenho de uma bicicleta usando uma representação baseada em pixels (por exemplo, um modelo de difusão), a geração de SVG força o modelo a explicar o que está desenhando usando o código (ou seja, simbolicamente ) primeiro.

tl;dr : Pedi ao ChatGPT para desenhar mais de 100 objetos em SVG com explicações. Navegue por todos eles neste URL . Dados brutos .tsv aqui . Basta olhar para eles! Além de divertidos, eles nos informam bastante sobre os LLMs.

Procedimento

Para uma distribuição prévia dos objetos, utilizei objetos comuns em ícones e emojis. Usei variantes do prompt a seguir para solicitar SVGs ao ChatGPT.

“Usando o formato SVG, crie um desenho de _______. Coloque a saída no bloco de código. Coloque-o em uma tela de 200x200. Não se esqueça de xmlns=”http://www.w3.org/2000/svg" após a tag svg. Use cores diferentes se as partes estiverem sobrepostas para que tudo apareça. Comente e explique por que isso é um _______”

Inspecionei manualmente os SVGs renderizados para garantir que sejam válidos e interessantes.

Análise

Para a maioria dos desenhos, você não pode dizer o que eles deveriam ser. No entanto, depois de ler a explicação, você pode realmente apreciar os esforços. Por exemplo, vamos dar uma olhada no desenho e explicação de uma bicicleta.

GPT é um vendedor convincente!

Podemos conceituar a geração SVG nestas etapas:

  1. Decomponha simbolicamente o objeto em partes usando a linguagem
  2. Aproximando cada parte usando forma e cor apropriadas
  3. Juntar essas partes de maneira coesa

Para desenhar um objeto como SVG, o GPT primeiro usa a linguagem para decompô-lo em partes. Isso fica evidente nos comentários do código:

<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">
    <!-- Bicycle frame -->
...
    <!-- Wheels -->
...
    <!-- Pedals -->
...
</svg>

Tentei a tarefa de recuperação em alguns outros objetos: relógio (ponteiros, rosto, corpo, pêndulo), satélite (antena, prato, corpo), helicóptero (corpo, cauda, ​​rotor principal, rotor de cauda e um cockpit). Tentativamente, eu diria que a decomposição é robusta na recuperação do conceito original.

2. Aproximando cada parte

Podemos usar comentários (ou seja, renderizar o bloco de código imediatamente abaixo <!--wheels-->) para ver se o GPT está desenhando bem cada parte.

Estes são objetos cujas partes são bem aproximadas

A GPT entende que um pedal de bicicleta pode ser um círculo e uma linha, e as nervuras do guarda-chuva formam um cone e os braços do pretzel se espalham em arcos.

Algumas partes são mal aproximadas

O GPT falha ao desenhar hexágonos na bola de futebol, pensa que um lápis no2 é uma caixa cinza e falha ao gerar curvas mais complexas para a trombeta e os tentáculos do polvo (GPT abertamente confiante em desenhar splines haha).

3. Juntando as peças

Como a maioria das redes neurais, o ChatGPT luta para reunir os detalhes de maneira hierarquicamente coesa.

Conclusão

O GPT, nascido de um grande corpus textual, pode gerar SVG:

  1. sabe na linguagem como objetos comuns podem ser simbolicamente decompostos em sub-partes.
  2. é razoável em desenhar peças menores, presumivelmente aprendendo com fragmentos de programas SVG (ou similares) existentes online.
  3. como a maioria das redes neurais, o GPT ainda luta para compor essas partes de maneira coesa.
estamos muito perto de ter rodas no chão!

Observação divertida: O GPT é do antigo EGITO?

[Os egípcios] não se propuseram a esboçar a natureza como lhes parecia de qualquer ângulo fortuito. Eles desenharam de memória, de acordo com regras estritas que garantiram que tudo o que deveria entrar na imagem se destacasse com perfeita clareza. Tudo tinha que ser representado do seu ângulo mais característico.
— A História da Arte de Gombrich EH

Decompor simbolicamente um objeto em partes e, em seguida, recombiná-las tem uma consequência interessante — as interpretações mais representativas das partes podem ser inconsistentes. Vamos dar uma olhada no svg do dumbell gerado pelo GPT.

Observe como os dois pesos são representados como círculos, de acordo com a afirmação “Um haltere tem dois pesos circulares”. No entanto, uma vista superior de um haltere não mostraria os pesos como circulares. Aqui estão mais alguns desses desenhos egípcios.

Esses tipos de bugs (ou recursos?) serão extremamente difíceis de reproduzir usando um modelo de difusão treinado em imagens naturalísticas. Isso é legal!

A Lagoa Egípcia

Um dos nossos desenhos favoritos do antigo Egito é o de um lago real, aqui está o original e a reprodução do GPT lado a lado

Se tivéssemos que desenhar tal motivo, poderíamos nos perguntar de qual ângulo abordá-lo. A forma e o caráter das árvores só podiam ser vistos claramente dos lados, a forma do lago só seria visível se vista de cima. Os egípcios não tinham escrúpulos sobre este problema. Eles simplesmente desenhariam o lago como se fosse visto de cima e as árvores de lado. Os peixes e pássaros no lago, por outro lado, dificilmente seriam reconhecíveis quando vistos de cima, por isso foram desenhados de perfil — The Story of Art

Ufa é isso! Obrigado por ler até aqui e espero que tenham gostado. Confira esta postagem de blog relacionada sobre a linguagem das modificações .

siga meu twitter para mais coisas como esta

- evan 2022–12–27

auto-nota: logística. 6 horas para jogar com o ChatGPT e selecionar o conjunto de dados na planilha do Google. 2 horas para criar um site interativo simples com a ajuda do copiloto. 8 horas para escrever este blog (incluindo figuras).