KI · 2.5.2 Referenzbilder

Referenzbilder mit Flux.2 Klein und Flux.3 Klein

Ein Prinzip, zwei Verdrahtungen, derselbe Prompt.

Ein Prinzip, zwei Modelle

Beide Modelle lesen Referenzbilder auf dem vierten Weg aus 2.5.1. Die Referenz läuft durch den VAE, also durch dieselbe Kodierung wie das neue Bild, und liegt im Conditioning neben dem Prompt. Der Sampler beginnt auf einer leeren Leinwand. Das Bild entsteht frisch, die Referenz wird gelesen, nicht übermalt.

Daraus folgen drei Regeln, die für beide Modelle gelten. Die Referenz gehört ins Conditioning, nie in den Latent des Samplers. Dort wäre es img2img, und das Bild würde übermalt. Sie hängt am positiven und am negativen Conditioning. Und welche Rolle sie spielt, entscheidet der Prompt.

Auch der Prompt ist derselbe. Er läuft unverändert auf beiden Modellen. Gegenüber 2.5.1 ist nur das Outfit ein anderes: Statt der Lederjacke trägt sie einen grauen One-Shoulder-Pullover, wieder allein aus dem Prompt. Flux.2 Klein spricht Referenzen als Figure 1 und Figure 2 an, das offizielle Template von Flux.3 Klein als <ref_image_0> und <ref_image_1>. Flux.3 Klein war es im Test gleich, welche Schreibweise im Prompt stand. Das Differenzbild zeigte nur Abweichungen im Detail, vor allem im Muster der Hose. Getestet habe ich das mit zwei klar verschiedenen Referenzen, einer Person und einer Hose. Ob die Benennung bei zwei Referenzen derselben Art wichtig wird, bei zwei Personen etwa, ist noch offen.

Prompt anzeigen · JSON +
{
  "image_type": "full-length commercial studio fashion photograph",
  "references": {
    "Figure 1": "identity of the woman: face, hair, skin, freckles",
    "Figure 2": "the cargo pants: fabric"
  },
  "subject": {
    "who": "the woman from Figure 1",
    "body": "slim and trained",
    "expression": "neutral and editorial",
    "head": "lifted chin",
    "pose": "relaxed contrapposto: weight on one leg, the other knee slightly bent, shoulders turned a little away from the camera, one hand loosely in a pant pocket, the other arm hanging naturally",
    "feet": "bare feet, no shoes",
    "priority": 1
  },
  "wardrobe": {
    "sweater": {
      "description": "oversized wide grey one-shoulder knit sweater with a loose, chunky rib texture",
      "fit": "loosely slung, as if it has slipped: the frame-left shoulder and collarbone are bare, the knit rests softly on the frame-right shoulder",
      "length": "ends at the hips, the hem falling loosely over the waistband",
      "priority": 1
    },
    "pants": {
      "reference": "Figure 2",
      "cut": "barrel-cut camouflage cargo pants: legs curve outward from the hips, widest at the knee, and taper slightly toward the hem",
      "fit": "baggy, very loose",
      "rise": "worn low on the hips",
      "priority": 1
    }
  },
  "interactions": [
    "the soft key light brings out the rib texture of the knit and falls evenly on the bare shoulder",
    "the wide pant legs fall to the floor and rest on the bare feet"
  ],
  "setting": {
    "backdrop": "seamless pale grey studio backdrop",
    "priority": 3
  },
  "lighting": {
    "key": "large soft diffused key light",
    "priority": 2
  },
  "style": {
    "palette": "neutral",
    "quality": "clean high-end fashion catalogue",
    "priority": 2
  }
}
Modefoto: die Frau aus Figure 1 in grauem One-Shoulder-Strickpullover und der Cargohose aus Figure 2

Flux.2 Klein 9B · 1024 × 1024 · 4 Steps

Wo der Prompt an seine Grenze kommt

Der Pullover stammt allein aus dem Prompt, und genau da zeigt sich die Grenze. Er sitzt auf einer Schulter, wie beschrieben. Aber die Rippen laufen schräg und gleichmäßig, der Saum bleibt gerade. Ein Pullover, der wirklich verrutscht ist, würde ziehen. Das Modell hat die Form übernommen, nicht die Bewegung. Mit einem Referenzbild für den Pullover sähe das vermutlich anders aus. Auch die Seite stimmt nicht zuverlässig. Links und rechts im Prompt haben beide Modelle oft vertauscht.

Bis dahin hat es viele Versuche gebraucht. Jede Änderung am Prompt hat nicht nur den Pullover verschoben, sondern auch etwas, das schon gepasst hatte. Wer einen Prompt nachbessert, ändert immer das ganze Bild.

Dabei ging auch etwas verloren, das auf 2.5.1 noch allein aus der Referenz kam: das Tarnmuster. Mit dem Pullover im Prompt kam die Hose ohne Muster heraus, erst das Wort „camouflage“ hat es zurückgebracht. Die Referenz liefert, was auf ihr zu sehen ist. Wie stark sie sich durchsetzt, hängt aber vom übrigen Prompt ab. Was am Produkt wichtig ist, gehört deshalb zusätzlich in den Prompt, auch wenn es auf der Referenz deutlich zu sehen ist.

Flux.2 Klein

Flux.2 Klein gibt es in zwei Größen, 4B und 9B, und in zwei Formen, destilliert und Base. Für Referenzen kommt nur die destillierte Form infrage. Beide Größen lesen damit Referenzbilder ohne Zusatzmodell.

Achtung · Base

Die undestillierte Base-Variante ignoriert Referenzen vollständig. Es gibt keine Fehlermeldung, und das Bild sieht korrekt aus. Bei gleichem Seed kam mit und ohne Referenz ein pixelidentisches Bild heraus.

Verdrahtung

Jede Referenz durchläuft drei Nodes: Load Image, Image Scale To Total Pixels auf 1 Megapixel und VAE Encode. Das Latent geht in einen ReferenceLatent-Node, der es an das Conditioning hängt. Pro Referenz braucht es zwei davon, einen in der positiven Kette und einen in der negativen, die aus Conditioning Zero Out kommt. Weitere Referenzen werden in beiden Ketten einfach angehängt.

Die Reihenfolge bestimmt den Namen. Die erste Referenz ist Figure 1, die zweite Figure 2. Andere Formulierungen wie „reference image one“ hat das Modell bei mir nicht zuverlässig zugeordnet.

Gesampelt wird mit euler, cfg 1 und dem Flux2Scheduler. Die leere Leinwand ist ein Empty Flux 2 Latent.

ComfyUI-Workflow Flux.2 Klein: zwei Referenzen über ReferenceLatent in der positiven und negativen Kette, leeres Latent am Sampler
Flux.2 Klein mit zwei Referenzen — Klick öffnet die Vollansicht

Template-Falle · Bildformat

Im offiziellen ComfyUI-Template hängt die Größe der Leinwand über Get Image Size an Figure 1. Das Bild bekommt dann das Format des Porträts. Für ein festes Format diese Verbindung lösen und Breite und Höhe selbst setzen. Im Workflow zum Download ist das schon gemacht.

Steps

Vier Steps reichen. Im Differenzbild zu acht Steps zeigen sich die Unterschiede vor allem im Muster aus Figure 2. Mit acht Steps kommen minimal mehr Sommersprossen und etwas mehr Brillanz dazu, bei doppelter Rechenzeit. Mein Eindruck ist, dass eine größere Leinwand mehr bringt als mehr Steps. Dazu mehr im Abschnitt zu Flux.3 Klein.

Flux.2 Klein 9B, 4 Steps

4 Steps

Flux.2 Klein 9B, 8 Steps, gleicher Seed

8 Steps

Die Seed-Regel

Der Seed hält die Komposition nur, solange Modell, Auflösung und Steps gleich bleiben. Bei 1024 × 1024 haben vier und acht Steps die Pose nicht verändert, bei 1408 × 1408 schon. Wer eine Pose gefunden hat und danach Auflösung oder Steps ändert, sucht neu.

Ein Referenzwechsel dagegen lässt die Komposition stehen, wie die Matrix in 2.5.1 zeigt, mit der dort beschriebenen Ausnahme. Daraus ergibt sich die Arbeitsweise: die Pose einmal finden und dann Personen und Produkte darin tauschen.

9B auf dem Pro, 4B auf dem Air

Flux.2 Klein 9B lief auf einem MacBook Pro mit 64 GB, mit dem Qwen3-Encoder in 8B. Flux.2 Klein 4B lief auf einem MacBook Air mit 16 GB, mit dem Qwen3-Encoder in 4B als Q6-GGUF. Das kleinere Modell liest die Referenzen genauso. Aber die Farben sind deutlich blasser, und man merkt, dass Modell und Encoder wesentlich kleiner sind. Feine Details und die Umsetzung des Prompts bleiben sichtbar hinter 9B zurück. Das liegt an der Modellgröße, nicht am Rechner. 9B bringt eine Menge mehr, 4B läuft dafür auf 16 GB.

Auf dem Air ist das quantisierte Modell schneller als das volle. In voller Größe stand die Speicheranzeige dauerhaft auf Rot, kurz vor dem Abbruch. Als Q8 steht sie auf Gelb bis Orange, also auch am Limit, aber stabil. Auf 16 GB entscheidet der Speicher über die Zeit, nicht die Rechenleistung. Für das Air ist Q8 deshalb die richtige Wahl.

ModellRechnerAuflösungStepsZeit
Flux.2 Klein 9B · Q8MacBook Pro 64 GB1024 × 10244290 s
Flux.2 Klein 9B · Q8MacBook Pro 64 GB1024 × 10248590 s
Flux.2 Klein 9B · Q8MacBook Pro 64 GB1408 × 14084867 s
Flux.2 Klein 9B · Q8MacBook Pro 64 GB1408 × 140881670 s
Flux.2 Klein 4B · bf16MacBook Air 16 GB1024 × 10244606 s
Flux.2 Klein 4B · Q8MacBook Air 16 GB1024 × 10244351 s
Flux.2 Klein 4B · Q8MacBook Air 16 GB1024 × 10246396 s
Flux.2 Klein 4B · Q8MacBook Air 16 GB1024 × 10248514 s

Zwei Referenzen à 1 MP · alle Zeiten warm gemessen

Auf 16 GB vor dem Render Browser-Tabs mit Live-Inhalten schließen, also Messenger wie WhatsApp Web, Video und Streaming. Ruhende Programme sind unkritisch, solange man während des Renders nicht zu ihnen wechselt.

Zur Lizenz: Flux.2 Klein 4B steht unter Apache 2.0 und ist damit auch kommerziell frei nutzbar. Flux.2 Klein 9B steht unter der FLUX Non-Commercial License. Der Referenz-Workflow läuft also auf 16 GB und mit einem kommerziell freien Modell.

Ergebnis Flux.2 Klein 9B

Flux.2 Klein 9B · MacBook Pro

Ergebnis Flux.2 Klein 4B Q8, gleicher Prompt und gleiche Referenzen

Flux.2 Klein 4B Q8 · MacBook Air

Flux.3 Klein

Für Flux.3 Klein ist das hier ein erster Stand: ein Motiv, wenige Seeds, nur auf dem MacBook Pro getestet. Der Test auf dem MacBook Air mit 16 GB ist in Arbeit. Das Prinzip ist dasselbe, die Verdrahtung eine andere.

Verdrahtung

Ich nutze die destillierte Variante in bf16. Das offizielle Template liefert eine int8-Fassung mit und empfiehlt bf16 ab 24 GB Speicher. Der Encoder ist Qwen3-VL in 4B, geladen mit einem CLIP Loader vom Typ flux3. Der VAE ist derselbe wie bei Flux.2 Klein.

Statt einer Kette aus ReferenceLatent-Nodes gibt es hier einen einzigen Node: Set Reference Multi Latent. Er nimmt das positive und das negative Conditioning, den VAE und die Bilder entgegen, skaliert jede Referenz auf etwa 1 Megapixel, kodiert sie und hängt sie an beide Ketten. Weitere Referenzen kommen an den nächsten freien Eingang. Die Reihenfolge bestimmt den Namen: <ref_image_0>, <ref_image_1> und so weiter.

Der Node hat einen dritten Ausgang, ein leeres Latent in der Größe der Referenz. Das ist dieselbe Falle wie bei Flux.2 Klein. Ich lasse ihn unbenutzt und setze die Leinwand mit einem eigenen Empty Flux 2 Latent. Gesampelt wird mit einem KSampler, 16 Steps, cfg 1, euler, Scheduler simple.

ComfyUI-Workflow Flux.3 Klein: zwei Referenzen über Set Reference Multi Latent, eigenes leeres Latent am KSampler
Flux.3 Klein mit zwei Referenzen — Klick öffnet die Vollansicht

Template-Falle · Prompt-Upsampler

Die offiziellen Templates von Flux.3 Klein schicken den Prompt standardmäßig durch einen Upsampler, ein eigenes Sprachmodell, das ihn umschreibt. Im Edit-Template ist der Schalter dafür umgekehrt verdrahtet, „false“ schaltet ihn ein. Seine Anweisung lautet, Prosa ohne JSON, Koordinaten und IDs auszugeben. Ein JSON-Prompt wird also in Fließtext aufgelöst, die Struktur geht verloren. In meinen Tests wurde das Ergebnis dadurch ungenauer. Mein Workflow arbeitet ohne Upsampler.

Noch etwas fällt am offiziellen Edit-Template auf: Es lädt die Base-Variante. Bei Flux.3 Klein liest Base Referenzen also vermutlich, anders als bei Flux.2 Klein. Getestet habe ich das nicht. Die Notiz im Template nennt dafür 50 Steps und cfg 3.5, im Sampler steht cfg 1.

Erster Befund

Gleicher Prompt, gleicher Seed, eine andere Porträt-Referenz. Solange beide Porträts ähnlich ausgerichtet sind, ändert sich nur die Frau. Pose, Pullover und Hose bleiben stehen. Ist das Porträt aber gewinkelt, dreht Flux.3 Klein die ganze Figur mit, nicht nur den Kopf. Flux.2 Klein hat dieselbe gewinkelte Referenz zwar übernommen, die frontale Pose aus dem Prompt aber gehalten. Flux.3 Klein gewichtet Referenzbilder deutlich stärker.

Für die Identität nehme ich deshalb frontale Porträts, wie auf einer Sedcard, und nicht zu eng angeschnitten. Mein Eindruck ist, dass das Modell die Proportionen besser trifft, wenn auf dem Porträt etwas vom Oberkörper zu sehen ist. Alles, was eine Referenz an Haltung mitbringt, konkurriert sonst mit der Pose im Prompt, und bei Flux.3 Klein setzt sich eher die Referenz durch.

Bei 1024 × 1024 und 16 Steps braucht ein Bild auf dem Pro etwa zwölf Minuten, zwischen 710 und 720 Sekunden. Das ist gut doppelt so lang wie Flux.2 Klein 9B mit vier Steps. Bei 1408 × 1408 sind es 990 Sekunden, also nur gut ein Drittel mehr bei fast doppelter Bildfläche. Flux.2 Klein 9B braucht dort mit vier Steps 867 Sekunden. In der höheren Auflösung liegen die beiden Modelle damit fast gleichauf.

Flux.2 Klein und Flux.3 Klein werden in 1408 × 1408 erheblich besser: feinere Haut, klarerer Strick, eine lockerere Haltung. Die Leinwand ist einfach größer. In einer Ganzkörperaufnahme nimmt das Gesicht nur einen kleinen Teil des Bildes ein. Bei 1024 × 1024 bleiben dafür wenige Pixel, bei 1408 × 1408 fast doppelt so viele.

Bei Flux.3 Klein ist die höhere Auflösung noch zwingender als bei Flux.2 Klein, und sie kostet verhältnismäßig wenig Zeit. Meine Empfehlung für Flux.3 Klein ist deshalb: mindestens 1408 × 1408.

Flux.3 Klein mit gewinkelter Porträt-Referenz: die ganze Figur ist gedreht

Porträt-Referenz gewinkelt

Flux.3 Klein mit frontaler Porträt-Referenz, gleicher Seed und Prompt

Porträt-Referenz frontal

Welches Modell wofür

Flux.2 Klein ist schneller und läuft als 4B auf 16 GB, unter einer Lizenz, die auch kommerziell frei ist. Für Kurse, für kleine Rechner und für alles, was oft iteriert werden muss, ist es die erste Wahl.

Flux.3 Klein braucht 16 Steps und bei 1024 × 1024 deutlich mehr Zeit, bei 1408 × 1408 kaum noch. Es steht unter der FLUX Kommunity License, die bis zu einem Jahresumsatz von 5 Millionen US-Dollar kostenfrei ist. Dafür kann es etwas, das Flux.2 Klein fehlt: Es liest Bounding Boxes und platziert Elemente nach Koordinaten. Mehr dazu in 2.3.5. Ob sich eine referenzierte Person per Box an eine bestimmte Stelle setzen lässt, teste ich als Nächstes.

In meinen bisherigen Bildern setzt Flux.3 Klein wörtlicher um, Flux.2 Klein hat mehr Ausdruck. Wenn das neuere Modell stärker auf Prompttreue und präzise Umsetzung trainiert ist, verliert das ältere dadurch nicht an Bedeutung. Es lohnt sich nicht, immer dem neuesten Modell hinterherzulaufen. Wer ein Modell kennt, weiß, wo es trägt und wo es kippt, und diese Erfahrung ist mehr wert als der nächste Versionssprung.

Gleicher Prompt und gleiche Referenzen, gerechnet mit Flux.2 Klein 9B

Flux.2 Klein 9B · 4 Steps

Gleicher Prompt und gleiche Referenzen, gerechnet mit Flux.3 Klein

Flux.3 Klein · 16 Steps

Alle Bilder auf dieser Seite sind unbearbeitet, so wie sie aus ComfyUI kommen. Deshalb sieht man auch, dass die beiden Modelle Farben und Hauttöne unterschiedlich wiedergeben. In der Nachbearbeitung wäre das leicht anzugleichen. Ich habe es bewusst gelassen.

Workflows

Beide Workflows sind flach aufgebaut, ohne Subgraphen, und ohne Upsampler. Die Ausgabegröße ist von der Referenz entkoppelt. Nach dem Laden in ComfyUI müssen die eigenen Modelldateien und Referenzbilder eingetragen werden. Für Flux.2 Klein wird außerdem ComfyUI-GGUF gebraucht.