Ollama Modelle¶
Wir empfehlen, ein Vision Modell zu wĂ€hlen, das Geschwindigkeit, Genauigkeit und ZuverlĂ€ssigkeit gut ausbalanciert. Drei Modellfamilien erfĂŒllen diese Kriterien und können wir empfehlen â Gemma 4, Qwen3-VL und Qwen 3.5:
| Modell | Anwendungsfall | Anmerkungen |
|---|---|---|
| Gemma 4 | Standard-Generierung von Bildunterschriften und Labels auf Englisch | Leichte, zuverlĂ€ssige JSON-Ausgabe; guter Standard. FĂŒr eine nichtâenglische Bibliothek keine gute Wahl â siehe SprachunterstĂŒtzung. |
| Qwen3-VL | Fortgeschrittene Bilderkennung und Reasoning (OCR, komplexe Prompts) | Beste MotivâAbdeckung in unserem Benchmark, wenn der Prompt eine Anzahl an Labels vorgibt. Verwende einen -instructâTag. |
| Qwen 3.5 | Leichtgewichtige Alternative fĂŒr Captions und Labels | Starke Ergebnisse mit dem eingebauten Prompt bei weniger als der HĂ€lfte der PromptâTokens von Qwen3-VL. Kein -instructâTag nötig. |
Gemma 4 ist in Bezug auf Performance sehr konsistent; Fehler treten nur selten auf. FĂŒr sehr lange oder komplexe Prompts und Captions ist es jedoch weniger geeignet. FĂŒr die meisten AnwendungsfĂ€lle empfehlen wir die StandardâVariante gemma4:latest (aktuell ein Alias fĂŒr gemma4:e4b). Die kleinere Variante gemma4:e2b ist spĂŒrbar schneller und liefert sogar mehr Labels pro Bild, bei etwas geringerer MotivâAbdeckung â eine gute Wahl, wenn Tempo und LabelâAnzahl wichtiger sind als das eine treffendste Motiv. Wenn du bereits Gemma 3 konfiguriert hast, funktioniert das weiterhin â Gemma 4 ist ein DropâinâErsatz mit vergleichbarer Latenz (ca. 2 Sekunden fĂŒr die LabelâGenerierung auf einer NVIDIA RTX 4060 in unseren Tests).
SchwĂ€cher ist Gemma 4 beim Erkennen von Motiven, bei denen es sich nicht sicher ist: Statt allgemein zu bleiben, rĂ€t es selbstbewusst. In unserem Benchmark bezeichneten beide Varianten einen Gepard als "Leopard" â bei jedem Durchlauf und in jeder getesteten Sprache, also auch auf Deutsch. Das ist kein Ăbersetzungsproblem, sondern eine Fehlerkennung: Das Modell meint tatsĂ€chlich das falsche Tier. Ebenso wurde eine Pinguinkolonie als "Robben" beschrieben und ein Skispringer als Snowboarder. Wenn deine Bibliothek viele Tieraufnahmen oder andere weniger verbreitete Motive enthĂ€lt, ist das der Grund, stattdessen Qwen3-VL oder Qwen 3.5 in vergleichbarer GröĂe auszuprobieren.
Qwen3âVL verhĂ€lt sich in den kleineren 2bâ und 4bâVarianten weniger vorhersehbar; Leistung und Fehlerrate können stark schwanken â es sei denn, du steuerst es wie in den Beispielen weiter unten. Die Standardversion qwen3-vl:latest (8b) funktioniert im Allgemeinen ohne gröĂere Anpassungen gut. Die LabelâGenerierung auf einer NVIDIA RTX 4060 dauert typischerweise 2â3âŻSekunden und ist damit in etwa vergleichbar mit Gemma 4.
Qwen 3.5 ist die leichtere der beiden QwenâOptionen und benötigt keinen speziellen Tag: qwen3.5:4b verhĂ€lt sich bereits wie ein InstructâBuild, erzeugt Captions in etwa einer Sekunde und hĂ€lt mehrwortige LabelâNamen nahe null. Mit dem eingebauten LabelâPrompt erreichte es die höchste MotivâAbdeckung aller von uns gemessenen selbst gehosteten Modelle, und es kodiert ein 720âpxâBild in weniger als der HĂ€lfte der PromptâTokens von Qwen3-VL, was es an einem abgerechneten Endpunkt spĂŒrbar gĂŒnstiger macht. Sobald der Prompt eine LabelâAnzahl vorgibt, zieht Qwen3-VL wieder vorbei â wĂ€hle also Qwen 3.5 fĂŒr ein leichtes, gĂŒnstiges Setup und Qwen3-VL, wenn die MotivâAbdeckung am wichtigsten ist. Beachte, dass die 2bâ und 9bâVarianten bei Labels beide deutlich schlechter abschnitten als 4b â gröĂer ist hier nicht besser.
Wie bei allen QwenâModellen mĂŒssen fĂŒr beide die strikten Options und das PromptâSchema "AT MOST N labels" beibehalten werden â ohne sie erzeugen sie zu viele Tokens und die JSONâAntwort wird abgeschnitten.
Die Performance hĂ€ngt auĂerdem von deiner Hardware ab, und die Rangfolge kann sich damit Ă€ndern. Unsere Werte stammen von einer einzelnen NVIDIA RTX 4060 â betrachte sie als Ausgangspunkt, nicht als Urteil, und probiere die Kandidaten auf deiner eigenen Maschine aus. Ein Grund fĂŒr die Verschiebung: Was ein Bild an PromptâTokens kostet, unterscheidet sich zwischen den Modellfamilien um mehr als das FĂŒnffache. Eine Maschine, die das Bild langsam kodiert â ohne GPU, mit in den SystemâRAM ausgelagerten Layern oder mit einer GPU ohne Flash Attention â bestraft daher ein Modell mit schwerem VisionâEncoder wie Qwen3-VL weit stĂ€rker als ein leichtes wie Gemma 4, selbst wenn beide auf einer schnellen GPU nah beieinander liegen.
Wenn du sowohl Captions als auch Labels erzeugst, verwende dasselbe Modell fĂŒr beides, damit Ollama nicht zwischen Modellen hinâ und herschalten muss.
Ohne GPUâBeschleunigung sind OllamaâModelle deutlich langsamer und benötigen zwischen 10âŻSekunden und ĂŒber einer Minute pro Bild. Das kann in Ordnung sein, wenn du nur wenige Bilder verarbeiten möchtest oder Wartezeiten akzeptabel sind.
Reasoning bei Thinking-Modellen deaktivieren
Viele aktuelle Vision-Modelle â die Qwen3.5-Familie, qwen3-vl:* und andere â sind Thinking- bzw. Reasoning-Modelle. Bei aktiviertem Reasoning geben neuere Ollama-Versionen dieses im Ergebnis aus: Captions beginnen mit Text wie "The user wants a concise description of the provided imageâŠ" und das Label-JSON lĂ€sst sich nicht mehr parsen. Setze Service.Think: "false" fĂŒr diese Modelle (wie in den Beispielen unten), um die Reasoning-Ausgabe abzuschalten â auf PhotoPrism 260601 und Ă€lter ist dies erforderlich, damit das Reasoning nicht in Captions und Kategorien landet. SpĂ€tere Releases deaktivieren das Ollama-Reasoning standardmĂ€Ăig, sodass es dort eher eine Absicherung als eine Voraussetzung ist; es bleibt ĂŒberall harmlos, weshalb die Beispiele es immer enthalten. Aktiviere Reasoning nur bewusst wieder mit Service.Think: "true".
Bei Qwen3-VL zusĂ€tzlich einen -instructâTag verwenden
Service.Think: "false" hĂ€lt das Reasoning aus der Ausgabe heraus. Es hindert einen ReasoningâBuild aber nicht daran, es ĂŒberhaupt zu erzeugen â der Aufwand bleibt also gröĂtenteils bestehen. Gemessen an qwen3-vl:4b mit deaktiviertem Reasoning: rund 414 AusgabeâTokens und 6,6 Sekunden fĂŒr eine Caption aus zwölf Wörtern, wĂ€hrend qwen3-vl:4b-instruct eine lĂ€ngere Caption in etwa 1,2 Sekunden mit 24 Tokens lieferte. Der ReasoningâBuild gab auĂerdem 21 % mehrwortige LabelâNamen zurĂŒck, gegenĂŒber 0 % beim InstructâBuild. Betrachte das Flag als KorrektheitsâAbsicherung und den Tag als PerformanceâEntscheidung â das sind zwei getrennte Dinge.
Das gilt speziell fĂŒr Qwen3-VL. qwen3.5:4b braucht keinen -instructâTag: Schon mit dem normalen Tag antwortete es in etwa einer Sekunde mit 21 AusgabeâTokens und unter 2 % mehrwortigen LabelâNamen. Gemma 4 ist kein ReasoningâModell und davon ohnehin nicht betroffen.
SprachunterstĂŒtzung¶
FĂŒr andere Sprachen als Englisch sollten die Basisanweisungen im Prompt auf Englisch bleiben; ergĂ€nze nur die gewĂŒnschte Sprache (z.B. "Respond in German"). Das funktioniert fĂŒr Captionâ und LabelâPrompts gleichermaĂen und ist zuverlĂ€ssiger, als die Anweisungen selbst zu ĂŒbersetzen.
Labels und Captions getrennt prĂŒfen
Ein Modell kann die gewĂŒnschte Sprache fĂŒr Captions befolgen und sie bei Kategorien stillschweigend ignorieren. In unseren Tests lieferte gemma4:e2b korrekte arabische und hebrĂ€ische Captions, gab die Labels aber bei jeder Anfrage auf Englisch zurĂŒck â auch bei Deutsch, ohne Fehlermeldung und ohne Eintrag im Log.
Die richtige Schrift bedeutet auĂerdem nicht, dass der Inhalt stimmt. Ein 4BâModell erzeugte flĂŒssiges HebrĂ€isch, benannte darin aber das falsche Motiv und beschrieb das Foto eines Elefanten als "der Löwe zerquetscht die Vögel".
PrĂŒfe also beide Modelltypen â und prĂŒfe den Inhalt, nicht nur das Alphabet. Erzeuge ein paar Bilder mit photoprism vision run -m labels --count 1 --force sowie -m caption und lies die Ergebnisse.
Die UnterstĂŒtzung schwankt stark je nach Modell und folgt weder der GröĂe noch der allgemeinen QualitĂ€t. Gehostete Modelle beherrschten Deutsch, Arabisch und HebrĂ€isch deutlich besser als jedes von uns gemessene selbst gehostete Modell, das in 8 GB VRAM passt. Unter den selbst gehosteten Optionen war Gemma 4 bei nichtâenglischen Kategorien am schwĂ€chsten, obwohl es unser empfohlener Standard fĂŒr Englisch ist â eine nichtâenglische Bibliothek ist also einer der FĂ€lle, in denen sich Qwen3-VL oder ein CloudâModell zu testen lohnt.
Normalisierung der LabelâNamen¶
Sprachmodelle liefern LabelâNamen in der Form, die der Prompt nahelegt. PhotoPrism vereinheitlicht sie deshalb vor dem Speichern. Die Eigenschaft Normalize eines Labels-Modells legt fest, wie:1
| Wert | ferris wheel wird gespeichert als |
Verhalten |
|---|---|---|
| (nicht gesetzt) | Engine-Standard | phrase fĂŒr gehostete Modelle, sonst single-word. |
single-word |
Ferris | Reduziert auf das erste Token, das im LabelâVokabular auflösbar ist, sonst auf das erste Token. |
phrase |
Ferris Wheel | BehÀlt die Wortgruppe und gleicht sie samt Singularform zuerst als Ganzes gegen das Vokabular ab, sodass aus sea lions Sea Lion wird. |
false |
Ferris Wheel | BehĂ€lt exakt das, was das Modell zurĂŒckgegeben hat, ohne VokabularâZuordnung â carousel bleibt Carousel und wird nicht zu Theme Park. |
Ein Name in einer nicht-lateinischen Schrift bleibt in jedem Modus vollstĂ€ndig erhalten, auch unter single-word â die Einstellung kann ihn nicht zusammenziehen.
off, none, no und disabled werden als Aliase fĂŒr false akzeptiert.
Nur der Name hĂ€ngt vom Modus ab. Schwellenwerte fĂŒr Confidence und Topicality, Kategorien und PrioritĂ€ten gelten in allen Modi gleich, ein wenig aussagekrĂ€ftiger Name wie background wird also weiterhin verworfen. Was sich Ă€ndert, ist die gefundene VokabularâRegel: ski-lift erbt den strengeren ski-Schwellenwert, wenn es zu Ski reduziert wird, und den allgemeinen Schwellenwert, wenn es als Ski Lift erhalten bleibt.
Die Standardwerte unterscheiden sich aus einem gemessenen Grund. Jeder mehrteilige LabelâName, den die gehosteten Modelle in unserem Benchmark zurĂŒckgaben, war ein echtes Kompositum â 0â2,1 % aller Labels. Sie behalten Wortgruppen daher standardmĂ€Ăig bei. Modelle, die in 8 GB VRAM passen, lieferten 3â19 % mehrteilige Namen und mischten echte Komposita mit FĂŒllwörtern wie city_name, text_on_sign und photo list â sie bleiben deshalb bei single-word, und die Rate mehrteiliger Namen lohnt einen Blick, bevor du ein Modell auf phrase umstellst.
Namen in einer anderen Schrift sind automatisch geschĂŒtzt. Das LabelâVokabular ist englisch. Einen Namen ohne lateinische Buchstaben in Token zu zerlegen, kann daher nichts treffen und kĂŒrzt nur das Motiv weg â aus dem arabischen ŰÙ
ۧ۱ ÙŰŰŽÙ (Zebra) wĂŒrde ŰÙ
ۧ۱ (Esel), aus dem hebrĂ€ischen ŚŚŚŚ ŚąŚ Ś§ (Riesenrad) wĂŒrde ŚŚŚŚ (Rad). PhotoPrism behĂ€lt solche Namen deshalb auch unter single-word vollstĂ€ndig bei; fĂŒr eine arabische, hebrĂ€ische, chinesische, japanische, koreanische, griechische oder kyrillische Bibliothek musst du dafĂŒr nichts einstellen.
MaĂgeblich ist die Schrift, nicht die Sprache: Ein Name in lateinischer Schrift lĂ€sst sich weiterhin Token fĂŒr Token auflösen, und das dabei behaltene Hauptwort ist meist das richtige â aus dem spanischen noria gigante wird Noria, also weiterhin ein Riesenrad. Ein Name, der Schriften mischt, folgt der konfigurierten Einstellung, sodass ێۧ۷ۊ beach ĂŒber das Vokabular zu Beach aufgelöst wird. FĂŒr eine deutsche Bibliothek ist es damit eine echte AbwĂ€gung und keine Notwendigkeit: single-word behĂ€lt das Hauptwort, phrase das vollstĂ€ndige Kompositum â bei deutschen Komposita, die ohnehin oft ein einzelnes Wort sind (Riesenrad), fĂ€llt der Unterschied ohnehin kaum ins Gewicht.
Um zusammengesetzte Namen zu behalten, setze Normalize: phrase am Modell und verwende einen System-Prompt, der keine Einzelwort-Substantive verlangt â sonst liefert das Modell kaum je eine Wortgruppe, die erhalten bleiben könnte:
Models:
- Type: labels
Model: qwen3-vl:4b-instruct
Engine: ollama
Normalize: phrase
Service:
Uri: http://ollama:11434/api/generate
Think: "false"
Temperature, TopK und TopP¶
Wenn du die Optionen Temperature, TopK und TopP bei Ollama Modellen setzt, kannst du ZufÀlligkeit und KreativitÀt generativer Large Language Modelle gezielt steuern:
| Parameter | Effect on Output | When to Use |
|---|---|---|
| Temperature | Adjusts overall randomness | Control creativity without limiting vocabulary |
| TopK | Restricts choices to most probable tokens | Prevent rare or irrelevant tokens |
| TopP | Adapts vocabulary size based on confidence | Dynamic control over diversity |
Techniken kombinieren¶
Diese Methoden lassen sich kombinieren, um das AusgabeâVerhalten weiter zu verfeinern, zum Beispiel:
- Temperature + TopK: steuert die ZufÀlligkeit, wÀhrend nur die wahrscheinlichsten Tokens gewÀhlt werden.
- Temperature + TopP: regelt die KreativitĂ€t ĂŒber die Temperatur und begrenzt gleichzeitig dynamisch den TokenâRaum.
ZusĂ€tzlich kannst du MinP setzen, um Tokens mit sehr geringer Wahrscheinlichkeit auszuschlieĂen â typischerweise seltene Labels oder seltsame Formulierungen, die du fĂŒr Klassifizierungsaufgaben nicht möchtest.
Caption Prompts¶
Mit den meisten Modellen erzeugt folgender Prompt prÀgnante Captions mit genau einem Satz:
Create a caption with exactly one sentence in the active voice that describes the main visual content. Begin with the main subject and clear action. Avoid text formatting, meta-language, and filler words.
Beispiel: A sleek pool extends over a dramatic cliffside overlooking turquoise waters.
FĂŒr detailliertere Bildbeschreibungen kannst du diesen Prompt verwenden (bis zu drei SĂ€tze):
Write a descriptive caption in 3 sentences or fewer that captures the essence of the visual content. Avoid text formatting, meta-language, and filler words. Do not start captions with phrases such as "This image", "The picture", or "Here are". Begin with the subject(s), then describe the surroundings, and finally add atmosphere (e.g., time of day). If possible, include the subject's gender and general age group.
Beispiel: A gray cat with a fluffy coat is lounging on a cushion, its eyes closed in a peaceful slumber. The background features a blurred view of trees and a blue sky, suggesting it's daytime. The cat's relaxed posture and the serene outdoor setting create a tranquil and cozy atmosphere.
FĂŒr andere Sprachen sollten die Basisanweisungen im Prompt auf Englisch bleiben; ergĂ€nze nur die gewĂŒnschte Sprache (z.B. "Respond in German") und prĂŒfe das Ergebnis wie unter SprachunterstĂŒtzung beschrieben.
Halte Prompts so kurz wie möglich. ĂbermĂ€Ăig lange Prompts erhöhen die Halluzinationsrate und die Latenz.
Konfigurations Beispiele¶
Die folgenden Beispiele kannst du direkt in deiner vision.yml verwenden. Die Datei liegt im Verzeichnis storage/config. Mehr erfahren âș.
Wie viele Labels zu erwarten sind
Der eingebaute LabelâPrompt gibt bewusst keine Anzahl vor. Eine kurze Liste zuverlĂ€ssiger Labels ist nĂŒtzlicher â und gĂŒnstiger â als eine lange: Die Anzahl wirkt sich auf die Datenbank, die APIâAntwort und die OberflĂ€che aus, die sie laden und darstellen muss, und ein Modell, das ein Bild schlecht erfasst, liefert vor allem Rauschen, wenn man mehr von ihm verlangt.
Wie viele du bekommst, hĂ€ngt daher vom Modell ab und ist kein Verfehlen einer Vorgabe. In unserem Benchmark gaben gehostete Modelle sieben bis zwölf Labels pro Bild von sich aus zurĂŒck, Modelle mit 8 GB VRAM ein bis vier â beim selben Prompt.
Du kannst eine Anzahl anfordern â siehe das Qwen3-VL LabelâBeispiel weiter unten â, aber betrachte das als Feineinstellung pro Modell, die du ĂŒberprĂŒfst, nicht als Behebung eines Mangels. Sie verdoppelt die LabelâLatenz ungefĂ€hr und erhöht den Anteil mehrteiliger Namen bei jedem Modell, das nicht ohnehin bei null lag. Ob diese verloren gehen, hĂ€ngt vom Normalisierungs-Modus des Modells ab.
Gemma 4: Labels¶
Models:
- Type: labels
Model: gemma4:latest
Engine: ollama
Run: auto
Service:
Uri: http://ollama:11434/api/generate
Think: "false"
Warum das funktioniert:
- Engine: Verwendet sinnvolle Standardwerte fĂŒr Resolution, Format, Prompt und Options (720âŻpxâThumbnails, JSONâPrompts fĂŒr Labels). Ein eigener Prompt ist nicht notwendig.
- Run:
autolĂ€uft automatisch nach der Indexierung und durch geplante Jobs. Kann zusĂ€tzlich manuell ausgefĂŒhrt werden ïż« Run Modes. - Model:
gemma4:latestist aktuell ein Alias fĂŒrgemma4:e4bund lieferte in unserem Benchmark rund drei Labels pro Bild mit abgestufter Topicality, mit der besseren MotivâAbdeckung der beiden Varianten. Wechsle zugemma4:e2b, wenn du Tempo und ein etwas gröĂeres LabelâSet bevorzugst â es kam im Schnitt auf vier bis fĂŒnf Labels pro Bild bei geringfĂŒgig schlechterer Abdeckung.
Gemma 4: Caption¶
Models:
- Type: caption
Model: gemma4:latest
Engine: ollama
Run: auto
Prompt: >
Create a caption with exactly one sentence in the active voice that
describes the main visual content. Begin with the main subject and
clear action. Avoid text formatting, meta-language, and filler words.
Service:
Uri: http://ollama:11434/api/generate
Think: "false"
Warum das funktioniert:
- Engine: Verwendet 720âŻpxâThumbnails und sinnvolle Standardwerte fĂŒr Format, Prompt und Options. Ein eigener Prompt ist nicht erforderlich, aber möglich.
- Run:
autolĂ€uft automatisch nach der Indexierung und durch geplante Jobs. Kann zusĂ€tzlich manuell ausgefĂŒhrt werden ïż« Run Modes. - Prompt: Nutzt den eingebauten StandardâPrompt. FĂŒr andere Sprachen ergĂ€nze beispielsweise "Respond in German".
Qwen3-VL: Labels¶
Models:
- Type: labels
Model: qwen3-vl:4b-instruct
Engine: ollama
Run: on-demand
Prompt: |
Analyze the image and return JSON label objects with name, confidence (0-1), and topicality (0-1):
- Return AT MOST 3 labels.
- Each label name MUST be a single-word noun in canonical singular form.
- Do NOT repeat the same label name more than once.
- Do NOT add any fields other than name, confidence, topicality.
- Do NOT output any text before or after the JSON.
Options:
Seed: 3407 # Modell-Standard, siehe https://github.com/QwenLM/Qwen3-VL
Temperature: 0.01 # geringe ZufÀlligkeit, weniger Halluzinationen
TopK: 40 # berĂŒcksichtigt nur die Top ~40 Token
TopP: 0.9 # schneidet das Ende der Verteilung ab
MinP: 0.05 # verwirft seltene Token
TypicalP: 1.0 # effektiv deaktiviert
RepeatLastN: 128 # schaut zurĂŒck, um Wiederholungen zu vermeiden
RepeatPenalty: 1.2 # Strafe zur Vermeidung einfacher Schleifen
NumPredict: 512 # verhindert ausufernde Ausgaben
Service:
Uri: http://ollama:11434/api/generate
Think: "false"
Warum das funktioniert:
- Model:
qwen3-vl:4b-instructist eine leichtere Qwen3âVLâVariante. Alternativ kannst duhuihui_ai/qwen3-vl-abliterated:4b-instruct,qwen3-vl:latestoder andere Varianten ausprobieren. - Engine: Wendet sinnvolle Standardwerte fĂŒr Resolution, Format und Options an.
- Run:
on-demanderlaubt manuelle LĂ€ufe, AusfĂŒhrungen durch den MetadataâWorker und geplante Jobs ïż« Run Modes. - Prompt: Begrenzte Latenz, keine Wiederholungen und klare Kontrolle ĂŒber Art und Anzahl der zurĂŒckgegebenen Labels. FĂŒr andere Sprachen siehe SprachunterstĂŒtzung.
Return AT MOST 3 labels: Eine bewusste Obergrenze und der Grund, warum die strikten Options nicht aus dem Ruder laufen. Sie ist zugleich restriktiv: In unserem Benchmark lieferteqwen3-vl:4b-instructmit diesem Prompt rund drei Labels pro Bild, mit einer Vorgabe von 8â15 dagegen rund zehn, wobei die MotivâAbdeckung von 75 % auf 97 % stieg. Wenn du reichhaltigere Labels möchtest, erhöhe die Obergrenze â und rechne mit etwa der zweiâ bis dreifachen Latenz. Den Zuwachs bei der Abdeckung solltest du dabei einordnen: Sie misst die Trefferquote, belohnt also das Benennen des erwarteten Motivs und erkennt kein zusĂ€tzliches, falsches Label. Ein Modell, das um mehr Labels gebeten wird, schneidet teilweise allein durch Raten besser ab.single-word noun in canonical singular form: Behalte diese Anweisung bei, sofern du nicht zusĂ€tzlichNormalize: phrasesetzt. Mit der Standard-Normalisierung fĂŒr selbst gehostete Modelle wird ein zusammengesetzter Name auf ein einzelnes Token reduziert â meist das falsche:ferris wheelwird als Ferris gespeichert,amusement parkals Park. Siehe Normalisierung der LabelâNamen.- Seed: Sorgt fĂŒr stabile, reproduzierbare Labels. Im Beispiel wird der DefaultâSeed der instructâVariante verwendet.
- Temperature, TopP und TopK: Erzwingen eher hÀufige, hochwahrscheinliche Wörter statt kreativer Synonyme.
- MinP: SchlieĂt unwahrscheinliche Tokens aus, also jene seltenen Labels und merkwĂŒrdigen Formulierungen, die du fĂŒr Klassifizierung nicht brauchst.
- RepeatLastN und RepeatPenalty: Stellen sicher, dass Labels eindeutig bleiben, indem Wiederholungen vermieden werden.
- NumPredict: Begrenzt die maximale AusgabelÀnge, um Endloswiederholungen zu vermeiden.
Qwen3-VL: Caption¶
Models:
- Type: caption
Model: qwen3-vl:4b-instruct
Engine: ollama
Run: on-schedule
System: You are an image captioning assistant.
Prompt: |
Write one or two concise sentences that describe the main subject, key actions, and setting of the image:
- Describe only what is clearly visible in the image; do not invent names, ages, or backstories.
- Use natural, fluent language without bullet points or lists.
- Do NOT start with phrases like "The image shows" or "In this picture".
- Do NOT mention camera settings, image quality, filters, or art style unless they are essential to understanding the content.
- Do NOT include quotation marks around the caption.
- Respond with the caption text only, and nothing else.
Options:
Seed: 3407 # Modell-Standard, siehe https://github.com/QwenLM/Qwen3-VL
Temperature: 0.25 # reduziert ZufĂ€lligkeit fĂŒr weniger Halluzinationen
TopK: 20 # entspricht dem Modell-Standard
TopP: 0.8 # entspricht dem Modell-Standard
MinP: 0.05 # schneidet sehr unwahrscheinliche, seltsame Token ab
TypicalP: 1.0 # effektiv deaktiviert; TopP/MinP dominieren
RepeatLastN: 64 # kurze Historie fĂŒr 1â2 SĂ€tze
RepeatPenalty: 1.1 # Strafe gegen Schleifen ohne den Sprachfluss zu stören
NumPredict: 128 # verhindert ausufernde Ausgaben
Service:
Uri: http://ollama:11434/api/generate
Think: "false"
Warum das funktioniert:
- Model: Die Verwendung von
qwen3-vl:4b-instructfĂŒr Labels und Captions vermeidet zeitaufwĂ€ndige Modellwechsel in Ollama. Alternativ kannst duhuihui_ai/qwen3-vl-abliterated:4b-instruct,qwen3-vl:latestoder andere Varianten testen. - Engine: Wendet sinnvolle Standardwerte fĂŒr Resolution, Format und Options an.
- Run:
on-scheduleerlaubt manuelle LĂ€ufe und geplante Jobs ïż« Run Modes. - System: Weist das Modell an, Bilder in natĂŒrlicher Sprache zu beschreiben.
- Prompt: Fordert ein oder zwei SĂ€tze an, die Motiv, Handlung und Umgebung beschreiben, und verbietet MetaâFormulierungen wie "The image showsâŠ", Listen und Zusatzkommentare. So entstehen saubere AltâTextâĂ€hnliche Captions, die direkt in UIs angezeigt werden können. Regeln wie "describe only what is clearly visible" und "do not invent names/ages/backstories" reduzieren Halluzinationen und halten die Beschreibungen sachlich.
- Seed: Sorgt fĂŒr stabile, reproduzierbare Captions fĂŒr dasselbe Bildâ/PromptâPaar â nĂŒtzlich beim Indexieren oder erneuten Generieren. FĂŒr mehr Varianz kannst du den Seed weglassen oder variieren.
- Temperature und MinP: Entfernen den "langen Schwanz" sehr unwahrscheinlicher Tokens (ungewöhnliche Wörter, BruchstĂŒcke) und halten die Auswahl nahe an den wahrscheinlichsten Formulierungen. So erhĂ€ltst du eher einfache, verlĂ€ssliche Captions als kreative Umschreibungen.
- TopK und TopP: Erhöhen StabilitĂ€t und senken das Halluzinationsrisiko im CaptionâKontext.
- RepeatPenalty und RepeatLastN: Verhindern Wiederholungen, ohne den natĂŒrlichen Sprachfluss zu stören.
- NumPredict: Hoch genug fĂŒr ein bis zwei SĂ€tze, aber niedrig genug, um Abschweifungen zu vermeiden.
Nutzungs Tipps¶
Run Modes¶
Um unerwartete Kosten zu vermeiden â insbesondere beim Testen neuer Modelle oder Prompts â setze Run: manual und fĂŒhre die Modelle manuell aus, z.B. mit photoprism vision run -m caption oder photoprism vision run -m labels.
Run: auto fĂŒhrt das Modell automatisch aus, nachdem die Indexierung abgeschlossen ist, um den Import nicht auszubremsen. Gleichzeitig bleiben manuelle und geplante AusfĂŒhrungen möglich.
Existierende Kategorien ersetzen¶
Um Kategorien, die vom eingebauten Klassifizierungsmodell erstellt wurden, zu entfernen, kann folgender Befehl in einem Terminal ausgefĂŒhrt werden
photoprism vision reset -m labels -s image
bevor neue Kategorien mit Ollama erstellt werden
photoprism vision run -m labels
Troubleshooting¶
Konfiguration ĂŒberprĂŒfen¶
Wenn Probleme auftreten, prĂŒfe zuerst, wie PhotoPrism deine vision.ymlâKonfiguration geladen hat. Das geht mit folgendem Befehl:
docker compose exec photoprism photoprism vision ls
Der Befehl gibt die Einstellungen aller unterstĂŒtzten und konfigurierten Modelltypen aus. Vergleiche das Ergebnis mit deiner vision.ymlâDatei, um zu bestĂ€tigen, dass die Konfiguration korrekt geladen wurde, und um ParsingâFehler oder Fehlkonfigurationen zu erkennen.
Test Runs durchfĂŒhren¶
Die folgenden TerminalâBefehle fĂŒhren jeweils einen einzelnen Lauf fĂŒr den angegebenen Modelltyp aus:
photoprism vision run -m labels --count 1 --force
photoprism vision run -m caption --count 1 --force
Wenn du nicht die erwarteten Ergebnisse erhĂ€ltst oder Fehler bemerkst, kannst du die Befehle erneut mit aktiviertem TraceâLogâModus ausfĂŒhren, um Anfrage und Antwort zu untersuchen:
photoprism --log-level=trace vision run -m labels --count 1 --force
photoprism --log-level=trace vision run -m caption --count 1 --force
-
VerfĂŒgbar in unseren Preview-Builds und dem kommenden stabilen Release. FrĂŒhere Versionen reduzieren einen Label-Namen immer auf ein einzelnes Wort und ignorieren diese Einstellung. ↩