Explorando a Compreensão Composicional do ChatGPT com SVG
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.
Podemos conceituar a geração SVG nestas etapas:
- Decomponha simbolicamente o objeto em partes usando a linguagem
- Aproximando cada parte usando forma e cor apropriadas
- 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:
- sabe na linguagem como objetos comuns podem ser simbolicamente decompostos em sub-partes.
- é razoável em desenhar peças menores, presumivelmente aprendendo com fragmentos de programas SVG (ou similares) existentes online.
- como a maioria das redes neurais, o GPT ainda luta para compor essas partes de maneira coesa.
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
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).





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)