„Underdrawing“ für exakten Text und genaue Zahlen verwenden
(samcollins.blog)- Underdrawing ist ein deterministischer Ansatz, bei dem zunächst ein Grundrissbild mit den Positionen von Zahlen und Text erstellt wird; anschließend legt ein Bildgenerierungsmodell den visuellen Stil darüber, um die Genauigkeit zu erhöhen
- Bei der Aufgabe, 50 Trittsteine spiralförmig anzuordnen und mit den Zahlen 1 bis 50 zu versehen, konnten Gemini 3 Pro und ChatGPT Images 2 ohne Underdrawing Zahlen und Reihenfolge nicht stabil korrekt einhalten
- Gemini 3.0 Pro mit zusätzlichem Underdrawing erzeugte bei derselben Aufgabe ein Ergebnis, bei dem Nummerierung, Anzahl und Reihenfolge der Steine sowie die Spiralform stimmten
- Die Umsetzung ist möglich, indem mit Werkzeugen wie SVG/HTML Zahlen und Text an den gewünschten Positionen und in der gewünschten Ausrichtung platziert, dann als Bild exportiert und dieses zusammen mit einem Text-Prompt in ein multimodales Bildmodell gegeben wird
- Der Ansatz ist nicht jedes Mal perfekt, erlaubt aber bei der Bildgenerierung mit wichtiger Text- und Zahlenplatzierung eine Aufteilung zwischen deterministischem Layout und der visuellen Ausdrucksstärke generativer Modelle
Kernaussage und Umsetzungsweise
- Das Muster entstand beim Versuch, ein Bild eines 100-stufigen Abenteuer-Spielbretts zu erzeugen, und lässt sich als „eine Kontur vorgeben und darüber ausmalen lassen“ zusammenfassen
-
Deterministische Ebene
- SVG/HTML wirkt visuell eher trocken, ist aber stark bei mathematischer Anordnung und Präzision
- Zahlen und Text werden an den gewünschten Positionen und in der gewünschten Ausrichtung platziert und dann als Bild exportiert, das die entsprechenden Pixel enthält
- Als Format oder Werkzeug können unter anderem SVG, Python oder Mermaid verwendet werden
-
Generative Ebene
- Bildgenerierungsmodelle liefern visuell starke Ergebnisse, sind bei Mathematik und Text aber weniger zuverlässig
- In ein multimodales Bildmodell wie Gemini 3.0 Pro, das Bild und Text als Eingabe annehmen und ein Bild ausgeben kann, werden das Underdrawing-Bild und der Text-Prompt gemeinsam eingespeist
- Der Beispiel-Prompt für Schritt 1 lässt ein SVG erzeugen, das 50 Trittsteine in einer gegen den Uhrzeigersinn verlaufenden inneren Spirale anordnet und jeden Stein fortlaufend von 1 bis 50 nummeriert
- Der Beispiel-Prompt für Schritt 2 lässt dieses Bild in ein fotorealistisches Claymation-Diorama aus einer niedrig angesetzten, leicht gekippten Perspektive umwandeln, in dem handwerklich gefertigte Schokolade und Bonbons entlang eines spiralförmigen Pfads angeordnet sind
-
Automatisierung und Grenzen
- Claude Code oder Codex können die einzelnen Schritte übernehmen
- Die Ergebnisse sind gut, aber nicht immer perfekt; selbst im Endergebnis ist „71“ nicht sichtbar
1 Kommentare
Hacker-News-Kommentare
Es ist erfreulich, dass wir immer besser verstehen, was LLMs grundsätzlich gut können und was nicht – nicht dass es unmöglich wäre, sondern dass die Erfolgsaussichten wegen grundlegender Beschränkungen gering sind
Das ähnelt dem Ansatz, bei dem Menschen die Softwarearchitektur festlegen und die Implementierung von Funktionen dem LLM überlassen, oder bei dem man statt der eigentlichen Datenanalyse SQL-Abfragen schreiben lässt
Es wäre gut, wenn es eine klarere Taxonomie von Aufgaben und mehr Forschung dazu gäbe, welche Arbeitseinheiten gut zu LLMs passen und welche nicht; intuitiv entwickelt sich da zwar langsam etwas, aber ich sehe noch immer viele Leute, die genau daran oft scheitern
Man ließ zuerst eine Gliederung erstellen und dann jede Funktion einzeln implementieren; Blogposts, die diesen Ansatz mit einem aus der Animationsarbeit übernommenen Begriff beschrieben, tauchten auf HN mehrfach auf
Noch vor zwei Jahren galten Aufgaben wie Zeichen zählen oder phonemische Verarbeitung wegen solcher „grundlegenden Beschränkungen“ als unmöglich, heute funktionieren sie oft auch ohne Werkzeuge problemlos
Jedes Mal, wenn ich Prompts für Bildgenerierung lese, fallen mir sehr konkrete Details auf, die das Modell offensichtlich ignoriert hat
Auch hier wirken die Schokoladen/Bonbons in den letzten beiden Bildern weit entfernt von handwerklicher Manufaktur und vielmehr wie zu sterile Massenprodukte, außerdem stimmt die Perspektive nicht genau
Wenn das Modell den Großteil ignoriert, frage ich mich, warum man dann so ausufernde Prompts schreibt
Ausdrücke wie rustic, homemade oder amateur könnten besser zu den Tags passen
Anfangs hielt ich das für meine mangelnden Prompting-Fähigkeiten, aber sobald man auf solche Diskrepanzen achtet, springen sie ziemlich häufig ins Auge
Wenn man wie im letzten Beispiel ein Bild wollte, in dem kleine „Knöpfe“ spiralig angeordnet sind, hätte man das wohl an einem Nachmittag in Blender bauen können, selbst wenn man mit Blender nicht besonders gut ist, auch wenn es dann nicht wie Bonbons aussehen würde
Ich habe eine einfache Technik gefunden, um in KI-generierten Bildern zuverlässig Text und Zahlen zu bekommen
Es hat mich überrascht, dass Bildmodelle das nicht ohnehin schon so machen, und ich fand es so nützlich, dass ich es teilen wollte
Ich verwende seit einiger Zeit dieselbe Technik, nur mit SVG als Ausgangsbild, und das funktioniert gut
Ich kann mir gut vorstellen, dass Bildgenerierungs-Labs das bald übernehmen
Statt das Modell ein Problem im 0-shot-Modus lösen zu lassen, hilft der Nutzer ihm mit 1-shot oder k-shot beim Lösungsweg
Ich habe ähnliche Techniken sehr wirkungsvoll eingesetzt, und weil das Feld noch so neu ist und sich so schnell bewegt, fehlt es offenbar noch an gemeinsamer Terminologie; deshalb sind der Blogpost und die Beispiele sehr nützlich
Es wirkt allerdings auch plausibel, dass dieses Phänomen in kleineren Communities oder unter anderen Namen bereits beobachtet und verstanden wurde
Das ist einfach img2img, bei dem das erste Bild mit der richtigen Struktur per Code erzeugt wurde
Wer schon seit den frühen Tagen von Stable Diffusion mit generativen Modellen arbeitet, kennt das als ziemlich verbreitete und nützliche Technik: Man verwendet eine Skizze (SVG, Handzeichnung usw.) als provisorisches ControlNet, um die Ausgabe des generativen Modells zu steuern
Früher nutzte ich einen ähnlichen Ansatz beim Platzieren architektonischer Visualisierungen
Wenn man Sofas, Stühle oder andere Möbel an bestimmte Positionen setzen wollte, konnte man mit einem Tool wie Poser eine einfache Szene bauen, in der die wichtigsten „Set Pieces“ grob platziert waren, daraus eine Tiefenkarte erzeugen und diese dann in ein generatives Modell wie das damalige SDXL einspeisen, um die Objektplatzierung zu lenken
Dieser Hack ist eindeutig von der Sorte „Ach so, warum bin ich nicht selbst darauf gekommen?“
Schön, beim nächsten Mal, wenn die Bildgenerierung hinter den Erwartungen zurückbleibt, so etwas in der Hinterhand zu haben
Die Qualität war damals nur noch nicht so gut wie heute, deshalb verstehe ich nicht ganz, warum das als neu gilt
Der Standard-Einwand lautet: Wenn ein LLM wirklich intelligent wäre, warum findet es dann nicht selbst heraus, dass dieser zweistufige Prozess bessere Ergebnisse liefert?
Um Strategien zu entwickeln, Ergebnisse zu überprüfen und neue Versuche zu starten, braucht es darüber einen agentischen Prozess
Bei Nano Banana und gpt-image-2 scheint etwas davon bereits eingebaut zu sein, aber das ist ähnlich wie der Unterschied zwischen einem Modell, das Code in einem Durchgang schreiben soll, und einem Agent-Harness mit Werkzeugen, das den Prozess übernimmt
Selbst ein sehr einfacher Agent kann besseren Code erzeugen als ChatGPT allein
So etwas macht man schon lange; es ähnelt der Steuerung von Silhouetten über Tiefenkarten oder Line-Art
Mir gefiel der Ton im Fazit: dieses „Es funktioniert, aber eigentlich auch wieder nicht“
Ganz im Stil des LLM-/GenAI-Hypes zeigt der ganze Text, wie viel komplexe Mühe investiert wird, um ein einziges sehr enges Beispiel zu treffen, das fast klappt, aber am Ende eben doch nicht richtig
Für Menschen ist es leicht zu prüfen, ob die Zahlen stimmen, und wenn nicht, generiert man das Bild einfach neu
Es ist um einige Größenordnungen einfacher, als das Bild ohne Modell von Grund auf selbst zu erstellen
Bei der häufigen Aufgabe „ein SVG eines Pelikans auf einem Fahrrad“ könnte man vielleicht den umgekehrten Ansatz probieren
Wenn man das SVG direkt ausgeben lässt, ist die Qualität erwartbar schlecht
Bildgenerierung kann aber leicht ein überzeugendes fotorealistisches Bild erzeugen, daher könnte man zuerst ein Bild generieren und das Modell dieses dann nachzeichnen lassen, um ein brauchbares Fahrrad-Pelikan-SVG zu erhalten
Letztlich erstellt auch ein Mensch selten SVG-Kunstwerke, indem er einfach nur Zahlen in einen Texteditor eingibt; der Kern bleibt, das Ganze als Bild zu sehen und darüber nachzudenken
Das scheint auch dem zu ähneln, wie Menschen etwas präzise machen würden
Wenn man einen Künstler ohne Korrekturen oder Skizzen bittet, in einem Zug einen großen kreisförmigen Steinsatz samt fortlaufender Nummerierung zu zeichnen, wären Platzierungsfehler kaum überraschend