Prompts automatisch aus Bildern in ComfyUI erzeugen mit einem lokalen Vision-Modell

Führe ein Vision-Language-Modell lokal mit Ollama aus, lass es jede Skizze beschreiben und einen Prompt schreiben, und erzeuge dann neue Bilder mit SDXL oder Flux und einem Depth-ControlNet. Tausende Variationen über Nacht, alles offline.

Anton Tenitsky13. Oktober 20265 Min. LesezeitVideoversion unten

Diese Anleitung wurde mit KI aus dem Englischen übersetzt und kann Fehler enthalten. Zum Original.

Eine Tänzerin in goldenem Gewand auf einer Bühne, aus einer Bleistiftskizze erzeugt, mit dem von einem lokalen Vision-Modell geschriebenen Prompt

Prompts zu schreiben ist der langsame Teil der Massenerzeugung von Bildern. Dieser Workflow übergibt ihn an eine KI, die sehen kann: Ein Vision-Language-Modell betrachtet jede deiner Skizzen, beschreibt sie und schreibt einen frischen Prompt. Dann erzeugt SDXL oder Flux ein neues Bild, das der Skizze über ein Depth-ControlNet folgt.

Alles läuft lokal auf deinem Computer, offline. Füttere es vor dem Schlafengehen mit 10 oder 50 Skizzen, und du kannst mit ein paar tausend Bildern aufwachen.

Kurz gefasst

  • Ollama führt die Sprachmodelle lokal aus; ComfyUI spricht über ein Node-Paket mit ihm.
  • Modell: Etwa 4,7 GB sind der Sweet Spot. LLaVA Q4 lieferte mir die besten Prompts.
  • Einstellungen, die zählen: Keep-alive 0 mit Flux, maximale Tokens 512 für Flux oder 77 für SDXL und ein zufälliger Seed.
  • Dann: Der Prompt plus eine Tiefenkarte der Skizze gehen an SDXL oder Flux.

LLMs, MLLMs und VLMs, kurz erklärt

Das ursprüngliche ChatGPT nahm nur Text entgegen: ein großes Sprachmodell (LLM). ChatGPT, Gemini und Grok sind heute multimodale Modelle (MLLMs), die auch Bilder, Audio und mehr aufnehmen. Ein Vision-Language-Modell (VLM) ist die Variante für Bild und Text, und genau das brauchen wir: etwas, das ein Bild ansehen und darüber schreiben kann.

Was ich vorher nicht wusste: Du kannst sowohl LLMs als auch VLMs auf deinem eigenen Computer ausführen, ganz ohne Internetverbindung.

1. Ollama installieren

Ollama führt Sprachmodelle lokal aus. Lade das Installationsprogramm herunter (etwa 700 MB; die Modelle selbst sind größer), führe es aus und füge, wenn es dich darum bittet, den angezeigten Befehl in eine Eingabeaufforderung ein, um die Einrichtung abzuschließen. Wenn es fertig ist, erscheint das Ollama-Symbol in der Taskleiste. Es gibt nichts zu konfigurieren; es muss nur neben ComfyUI laufen.

Die Download-Seite von Ollama
Ollama muss laufen, damit ComfyUI lokale Sprachmodelle nutzen kann.

2. Die Node-Pakete installieren

Im ComfyUI-Custom Nodes Manager zeigt eine Suche nach „VLM“ viele Pakete. Viele wurden nicht aktualisiert, seit ComfyUI von Python 3.11 auf 3.12 gewechselt ist, und funktionieren nicht mehr. Die beiden, die ich genutzt habe und die funktionieren:

Installiere beide und starte ComfyUI neu.

Der ComfyUI Custom Nodes Manager mit VLM-bezogenen Node-Paketen
Viele VLM-Pakete tauchen auf; nicht alle funktionieren mit dem aktuellen ComfyUI.

3. Ein Modell wählen

Füge zum Anfang einen Node Ollama Text Describer hinzu. Seine Modellliste zeigt Namen und Größen. Modelle sind nicht vorinstalliert; wenn du eines zum ersten Mal auswählst, wird es in deinen Benutzerordner auf dem Systemlaufwerk heruntergeladen. Diesen Ordner kannst du in Ollamas Einstellungen ändern (klicke auf das Taskleisten-Symbol).

Zwei Ärgernisse, die man kennen sollte:

  • Heruntergeladene Modelle behalten keine lesbaren Namen, sodass du nicht erkennen kannst, welche du schon hast. Führe eine Notiz.
  • Textmodelle können nicht sehen. Ein LLM erzeugt nur Text; für Bildbeschreibungen brauchst du ein Vision-Modell.

Nach dem, was ich ausprobiert habe:

Modellgröße Ergebnis
~350 MB (0,5B Parameter) Im Grunde nutzlos; dümmer als GPT-3
~1 GB Okay, nicht toll
~4,7 GB Der beste Kompromiss zwischen Qualität und Größe
Über 5 GB Ich bin nicht weitergegangen; es braucht neben dem Bildmodell zu viel VRAM

4. Ein Bild beschreiben und einen Prompt schreiben

Für Bilder nutzt du den Node Ollama Image Describer. Er nimmt ein Bild, folgt deinen Anweisungen und gibt Text aus, der zum Prompt wird. Verbinde einen Text-Vorschau-Node, um ihn zu lesen.

Eine Bleistiftskizze einer sitzenden Frau, in den Node Ollama Image Describer geladen, mit der erzeugten Beschreibung daneben
Eine Skizze geht hinein; ein geschriebener Prompt kommt heraus.

Ich habe eine meiner Skizzen geladen und LLaVA Q4 (LLaVA mit 4-Bit-Quantisierung) genutzt, das unter den Modellen, die ich ausprobiert habe, die besten Prompts lieferte. Der Node hat zwei Anweisungsfelder. Ich habe festgestellt, dass das zweite das ist, auf das es wirklich ankommt. Meines sagte im Kern: Erstelle einen Prompt für die fotografische Bilderzeugung dieser Person in diesem Umfeld, und verwende keine Anführungszeichen, die manche Modelle überall setzen.

Das Anweisungsfeld, das um einen Prompt für die fotorealistische Bilderzeugung des Motivs ohne Anführungszeichen bittet
Die Anweisung, die die Arbeit erledigt, einschließlich „keine Anführungszeichen“.

Vermeide „Thinking“-Modelle. Sie schreiben ihre Überlegungen aus („Ich überlege, wie ich antworte…“), statt einen Prompt zu liefern, was für ein Bildmodell nutzlos ist.

5. Die Einstellungen, die zählen

Die Einstellungen des Ollama Image Describer, darunter Keep alive, Max Tokens und Seed
Keep-alive, Max Tokens und Seed sind die drei Einstellungen, die stimmen müssen.

Keep-alive. -1 hält das Modell im Speicher geladen; 0 entlädt es nach jedem Prompt. Normalerweise nutze ich 0. Mit SDXL und 16–24 GB VRAM kannst du es geladen lassen und pro Bild ein paar Sekunden sparen. Mit Flux musste ich es jedes Mal entladen, sogar bei 24 GB: Sonst belegte das 5-GB-Vision-Modell so viel Speicher, dass der Bild-Render hängen blieb.

Maximale Tokens. Passe sie dem Bildmodell an: 512 für Flux, aber nur 77 für SDXL, die Größe des Fensters seines Text-Encoders.

Seed. Der Seed des Beschreibers ändert sich nicht von selbst, du bekämst also bei jedem Durchlauf denselben Prompt. Füge den Seed-Node von rgthree hinzu, stelle ihn so ein, dass er jedes Mal zufällig wird, und verbinde ihn mit dem Beschreiber. Jetzt schreibt jeder Durchlauf einen neuen Prompt. In Kombination mit einer Vorgabe in den Anweisungen („an einem bestimmten Ort“, „in diesem Szenario“) erzeugt jede Skizze einen Strom verschiedener Ideen.

Repeat Penalty und Temperature habe ich bei den Standardwerten gelassen; sie sind gut genug.

6. Der vollständige Workflow: automatisch von Skizzen zu Bildern

Die vollständige Version, die auf meinem Patreon liegt, bringt alles zusammen:

  1. Load Image Batch holt bei jedem Durchlauf die nächste Skizze aus einem Ordner.
  2. Der Ollama Image Describer schreibt dafür einen neuen Prompt. Meine Skizzen zeigten verschiedene Frauen in verschiedenen Posen, daher erzeugte dieselbe Anweisung für jede einen anderen Prompt.
  3. Der Prompt geht an den positiven Prompt des Bildmodells.
  4. Depth Anything verwandelt die Skizze in eine Tiefenkarte, und Apply ControlNet nutzt sie, um die Pose zu halten.
  5. KSampler erzeugt das Bild. Für SDXL habe ich Juggernaut XL (etwa 6 GB) genutzt.

Breite und Höhe werden einmal als Integer-Nodes gesetzt und für die Skalierung, die Tiefenkarte und die Leinwand wiederverwendet.

Ein erzeugtes Bild einer Frau, die durch die Luft springt, aus einer der Skizzen gemacht
Eine andere Skizze, ein anderer Prompt, ein völlig anderes Bild.

Mit Flux ist es derselbe Workflow, mit dem XLabs Sampler und Flux dev anstelle von SDXL. Flux war kreativer und lieferte mehr Variation. Denke an die Keep-alive-Einstellung.

Die Stärke liegt im Maßstab: Bereite 10 oder 50 Skizzen vor, lass es über Nacht mit zufälligem Seed laufen, und du bekommst Tausende verschiedener Bilder, die jeweils noch einer deiner Zeichnungen folgen. Für andere Wege, Prompts in großer Menge zuzuführen, siehe Prompt-Listen und meinen Prompt-Cycler-Node.

Die Videoversion ansehen (11:31)

Alles oben steht auch im Video, falls du lieber am Bildschirm mitmachst. Das Video ist auf Englisch.

Häufige Fragen

Welches Vision-Modell sollte ich in Ollama verwenden?

In meinen Tests waren Modelle um 4,7 GB der beste Kompromiss. Die winzigen mit 350 MB waren im Grunde nutzlos, und die mit 1 GB waren okay, aber nicht toll. Ein quantisiertes LLaVA (Q4) lieferte mir die besten Prompts.

Wie viele Tokens darf der Prompt haben?

Bis zu 512 Tokens für Flux, aber nur 77 für SDXL. Stelle die maximale Token-Zahl des Beschreibers passend zum Bildmodell ein.

Warum hängt mein Flux-Render nach der Beschreibung?

Das Vision-Modell liegt noch im VRAM. Setze Keep-alive auf 0, damit es nach dem Schreiben jedes Prompts entladen wird. Mit Flux reichten selbst 24 GB VRAM nicht, um beide geladen zu halten.

Warum bekomme ich jedes Mal denselben Prompt?

Der Seed des Beschreibers ändert sich nicht von selbst. Verbinde einen Seed-Randomizer-Node, damit jeder Durchlauf einen neuen Seed bekommt und damit eine neue Idee.

Anton Tenitsky ist 3D-Artist mit mehr als 15 Jahren Erfahrung in der Computergrafik, tätig für Nickelodeon, Gameloft, Marvel Rivals und viele weitere Kunden. Mehr über mich

Ähnliche Anleitungen