Blog des Gens Compliqués

Comment dessiner une main en SVG [Feat. ChatGPT]

30/04/2023 11:43:57+02:00|Par DkVZ
8 minutes de lecture (facile)

Vous pensiez tous que ma plus célèbre série à succès était à l'abandon?

QUE Nennnni, le dessin SVG c'est l'expression la plus pure du dessin assisté par ordinateur, l'héritier du langage Logo, le véritable art numérique infiniment... Mettable... à l'échelle. Oui.

  1. Le pantalon;
  2. La culotte échancrée;
  3. Le t-shirt;
  4. La TÊTE.

Aujourd'hui, j'attaque la main. C'est pas le plus facile à cause des doigts.

Les doigts c'est tellement fâcheux à dessiner que les vrais artistes ils achètent des mains articulées bizarres pour s'entrainer.

Faut le bon nombre de doigts, déjà. Puis le pouce il est différent, les onglets, les articulation, c'est une vraie merveille de la nature contrairement à la tête puisque, à en croire tous les films de science fiction, tous les aliens de l'univers ont le même concept de tête sur un cou avec une bouche et deux yeux (et souvent un genre de nez).

La tête c'est courant, quoi. Les mains ça varie chez les extra-terrestres et même les déités terrestes qui peuvent avoir plusieurs bras, des tentacules, un crochet (cf. le capitaine éponyme), ...

Okay c'est parti les amis, je demande à ChatGPT de me dessiner une main.

Mais alors là, pourquoi ChatGPT? C'est une IA de génération de contenu, certes, mais pas de génération d'images. Il y a des IA de génération d'images, qui génèrent des images, et sont capables de dessiner des mains qui ont, en général, le bon nombre de doigts.

Image générée par IA avec deux filles qui ont beaucoup trop de dents mais ont l'air heureuses quand même - Celle de droite a genre 15 doigts sur une main
Ben ouais quoi c'est le futur, ça fait même pas peur (source)

Néanmoins! ChatGPT est réputé pour sa génération de code puisqu'il est entraîné sur du texte, après tout. Un SVG, c'est du texte et du code. Il devrait arriver à aligner quelques formes simples, non?

Première tentative, il me sort ça (je donne la conversation complète à la fin de l'article):

Un signe + avec une forme rose bizarre

La couleur est pas mal dans le style couleur de main, légèrement raciste, mais pas mal. On va dire, bon point?

Je comprends vraiment pas pourquoi il a dessiné un croix. Il a commencé avec un élément <path> qui est censé représenter toute la main, puis il a posé trois vieilles lignes.

Je lui dis que c'est pas une main parce que c'est pas mon genre de mentir à un robot.

Il s'excuse et me sors ça:

On dirait vaguement un sac à main en rose très clair

La couleur est toujours légèrement raciste mais se tient.

Il m'explique que les deux cercles sont la base du pouce et le bout de l'index. Je lui dis que c'est un sac à main qu'il a dessiné et que je voudrais un truc avec 5 doigts.

C'est comme ça avec les IA génératrices, on fonctionne de manière incrémentale en donnant de plus en plus de directives jusqu'à ce qu'on abandonne parce que ça prend trop de temps et qu'un moment il boucle sur lui même en s'excusant à chaque réponse.

Peut-être qu'il a vraiment essayé de dessiner 5 doigts ce coup-ci:

C'est juste un amas de formes superposées en rose clair

On comptera un total impressionnant de 13 chemins dans le code. Le minimum pour faire 5 doigts (??).

Je m'abstiens de lui dire que c'est moche et demande si on peut voir cette magnifique main du dessus. J'ai déjà suffisamment rabaissé mon homologue non-humain et j'ai trop d'empathie.

Il me ressort un truc à base de trois chemins et deux cercles (il commence à boucler / DEVENIR FOU — Pourtant j'étais sympa et tout):

On dirait un genre de visage avec juste deux yeux

Il me ressort la même histoire que plus haut: le plan base du pouce et bout de l'index représentés par deux cercles. Je vois vraiment pas d'où il aurait appris une telle obesession.

C'est une autre grande beauté des réseaux neuronaux, ils arrivent à classifier des trucs ou générer du contenu, mais comment ils en sont arrivés là est un total mystère et ils ne prennent pas nécessairement le chemin plus simple, et je ne parle pas de la consommation d'énergie requise à leur entrainement.

Après ça j'ai demandé ce que c'était l'object qu'il dessinait le mieux en SVG. Il m'a répondu qu'il n'a pas de préférences parce que c'est un robot mais que les SVG c'est cool pour dessiner des logos. OK. Merci.

Il me faut un truc facile à dessiner. Une maison? On pense tous à la même chose normalement, un vieux rectangle avec un triangle au dessus. Une maison quoi.

GPT me sors ça:

Une maison bleu clair avec toit jaune et une fenêtre un peu sur la gauche

He ben voilà! Il sait dessiner une maison! En plus il utilise deux éléments <rect> comme j'aurais fait, en ajoutant un <polygon>, que je ne connaissais même pas. J'aurai appris un truc dans cette conversation, cool.

Je lui dis que c'est trop chouette, tout guilleret d'avoir enfin un résultat digne d'un enfant de 2 ans (ou de moi qui dessine une maison, j'avoue).

C'est d'ailleurs avec une audacité renouvelée que je lui demande s'il peut m'ajouter une PORTE:

La même maison qu'au dessus mais avec une porte brune superposée à la fenêtre

Pas mal! Le positionnement est pas top mais bon, plutôt bien parti. J'aime bien la couleur aussi. Il m'indique tout content "Regarde j'ai même dessiné la poignée de porte lol!!!".

Je lui dis que la porte est devant la fenêtre, peut-il la déplacer vers la droite pour que la fenêtre ne soit plus derrière la porte?

La même maison qu'au dessus mais avec une porte brune superposée à la fenêtre

Il me dit qu'il a bougé la fenètre à la droite de la porte en changeant son attribut "x" (il parle de l'élément <rect> correspondant).

C'est cool sauf que... La porte s'est transformée en fenêtre dans l'opération?

Oublions la maison, je vais lui demander de dessiner un coeur. C'est une forme simple qui n'a normalement pas de doigts (je m'attend à moitié à ce qu'il me dessine un truc avec des doigts).

Un losange avec un cercle accolé à sa gauche, légèrement vers le haut

Ben en fait... Y a de l'idée. Je peux imaginer un genre de coeur avec ces formes, surtout s'il y avait un second cercle.

Je lui signale tout de même que ce qu'il m'a sorti c'est juste un cercle et une amende.

Il me dit qu'il est désolé et me sort ça:

Une goutte d'eau inversée colorée en rose

De nouveau, j'ai l'impression qu'il y est presque, le bas du coeur est assez réussi, il doit juste dessiner des fesses sur le dessus et c'est un coeur.

Vous aurez d'ailleurs appris aujourd'hui qu'une forme de coeur peut-être décomposée en une paire de fesses et une goutte d'eau à l'envers. Fantastique.

Je sais que GPT n'aime pas qu'on lui parle de fesses donc je lui dit qu'il manque juste deux demi-cercles pour former la partie du dessus qui est incorrecte. Résultat:

La goutte d'eau a été inversée et il a creusé deux cercles sur le bas, presque comme un coeur quoi

Okay... Je crois que je vois les deux cercles à parti qu'ils sont retirés du coeur et pas ajoutés et qu'il a retourné l'affaire pour une raison que j'ignore.

C'est un travail à temps plein d'essayer de diriger l'IA dans la bonne direction en évitant d'être décourager qu'il il boucle sur lui même et reviens 15 étapes en arrière.

On laisse tomber le coeur. Essayons un truc plus mathématique puisque, après tout, un réseau neuronal c'est juste un produit matriciel de la MUERTE.

Dessine moi une parabole:

Une parabole inversée au milieu de l'image

J'avais en tête la parabole de y=x² mais de toute évidence, il a bien dessiné une parabole. Cool.

Peut-il ajouter les axes X et Y?

Une parabole inversée au milieu de l'image

Il a juste ajouté deux lignes pour les axes, mais ça marche! Plutôt cool.

Pour le fun, je lui demande de me dessiner un Pikachu en SVG (comment on est passé d'une main à ça?), et voilà:

Rectangle avec plusieurs nuances de jaune à l'horitontale et une noire en bas, avec une bouche, un nez et des yeux

Il m'explique qu'il a dessiné des pieds, des oreilles et la queue de Pikachu. Je commence à me demander s'il est au courant qu'on est en 2D.

Je lui avoue que c'est Spongebob qu'il a dessiné, là. Je lui demande s'il peut le faire sourire pour que ça colle plus au personnage mais c'est le même résultat alors qu'il ajoute effectivement quelques courbes.

Je me dis qu'il est peut-être pas au courant de l'ordre et la superposition des éléments, j'ai essayé de tripoter un peu l'ordre pour voir ce qu'il essaye de dessiner mais ça ne change rien, c'est toujours un Spongebob dépité.

Vous pouvez voir toute la conversation ici — en anglais mais GPT fonctionne très bien en Français aussi.

On dirait que je me moque des IA génératrices et euh... Oui. Un peu. Il n'empêche que ces technologies restent terriblement impressionnantes et je n'ai même pas parlé des génératrices d'images qui sont, selon moi, les plus impressionnantes.

Donc je fais pas caca dessus, je pense juste qu'il faut pas trop s'emballer non plus parce qu'un monde où tous les textes, même les plus usuels, seraient générés par ordinateur, je sais pas si ce serait le KIF comme disaient les jeunes quand j'étais jeune.

Pourtant je suis le premier à éviter les caisses à l'ancienne dans les magasins histoire d'éviter à tout prix de parler à un humain mais faut bien avouer que s'adresser à un vrai cerveau, même un qui écrit "sait" à la place de "c'est", c'est quand même bien pratique des fois.

Je pars un peu du principe que si une IA génératrice remplace totalement un job, c'est que c'était un job destiné à périr un jour ou l'autre. Pour tout le reste, il me semble que ce sera un outil comme un autre qui demandera un niveau minimum de maîtrise pour le diriger et en tirer de la qualité.

Je pense qu'on peut tranquillement dédramatiser cette "étude" de Goldman Sachs qui est citée partout comme annonçant qu'on va perdre je sais pas combien millions de jobs, alors qu'en fait ils disent bien au début de l'article que c'est pas nécessairement une mauvaise chose et va créer d'autres jobs et qu'ils ont depuis publié un autre article qui prévoit une augmentation de l'économie globale grâce à l'IA.

Ne vous laissez pas dramatisationniser par les réseaux sociaux et les sites de "presse" bizarre. On est vachement loin de la "singularité" et des terminators. Un réseau neuronal c'est un gros produit de matrices dont le re-calcul (apprentissage continu) est très couteux.

Certes, ces IA génératrices pourraient en théorie générer d'autres IA mais là elles ont du mal à dessiner une maison.

Commentaires

Il faut JavaScript activé pour écrire des commentaires ici

Ajouter un commentaire

Votre commentaire a été ajouté
(enfin, je pense)