Ich testete 13 KI-Bildmodelle auf Charakterkonsistenz. Die meisten versagten auf dieselbe Weise.

7 min read

Du generierst ein Bild für deinen Artikel-Header. Sieht großartig aus. Nächster Artikel, gleicher Charakter, gleicher Stil, praktisch derselbe Prompt. Völlig anderes Gesicht. Keine Variation. Eine andere Person. Das Modell hat einfach entschieden, dass dein Charakter eine neue Identität braucht – wie ein Zeugenschutzprogramm, nur für Pixel.

Bei einem einzelnen Artikel? Egal. Bei einer Publikation, wo dieselben Charaktere in dutzenden Posts auftauchen, ist es ein Branding-Problem, das dir erst auffällt, wenn ein Leser fragt: „Moment, soll das derselbe Typ sein?" Pixar kann Woody nicht mit einem anderen Gesicht in jeder Szene ausliefern. Ein Comic auch nicht. Dein Blog auch nicht, wenn du willst, dass Leute deine Cover beim Scrollen wiedererkennen.

TLDR: Ich habe 13 KI-Bildmodelle auf Charakter-Konsistenz getestet. Zwei haben überlebt. Das günstigste hat gewonnen. Und der Grund hat nichts mit Prompting zu tun.

Zwei Büroangestellte vergleichen KI-Charaktergenerierungsergebnisse mit unterschiedlichen Gesichtsausgaben
KI-Bildmodelle: Wo Konsistenz stirbt, ein Render nach dem anderen.

Das Problem, das niemand erwähnt, wenn KI-generierte Visuals ausgeliefert werden

Jede Modell-Demo zeigt dir ein atemberaubendes Bild. Niemand zeigt dir denselben Charakter zehnmal hintereinander generiert. Denn da bricht es zusammen.

Mein Setup: zwei wiederkehrende Charaktere auf jedem Artikel-Cover, generiert durch eine automatisierte Pipeline via fal.ai. Ein Büroangestellter mit Krawatte und permanent ausdruckslosem Gesicht, und ein Held mit Umhang. Gleiche Charaktere, gleiches Universum, gleiche visuelle Identität über jeden Content hinweg. Erste paar Artikel, alles gut. Dann begannen die Gesichter zu driften. Erst subtil (Kieferlinie leicht daneben, Scheitel auf der falschen Seite), dann überhaupt nicht mehr subtil (völlig anderer Mensch starrt mich an).

Ich könnte jedes Mal die Prompts manuell anpassen, wie so ein Prompt-Flüsterer, der hofft, dass die nächste Generation passt. Oder ich teste einfach jedes verfügbare Modell auf der Plattform und finde heraus, welche tatsächlich halten.

Also testete ich alle dreizehn. Ein gemeinsames Prompt-Template. Dieselben zwei Charakter-Referenzen jedes Mal eingefügt. Systematisch, nicht nach Bauchgefühl.

Ohne Konsistenz ist jedes Bild ein Einzelschuss. Mit einer Pipeline ist das ein Leck, das du erst siehst, wenn deine Leser es sehen.

Charakter-Konsistenz ist kein Prompt-Problem. Es ist ein Endpoint-Problem.

Die meisten Leute beheben Charakter-Konsistenz durch Prompt-Umschreibung. Mehr Details hinzufügen, Style-Beschreibung anpassen, mit Seeds spielen. Hab ich drei Wochen lang gemacht. War wie eine Gitarre stimmen, die keine Saiten hat.

Der tatsächliche Mechanismus ist simpler und brutaler: Positions-Referenz-Injection via /edit-Endpoints mit mehreren image_urls. Kein Prompt-Trick. Kein Parameter. Ein Endpoint.

Deine Charakter-Referenzbilder werden als Data URIs im image_urls-Feld gesendet. Das Modell mappt Platzhalter wie @image1 und @image2 auf diese Referenzen. Der Prompt sagt „setze @image1 links", das Modell weiß genau welches Gesicht zu verwenden ist. Zwei Referenzen rein, zwei konsistente Charaktere raus.

Die Modelle, die versagen? Alle derselbe architektonische Grund: sie unterstützen keine zwei simultanen Bild-Referenzen. Kontext Pro nimmt maximal eine Referenz. Ideogram Character, gleiche Geschichte. Ideogram V3 nimmt null Referenzen (nur Text-Beschreibung). Wenn die Pipeline auf ein Modell trifft, das keine zwei Refs nehmen kann, fällt es auf adaptPromptForModel() zurück, was @image2 durch etwas wie „ein Büroangestellter-Charakter mit Krawatte und ausdruckslosem Gesicht" ersetzt.

Du kannst ein Gesicht in vierzig Wörtern beschreiben. Das Modell wird trotzdem jedes Mal ein anderes Gesicht generieren. Das ist geklärt.

Das Modell versagt nicht bei der Qualität. Es versagt, bevor es überhaupt deinen Prompt liest.

Der Benchmark: 13 Modelle, 3 Stufen, ein Gewinner für $0.012

Zwei Modelle bekamen fünf Sterne. Sieben bekamen null.

Tier S (5 Sterne, in Produktion): Flux 2 Dev für $0.012/MP und Nano Banana 2 für etwa $0.01/MP. Beide unterstützen mehrere image_urls im /edit-Modus, beide halten Charaktere über aufeinanderfolgende Generierungen.

Tier A (4 Sterne, nutzbar): Flux 2 Pro, GPT Image 1.5, Flux 2 Turbo, Flux 2 Flash. Sie handhaben den Dual-Referenz-Mechanismus, aber mit geringfügigem Drift zwischen Durchläufen.

Tier F (0-1 Stern, abgelehnt): Flux 2 Max, Flux 2 Flex, Kontext Pro/Multi/Max, Ideogram V3/Character. Alle versagen aus dem oben genannten architektonischen Grund.

Zwei Ergebnisse verdienen einen genaueren Blick.

Flux 2 Max: 1 Stern für $0.07/MP. Fast 6x der Preis von Dev. Und es war schlechter. Es fügte Handschuhe zu einem Charakter hinzu, der nie welche hatte. Blitzeffekte hinter einem Helden, der eigentlich stillstehen sollte. Das Premium-Modell halluziniert Kostüm-Elemente, während das Budget-Modell einfach macht, was du verlangt hast. (Karen aus der Buchhaltung hätte was zu diesem ROI zu sagen.)

Kontext und Ideogram: beide bekamen null Punkte, obwohl sie speziell für Charakter-Referenzen vermarktet werden. Ihr Endpoint akzeptiert einfach keine zwei simultanen image_urls. Eine Ref, klar. Zwei Refs für zwei Charaktere in derselben Szene? Architektur sagt nein. Die Marketing-Seite widerspricht der API-Dokumentation, und ich weiß, welcher ich mehr vertraue.

AI-Bildmodell-Vergleichsraster zeigt Charakter-Konsistenz über Flux 2 Dev, GPT Image 1.5 und Kontext Pro
Leistungsvergleich von KI-Bildmodellen bei der Generierung konsistenter Charakter-Referenzen.

Dieser Benchmark deckt einen spezifischen Fall ab: zwei wiederkehrende Charaktere, 90er-Comic-Stil, automatisierte Pipeline. Midjourney wurde nicht getestet (keine fal.ai API). Ergebnisse können bei anderen Stilen abweichen. Aber das /edit mit mehreren image_urls ist die notwendige Bedingung unabhängig davon.

6x mehr zu zahlen gab mir Superhelden-Handschuhe, die ich nie verlangt hatte.

Vier Fallen, die Charakter-Konsistenz selbst mit dem richtigen Modell brechen

Richtiges Modell, falsches Setup. Ich bin in jede einzelne getappt, und jede kostete mich mehr Zeit als das richtige Modell zu finden.

Der @image1/@image2-Tausch. An einem Montag bemerkte ich, dass alle generierten Cover die Charaktere auf der falschen Seite hatten. Der Büroangestellte hatte den Umhang. Der Held trug eine Krawatte. Wie ein Buddy-Cop-Film, wo die Kostümabteilung die Schauspieler verwechselt hat. Gleicher Prompt, gleiche Refs, aber @image1 und @image2 waren im Template vertauscht. Fand den Commit (6c70e20), realisierte, dass das Mapping während eines Refactors stillschweigend getauscht wurde. Kein Test fing es ab, weil niemand testet „trägt der richtige Charakter das richtige Outfit." Jetzt tue ich es.

Dimensionen im Prompt. Wenn das LLM den Bild-Prompt generiert, schreibt es manchmal „1536x1024px cinematic scene." Das Bildmodell versucht dann „1536x1024px" als literalen Text im Bild zu rendern. Wunderschön. Fix: sanitizePrompt() entfernt Dimensions-Muster via Regex. Echte Dimensionen gehen nur über den image_size-API-Parameter.

Data URI vs HTTP URL. Manche Modelle (Kontext, Ideogram) crashen stillschweigend mit base64 Data URIs. Sie brauchen HTTP URLs, die auf öffentlich zugängliche Dateien zeigen. Fix: ensureHttpUrl() lädt die Referenz in Cloud Storage hoch vor dem API-Call. Zwei Zeilen Code, die drei Tage Debugging kosteten, um herauszufinden, dass sie nötig waren.

Teuer bedeutet Über-Interpretation. Flux 2 Max generiert nicht nur was du verlangst. Es verbessert deine Anfrage durch Hinzufügen von Elementen, die es denkt, in eine Comic-Szene gehören. Das ist kein Bug, das ist eine Design-Philosophie. Und diese Design-Philosophie ist inkompatibel mit Pipeline-Nutzung, wo du jedes Mal exakt denselben Output-Stil brauchst. Dieselbe Spec-first-Denkweise, die ich durch Prompt Contracts verwende gilt: teste Annahmen bevor du um ein Modell baust, nicht danach.

Vier Zeilen Code kosten weniger als drei Wochen Anpassung nach Gefühl.

Sechs Prompting-Regeln, die tatsächlich was bewegen

Sobald Modell und Pipeline stimmen, machten diese sechs Regeln einen sichtbaren Unterschied. Alle durch Testen entdeckt.

1. Subjekt zuerst.

"90s comic book style illustration of two characters 
standing in a server room"

"Two characters standing in a server room, @image1 on 
the left pointing at a screen, comic book style"

Flux-Modelle gewichten den Anfang des Prompts stärker. Was zuerst kommt, bekommt die meiste Aufmerksamkeit. Setze Szene und Aktion vor den Stil.

2. Benenne die Charaktere zusätzlich zu den Refs. @image1 injiziert das Gesicht, aber einen Namen hinzufügen („Phil der Entwickler", „Captain Compliance") verankert Pose und Ausdruck. Das Modell behandelt benannte Entitäten anders als anonyme Referenzen. Ich erwartete nicht, dass das wichtig ist, aber es ist es.

3. Begrenze Komplexität. Max drei Panels, zwei Sprechblasen, acht Wörter pro Blase. Darüber hinaus opfert das Modell Charakter-Konsistenz, um die Komposition zu respektieren. Es kann nicht alles, also lässt es zuerst den schwierigsten Teil fallen. Der schwierigste Teil sind immer die Gesichter.

4. Null Dimensionen im Prompt-Text. Schon bei den Fallen erwähnt. Wert zu wiederholen: schreibe nie Pixel-Dimensionen in den Prompt. Verwende image_size-API-Parameter. Immer.

5. Branding in-world, nicht Overlay.

"watermark @rentierdigital bottom right"

"@rentierdigital engraved on the bezel of a monitor 
in the background"

Mache die Marke zum Teil der Szene, nicht zu einer Post-Processing-Anweisung. Das Modell versteht kein „Overlay." Es versteht Objekte in einer Szene.

6. guidance_scale bei 3.5 für Flux 2 Dev. Unter 2 ignoriert das Modell die Hälfte deines Prompts. Über 5, Artefakte und Über-Sättigung. Für Speed-Varianten (Turbo, Flash) reichen 2.5 mit 8 Steps. Fand ich durch Generierung desselben Prompts bei jedem Wert von 1 bis 7. Nicht glamourös, aber es funktioniert.

Ein Prompt, der alles spezifizieren will, gibt dem Modell die Erlaubnis zu wählen, welche Teile es ignoriert. Wähle deine Kämpfe.

Das Fazit

Zwei Modelle von dreizehn. Das ist das Verhältnis. Nicht weil sie in irgendeinem allgemeinen Sinn „besser" sind, sondern weil sie nativ /edit mit mehreren image_urls unterstützen. Das gesamte Ranking folgt aus diesem einen API-Detail. Nicht aus Bildqualität, nicht Preis, nicht dem Ruf des Modells.

Bevor du ein Bildmodell für irgendeine Content-Pipeline wählst, eine Frage: akzeptiert der Endpoint mehrere image_urls im /edit-Modus? Wenn nicht, ist alles andere verbrannte Zeit. Teste mit demselben Prompt, denselben Referenzen, drei aufeinanderfolgende Generierungen. Nicht eine.

Der einzige Weg, konsistente Charaktere zu bekommen, ist dem Modell ein Referenzbild zu füttern. Sonst kannst du zwei Tage damit verbringen, den perfekten Prompt zu schreiben. Ändert nichts. Die Antwort stand in den API-Docs, Seite 2, Parameter image_urls. Charakter-Konsistenz ist kein Prompting-Problem. Es ist ein Dokumentation-lesen-Problem.


Quellen: fal.ai Modell-Dokumentation für Endpoint-Specs und Preise.

(*) Das Cover ist KI-generiert. Was du, angesichts des Artikels, wahrscheinlich schon erraten hast. Die Ironie ist, dass es drei Versuche brauchte, um die Charaktere auch bei diesem richtig hinzubekommen.