1 points par GN⁺ 1 시간 전 | 1 commentaires | Partager sur WhatsApp
  • L’underdrawing consiste à créer d’abord, avec un outil déterministe, une image de base où figurent l’emplacement des chiffres et du texte, puis à laisser un modèle de génération d’images appliquer le style visuel par-dessus afin d’améliorer la précision
  • Dans une tâche consistant à disposer 50 pas japonais en spirale et à les numéroter de 1 à 50, Gemini 3 Pro et ChatGPT Images 2 n’ont pas réussi à respecter de manière fiable les chiffres ni leur ordre sans underdrawing
  • Sur la même tâche, Gemini 3.0 Pro avec un underdrawing a produit un résultat correct pour la numérotation, le nombre et l’ordre des éléments, ainsi que la forme en spirale
  • La mise en œuvre est possible avec des outils comme SVG/HTML en plaçant les chiffres et le texte à l’emplacement et dans l’orientation souhaités, puis en exportant le tout en image avant de fournir cette image avec un prompt texte à un modèle d’image multimodal
  • Cette méthode n’est pas parfaite à tous les coups, mais elle permet de répartir le travail entre un placement déterministe et les capacités de rendu visuel du modèle génératif lorsque la disposition du texte et des chiffres est importante

Contexte clé et méthode de mise en œuvre

  • Il s’agit d’un schéma apparu lors de la création d’une image de plateau d’aventure en 100 étapes, résumé par l’idée de « donner les contours puis faire peindre par-dessus »
  • Couche déterministe

    • SVG/HTML est visuellement austère, mais très efficace pour le placement mathématique et la précision
    • Il suffit de placer les chiffres et le texte selon la position et l’orientation voulues, puis d’exporter une image contenant ces pixels
    • On peut utiliser le format ou l’outil de son choix, comme SVG, Python ou Mermaid
  • Couche générative

    • Les modèles de génération d’images produisent d’excellents résultats visuels, mais restent peu fiables pour les mathématiques et le texte
    • Avec un modèle d’image multimodal capable de recevoir une image et du texte en entrée pour produire une image, comme Gemini 3.0 Pro, on fournit ensemble l’image d’underdrawing et le prompt texte
    • L’exemple de prompt de l’étape 1 demande de créer un SVG où 50 pas japonais sont disposés en spirale intérieure dans le sens inverse des aiguilles d’une montre, avec une numérotation continue de 1 à 50 sur chaque pierre
    • L’exemple de prompt de l’étape 2 demande de transformer cette image en un diorama en claymation photoréaliste à angle bas et légèrement incliné, où des chocolats artisanaux et des bonbons sont disposés en chemin spiralé
  • Automatisation et limites

    • Claude Code ou Codex peuvent exécuter chacune des étapes à votre place
    • Les résultats sont bons, mais pas parfaits à chaque fois, et dans le rendu final, le « 71 » reste invisible

1 commentaires

 
GN⁺ 1 시간 전
Commentaires Hacker News
  • Je trouve encourageant qu’on comprenne de plus en plus en profondeur ce que les LLM font intrinsèquement bien et mal, c’est-à-dire les tâches qui ne sont pas impossibles en soi, mais dont les chances de réussite restent faibles à cause de limitations fondamentales
    Cela ressemble à l’approche où l’architecture logicielle est définie par un humain et l’implémentation des fonctions confiée au LLM, ou encore au fait de lui faire écrire des requêtes SQL plutôt que de lui demander d’effectuer lui-même l’analyse des données
    J’aimerais voir émerger une taxonomie des tâches et davantage de recherches sur ce qui convient ou non aux LLM ; on commence à développer une certaine intuition, mais je vois encore beaucoup de gens trébucher régulièrement là-dessus

    • L’approche « l’architecture est définie par un humain et les fonctions sont écrites par le LLM » était d’ailleurs, il n’y a pas si longtemps, la méthode recommandée par les premiers utilisateurs des outils d’assistance au code par LLM
      On leur faisait d’abord produire un plan, puis implémenter chaque fonction séparément, et des billets de blog illustrant cette approche avec un terme emprunté au travail d’animation ont été plusieurs fois postés sur HN
    • On parle souvent de limitations fondamentales à propos des LLM, mais il n’existe encore aucune démonstration rigoureuse établissant l’existence de telles limites
      Il y a à peine deux ans, on disait encore que certaines tâches comme le comptage de caractères ou le traitement phonémique étaient impossibles à cause de « limitations fondamentales », alors qu’aujourd’hui elles se passent souvent très bien même sans outils
  • Chaque fois que je lis un prompt de génération d’image, je remarque des détails très précis que le modèle a manifestement ignorés
    Ici aussi, dans les deux dernières images, les chocolats/bonbons sont loin d’avoir un aspect artisanal fait main ; ils ressemblent trop à des produits de masse stériles, et le point de vue n’est pas exact non plus
    Si le modèle ignore l’essentiel, je me demande pourquoi on écrit des prompts aussi verbeux

    • J’ai bien aimé l’exemple où, à la demande d’un « éclairage de studio », il a rempli la photo d’équipements d’éclairage de studio
    • En réalité, les bonbons n’essaient pas d’avoir l’air artisanaux ; ils essaient de correspondre à des images étiquetées et promues comme artisanal par des entreprises dans les données d’entraînement
      Des termes comme rustic, homemade ou amateur peuvent peut-être mieux correspondre aux tags
    • Les quelques fois où j’ai utilisé la génération d’images, c’est précisément sur ce genre de point que ça échouait sans cesse
      Au début, je pensais que cela venait de ma mauvaise rédaction des prompts, mais dès qu’on commence à repérer ces écarts, on les voit assez souvent
    • Je pense que la plupart des prompts détaillés sont générés par IA
    • Je me demande combien de temps il leur aurait fallu pour imaginer tout ça
      S’ils voulaient une image comme la dernière, avec de petits « boutons » disposés en spirale, ça ne ressemble même pas à des bonbons, et même quelqu’un de peu à l’aise avec Blender aurait probablement pu le faire en un après-midi
  • J’ai trouvé une technique simple pour obtenir de manière fiable du texte et des nombres dans des images générées par IA
    Je suis surpris que les modèles d’image ne le fassent pas déjà eux-mêmes, et comme je la trouve assez utile, je voulais la partager

    • D’une certaine manière, cela ressemble à l’usage de ControlNet
      J’utilise depuis un moment cette même technique en me servant uniquement de SVG comme image de base, et ça marche bien
    • C’est très impressionnant, simple et fiable
      Je pense que les laboratoires de recherche en génération d’images vont bientôt l’adopter
    • J’ai l’impression que c’est une sorte de chain of thought, un peu comme https://arxiv.org/abs/2201.11903
      Au lieu de laisser l’utilisateur demander au modèle de résoudre le problème en 0-shot, on l’aide à trouver une solution en 1-shot ou k-shot
      J’ai utilisé des techniques similaires avec beaucoup d’efficacité, et comme le domaine est encore très récent et évolue extrêmement vite, on a l’impression qu’il manque encore un vocabulaire commun ; le billet de blog et les exemples sont donc très utiles
      Cela dit, il est aussi possible que ce phénomène ait déjà été observé et compris dans des communautés plus restreintes ou sous d’autres noms
    • En résumé, il s’agit d’abord de créer le bon contour en SVG, puis d’envoyer cette image avec un prompt textuel à Gemini 3.0 Pro pour lui faire rendre l’image avec les bons chiffres et le bon texte
  • Ce n’est au fond qu’un img2img où la première image, avec la bonne structure, a été créée en code

    • Oui, c’est exactement ça
      Si on utilise des modèles génératifs depuis les débuts de Stable Diffusion, c’est une technique assez courante et utile : on se sert d’un croquis (SVG, dessin à la main, etc.) comme d’un ControlNet provisoire pour guider la sortie du modèle génératif
      J’utilisais une approche similaire autrefois pour mettre en place des visualisations architecturales
      Si l’on voulait placer un canapé, des chaises ou d’autres meubles à des endroits précis, on pouvait créer une scène simple avec un outil comme Poser pour positionner grossièrement les principaux « éléments de décor », puis générer une depth map et la fournir à un modèle génératif de l’époque, comme SDXL, afin de guider la disposition des objets
    • C’est globalement exactement ce que dit l’auteur, avec juste un peu de contexte ajouté pour les débutants
    • Oui, mais on peut utiliser un autre modèle de génération de code pour produire ce code
  • Cette astuce fait clairement partie des idées qui donnent envie de se dire : « ah, pourquoi je n’y ai pas pensé ? »
    Je suis content d’avoir ça sous la main pour la prochaine fois où la génération d’image ne sera pas à la hauteur de mes attentes

    • À l’origine, les applications Stable Diffusion avaient déjà de l’image-to-image
      C’est juste que les performances n’étaient pas aussi bonnes qu’aujourd’hui, donc je ne vois pas bien pourquoi cela est perçu comme nouveau
  • L’objection standard, c’est la suivante : si le LLM était vraiment intelligent, pourquoi ne parvient-il pas de lui-même à comprendre que ce processus en deux étapes donne de meilleurs résultats ?

    • À un niveau de base, un modèle d’image n’est qu’un système qui prend des tokens de texte en entrée et produit des tokens d’image en sortie
      Pour élaborer une stratégie, examiner le résultat puis réessayer, il faut un processus de type agent par-dessus
      Nano Banana et gpt-image-2 semblent en intégrer un peu, mais c’est comparable à la différence entre demander au modèle d’écrire le code d’un seul coup et laisser un agent équipé d’outils le prendre en charge
      Même un agent très basique peut produire un meilleur code que ChatGPT seul
    • C’est parce que les LLM sont en général hardcodés pour légèrement retravailler les prompts du type « créer une image », puis les transmettre à un modèle séparé
    • On ne sait pas ce qu’on ne sait pas
    • Parce qu’en réalité, ce n’est pas intelligent
    • Personne ne lui a demandé de faire cela
  • Ce genre de méthode existe depuis longtemps et ressemble à l’utilisation de depth maps ou de line art pour contrôler la silhouette

  • J’ai bien aimé l’impression du passage de conclusion : « ça marche, mais pas vraiment non plus »
    Fidèle à l’engouement LLM/IA générative, tout l’article montre qu’on déploie beaucoup d’efforts complexes pour faire fonctionner un exemple extrêmement étroit, que cela semble presque marcher, mais qu’au final cela ne fonctionne pas vraiment correctement

    • Même si ça ne marche que partiellement, c’est utile
      Il est facile pour un humain de vérifier si les chiffres sont corrects, et s’ils sont faux, on peut simplement régénérer l’image
      C’est de plusieurs ordres de grandeur plus facile que de créer l’image soi-même sans modèle
  • Pour le défi classique du « SVG d’un pélican à vélo », je me suis dit qu’on pourrait essayer l’approche inverse
    Si on lui fait générer directement le SVG, la qualité a évidemment de fortes chances d’être mauvaise
    Mais comme la génération d’images permet facilement de produire une image réaliste impressionnante, on pourrait d’abord générer l’image, puis demander au modèle de la retracer pour en faire un SVG, ce qui pourrait être une bonne manière d’obtenir un SVG correct de pélican à vélo
    Après tout, même les humains fabriquent rarement une œuvre en SVG en tapant simplement des nombres dans un bloc-notes ; l’essentiel reste de la voir et de la penser comme une image

  • Cela ressemble aussi à la façon dont un humain s’y prendrait pour être précis
    Si on demande à un artiste de dessiner d’un seul coup, sans corrections ni esquisse, un grand arrangement circulaire de pierres en les numérotant dans l’ordre, il ne serait pas surprenant qu’il fasse des erreurs de placement