Zum Inhalt
lern-es.jetztby twisted pair
Rechner
Weg
Agent

FigurBeispiel (l3hr3r) ✎ eigene beschreiben

Das Gesicht finden

Eine Beschreibung, ein Bildmodell, viele Seeds – und am Ende ein Porträt, auf dem alles Weitere aufbaut.

Das bekommst du

Ein Porträt deiner Figur, das du für alles Weitere verwendest.

Das Referenzporträt des Lehrers – neutraler grauer Hintergrund, graues T-Shirt, Blick in die Kamera.
ErgebnisDas Referenzporträt des Lehrers – neutraler grauer Hintergrund, graues T-Shirt, Blick in die Kamera. KI-generiert.

So legst du los

VorherDer eingerichtete Kursordner aus Lektion A0 mit deiner Beschreibung in figur.json (pruefen.py A0 ist grün).

In Claude Code eingebenIn Hermes mit lokalem Qwen eingeben

Lektion A1: Richte mit skripte/einrichten/comfyui.py ComfyUI ein und erzeuge mit skripte/gesichter.py zwölf Kandidaten aus der Beschreibung in figur.json („a man in his early thirties, short dark ash-blond hair with the first grey strands, light stubble, grey-blue eyes“). Zeig mir den Kontaktbogen und warte auf meine Wahl; übernimm sie dann als figur/gesicht/referenz.png, trage sie in entscheidungen.md ein und führe pruefen.py A1 aus.

Im Terminal, im Kursordner

python3 skripte/einrichten/comfyui.py -v
python3 skripte/gesichter.py -v
xdg-open figur/gesicht/kontaktbogen.jpg

# Deine Wahl übernehmen (hier Seed 1007) und festhalten
cp figur/gesicht/kandidaten/seed_1007.png figur/gesicht/referenz.png
echo "| A1 | $(date +%F) | Gesicht: Seed 1007 | … |" >> entscheidungen.md
python3 skripte/pruefen.py A1

Was dabei passiert ↓

Ziel
Ein neutrales Porträt deiner Figur als figur/gesicht/referenz.png – das Gesicht, das Datensatz, LoRA und Clips tragen.
Rechenzeit
einmalig rund 20 GB Download für ComfyUI und Modelle, danach wenige Minuten für zwölf Kandidaten
Hardware
1 × NVIDIA RTX 3090 (24 GB)
Software
ComfyUI 0.37 · Z-Image Turbo (Apache 2.0)
Daten rein
Die Beschreibung aus figur.json
Daten raus
Zwölf Kandidaten, ein Kontaktbogen, ein gewähltes Porträt (figur/gesicht/referenz.png)
Skill
avatar-figur – in Vorbereitung

▸ Video

Folgt. Geplant sind 6 Minuten, mit den Kandidatenrunden im Vergleich.

VideoEr erklärt diese Lektion selbst. Präsentiert von der Figur, um die es geht.

Worum es geht

Ein Bildmodell erfindet bei jedem Bild ein neues Gesicht. Welches es wird, hängt an zwei Dingen: der Beschreibung und dem Seed, einer Zahl, die das Anfangsrauschen festlegt. Gleiche Beschreibung, gleicher Seed, gleiches Modell: gleiches Bild. Gleiche Beschreibung, anderer Seed: ein anderer Mensch, der zur Beschreibung passt.

Das nutzt diese Lektion. Aus einer Beschreibung entstehen zwölf Kandidaten, du suchst dir einen aus. Dieses eine Porträt ist danach die Referenz: Aus ihm entsteht in A2 der Datensatz, aus dem Datensatz in A3 das LoRA. Was hier nicht stimmt, zieht sich durch den ganzen Kurs.

Was vorher passiert ist

In Lektion A0 ist der Kursordner entstanden, und deine Figur steht in figur.json: Beschreibung, Stimme, Stichwort. Installiert ist noch nichts.

Der Ablauf

1. ComfyUI einrichten

ComfyUI ist die Werkbank für Bild- und Videomodelle: Es lädt Modelle, verbindet sie zu einem Graphen und rechnet. Bedient wird es im Kurs über seine Schnittstelle, nicht über die Oberfläche. Das Skript skripte/einrichten/comfyui.py holt ComfyUI 0.37 nach werkzeuge/ComfyUI, legt eine eigene Python-Umgebung an, installiert PyTorch für CUDA 13, lädt die drei Dateien von Z-Image Turbo nach modelle/ und startet ComfyUI im Hintergrund.

2. Kandidaten erzeugen

skripte/gesichter.py setzt deine Beschreibung in eine feste Vorlage für ein neutrales Studio-Porträt ein: Kopf und Schultern, Blick in die Kamera, graues T-Shirt, grauer Hintergrund, weiches Licht, natürliche Haut ohne Retusche. Für jeden Seed legt es einen ComfyUI-Auftrag als Datei ab, schickt ihn ab und holt das Bild. Am Ende setzt es alle Kandidaten auf einen Kontaktbogen.

Z-Image Turbo braucht dafür nur acht Rechenschritte pro Bild; ist das Modell einmal geladen, dauert ein Porträt Sekunden.

3. Aussuchen und feinschleifen

Selten sitzt alles in der ersten Runde. Dann gibt es zwei Hebel: neue Seeds für neue Gesichter oder einen Seed festhalten und die Beschreibung fein ändern. Beim Lehrer liefen mehrere Runden: zuerst zwei Modelle im Vergleich, dann zehn Seeds mit Z-Image, dann mit Seed 3007 nur noch Feinschliff an Haarfarbe und Unordnung.

Zehn Porträts desselben Prompts mit Seeds 3000 bis 3009: zehn verschiedene Männer im Pullover im Klassenzimmer.
Abb. A1.1

Eine Beschreibung, zehn Seeds, zehn Menschen. Gewählt wurde Seed 3007, unten in der Mitte.

KI-generiert.
Drei Gesichter, je vorher und nachher: Dieselben Seeds mit leicht geänderter Haarfarbe im Prompt.
Abb. A1.2

Seed festhalten, ein Wort ändern: Die Haarfarbe wird dunkler, das Gesicht bleibt. Je kleiner die Änderung, desto sicherer bleibt es derselbe Mensch.

KI-generiert.

4. Übernehmen

Das gewählte Bild wird zu figur/gesicht/referenz.png, die Wahl kommt als Zeile in entscheidungen.md. pruefen.py A1 hakt beides ab.

Von Hand: der ganze Weg

Alle Befehle laufen im Kursordner. Mit -v zeigt jedes Skript jeden Befehl, bevor es ihn ausführt; mit --zeigen gibt es die Befehle nur aus. Nach jedem Lauf liegt ein Protokoll protokoll_<skript>.sh im Ergebnisordner, hier figur/gesicht/protokoll_gesichter.sh – alle Schritte zum Nachlesen oder erneut Ausführen.

Im Terminal, im Kursordner

# 1. ComfyUI einrichten und starten (einmalig, rund 20 GB Download)
python3 skripte/einrichten/comfyui.py -v
#    ist dein System-Python neuer als 3.13: --python python3.12

# 2. Zwölf Kandidaten aus der Beschreibung in figur.json
python3 skripte/gesichter.py -v

# 3. Kontaktbogen ansehen und wählen (hier Seed 1007)
xdg-open figur/gesicht/kontaktbogen.jpg
cp figur/gesicht/kandidaten/seed_1007.png figur/gesicht/referenz.png
echo "| A1 | $(date +%F) | Gesicht: Seed 1007 | natürlich, mit Charakter |" >> entscheidungen.md
python3 skripte/pruefen.py A1

So sieht -v für einen Kandidaten aus. Der Auftrag an ComfyUI ist eine JSON-Datei, die das Skript schreibt und dann abschickt:

# Seed 1000
▸ cat > figur/gesicht/auftraege/seed_1000.json <<'EOF'
{ "1": { "class_type": "UNETLoader", "inputs": { "unet_name": "z_image_turbo_bf16.safetensors", … } }, … }
EOF
▸ python3 skripte/werkzeuge/comfy.py ausfuehren figur/gesicht/auftraege/seed_1000.json --ziel figur/gesicht/kandidaten/seed_1000.png
…
▸ werkzeuge/ComfyUI/venv/bin/python skripte/werkzeuge/kontaktbogen.py figur/gesicht/kandidaten/seed_1000.png … --aus figur/gesicht/kontaktbogen.jpg --spalten 4

Feinschliff an einem Gesicht: Seed festhalten und eine eigene Beschreibung mitgeben.

Im Terminal, im Kursordner

python3 skripte/gesichter.py --seeds 1007 --prompt "Neutral reference portrait photo of a man in his early thirties, short dark ash-blond hair with the first grey strands, light stubble, grey-blue eyes, slightly darker hair, …" -v

Im Pod gibt es kein xdg-open: Öffne figur/gesicht/kontaktbogen.jpg im Dateibrowser von JupyterLab oder hol ihn mit scp auf deinen Rechner.

Entscheidungen

Welches Bildmodell?

Z-Image Turbo

Im Vergleich mit Krea 2 Turbo wirkten die Gesichter von Z-Image natürlicher, Krea 2 eher glatt und älter. Dazu kommt die Lizenz: Z-Image steht unter Apache 2.0, Krea 2 ist nur bis 1 Mio. USD Umsatz frei. Und auf Z-Image wird in A3 das LoRA trainiert – Gesicht und Training aus einem Modell.

Zwei Spalten: links Z-Image mit zerzaustem Haar und Bartschatten, rechts Krea 2 mit glatterem, älterem Gesicht, je zwei Seeds.
Abb. A1.3

Derselbe Prompt, dieselben Seeds: links Z-Image Turbo, rechts Krea 2 Turbo.

KI-generiert.

Gleich neutral oder erst in einer Szene?

Im Kurs gleich ein neutrales Porträt

Der Lehrer entstand auf dem Umweg: zuerst ein Foto mit Stimmung im Klassenzimmer, danach mit Qwen-Image-Edit in ein neutrales Porträt verwandelt. Im Kurs geht es direkt, weil die Referenz für A2 ohnehin neutral sein muss und so ein Schritt wegfällt. Ob der direkte Weg ebenso lebendige Gesichter liefert, zeigt der erste Kursdurchlauf; wer lieber in einer Szene sucht, gibt mit --prompt eine eigene Beschreibung mit.

Wie viele Kandidaten?

Zwölf je Runde, lieber mehrere Runden

Zwölf Gesichter passen auf einen Kontaktbogen und lassen sich in Ruhe vergleichen. Statt hundert Seeds auf einmal lieber eine Runde ansehen, die Beschreibung schärfen und neu würfeln.

Welches Gesicht?

Seed 3007

Natürlich, nicht zu glatt, ein Gesicht mit Charakter, das man in vielen Szenen glaubt. Die Wahl ist Geschmackssache und genau deshalb deine: Der Agent kann Kandidaten vorlegen, aussuchen musst du.

Fallstricke

Alle Gesichter sehen nach Werbung aus

Bildmodelle neigen zu makellosen Gesichtern. Für eine Figur, die echt wirken soll, sind kleine Unregelmäßigkeiten wichtiger als Schönheit. Die Beschreibung des Lehrers nennt ausdrücklich eine leicht schiefe Nase, die ihm Charakter gibt.

LösungKleine Makel und natürliche Haut beschreiben: Poren, Sommersprossen, eine leicht schiefe Nase, „no retouching“.

Eine kleine Änderung am Prompt macht einen neuen Menschen

Schon ein anderes Alter oder eine andere Frisur in der Beschreibung kann das ganze Gesicht kippen lassen. Mit festem Seed und kleinen Schritten bleibt es derselbe Mensch (Abb. A1.2).

LösungDen Seed festhalten und nur ein Detail auf einmal ändern.

Beim Neutralisieren driftet das Gesicht

Wer das Gesicht in einer Szene findet und danach mit Qwen-Image-Edit Hintergrund, Kleidung und Blick ändert, bekommt nicht immer denselben Menschen zurück. Je mehr auf einmal geändert wird, desto eher.

LösungNur auf dem Umweg nötig: wenig auf einmal ändern und mehrere Varianten vergleichen.

Das Original im Klassenzimmer und sieben neutrale Varianten in grauem T-Shirt vor grauem Grund, einige mit deutlich anderem Gesicht.
Abb. A1.4

Der Umweg beim Lehrer: links oben das Original, daneben Versuche, es zu neutralisieren. Nicht jede Variante ist noch er.

KI-generiert.

ComfyUI startet nicht

Das Skript wartet bis zu drei Minuten auf ComfyUI und bricht dann mit einem Hinweis auf das Log ab. Häufigste Ursachen: ein zu neues System-Python, ein Treiber unter Version 580 oder eine belegte Grafikkarte.

Lösungwerkzeuge/comfyui.log lesen; bei Python 3.14 die Umgebung mit --python python3.12 neu anlegen.

Mit KI vereinfacht

Der Agent richtet ComfyUI ein, lädt die Modelle, erzeugt die Kandidaten und legt dir den Kontaktbogen vor. Danach wartet er: Welches Gesicht es wird, entscheidest du. Erst dann übernimmt er die Wahl als Referenz und trägt sie in entscheidungen.md ein.

Der Agent

  • richtet ComfyUI und die Modelle ein und startet es
  • erzeugt zwölf Kandidaten aus figur.json
  • baut den Kontaktbogen und zeigt ihn dir
  • schleift auf Wunsch einen Seed nach
  • übernimmt deine Wahl und prüft mit pruefen.py A1

Du

  • wählst das Gesicht
  • sagst, was am Gesicht noch nicht stimmt

Mit lokalem Qwen: Z-Image braucht mit Textkodierer rund 20 GB Grafikspeicher, das Sprachmodell rund 18 GB – beides zusammen passt nicht auf 24 GB. Mit OLLAMA_KEEP_ALIVE=0 aus der Einrichtung gibt Ollama die Karte nach jeder Antwort frei, und ComfyUI kann rechnen.