Als Markdown anzeigen

Vision-Language-API

LibreVLM lädt ein generatives Vision-Language-Modell und steuert es als Objektdetektor. Die Klassenliste ist ein Prompt und kein fester Head. Das Modell gibt dieselben Results wie jede andere Familie zurück.

Installation

Die Stufe benötigt das Extra vlm.

bash
pip install 'libreyolo[vlm]'

Die Factory

python
LibreVLM(model: str = "qwen3-vl-4b", **kwargs) -> LibreVLMModel

model ist ein Alias und kein Pfad. **kwargs erreicht den Konstruktor der Familie. Dieser nimmt device, names (das anfängliche Vokabular, gleichbedeutend mit einem Aufruf von set_classes nach dem Laden), prompt (Überschreibung des Erkennungs-Prompts) und max_new_tokens entgegen. Ein unbekannter Alias löst einen ValueError aus, der alle Aliasse aufführt.

Mit offenem Vokabular erkennen
from libreyolo import LibreVLM, SAMPLE_IMAGE model = LibreVLM("lfm2-vl-450m")model.set_classes(["person", "skateboard"]) result = model.predict(SAMPLE_IMAGE)for box, cls in zip(result.boxes.xyxy, result.boxes.cls):    print(result.names[int(cls)], box.tolist())
Freie Frage stellen
from libreyolo import LibreVLM, SAMPLE_IMAGE model = LibreVLM("lfm2-vl-450m")print(model.chat(SAMPLE_IMAGE, "How many people are in this image?"))

Aliasse

FamilieAliasseGrößenGewichte
Qwen3-VLqwen3-vl, qwen3-vl-2b, qwen3-vl-4b, qwen3-vl-8b2b, 4b, 8bQwen/Qwen3-VL-2B-Instruct, -4B-, -8B-
LFM2-VLlfm2-vl, lfm2-vl-450m, lfm2-vl-1.6b450m, 1.6bLiquidAI/LFM2.5-VL-450M, -1.6B
InternVL3internvl3, internvl3-1b, internvl3-2b, internvl3-8b1b, 2b, 8bOpenGVLab/InternVL3-1B-hf, -2B-hf, -8B-hf
SmolVLM2smolvlm2, smolvlm2-2.2b, smolvlm2-500m2.2b, 500mHuggingFaceTB/SmolVLM2-2.2B-Instruct, SmolVLM2-500M-Video-Instruct
Florence-2florence-2, florence2, florence-2-base, florence-2-largebase, largeflorence-community/Florence-2-base, -large
Kosmos-2kosmos-2, kosmos2224microsoft/kosmos-2-patch14-224
LocateAnythinglocate-anything, locateanything, locate-anything-3b, locateanything-3b3bnvidia/LocateAnything-3B
SenseNova-Visionsensenova-vision, sensenova-vision-7b, sensenovavision7bLibreYOLO/SenseNovaVision7b
WeVisOne-VLwevisone-vl, wevisone, wevisonevl, wevisone-vl-2b, wevisone-vl-4b2b, 4btencent/WeVisOne-VL-2B, -4B
LibreMODUSlibremodus, libremodus-14b-a7b, modus, modus-14b-a7b14b-a7bFestgelegter Upstream-Snapshot

Der Standardalias lautet qwen3-vl-4b. Der jeweilige Standardalias einer Familie verwendet die zuerst aufgeführte Größe: qwen3-vl wird zu 4b, lfm2-vl zu 450m, internvl3 zu 2b, smolvlm2 zu 2.2b, florence-2 zu base und wevisone-vl zu 2b.

LibreVLM, LibreLFM2VL, LibreQwen3VL, LibreSmolVLM2, LibreInternVL3, LibreFlorence2, LibreKosmos2, LibreLocateAnything, LibreWeVisOneVL und LibreMODUS (auch LibreModus geschrieben) werden auf Paketebene exportiert.

Die Erkennung umfasst außerdem north-micro-vision, gemma-4-e2b, gemma-4-e4b, moondream-2, moondream-3 und lfm2-vl-3b. Der Alias gemma-4 ohne Zusatz wählt E4B. Molmo2-Aliasse sind molmo2-4b, molmo2-8b und molmo2-o-7b; Standard ist 4B. Aliasse legen die Weiterleitung fest, sagen aber nicht aus, dass jeder entfernte Snapshot heruntergeladen und getestet wurde. moondream-3 lädt in 1.6.0 nicht: Seinem Mirror fehlen Gewichts-Shards.

Aufgaben

Die unterstützten Aufgaben hängen von der Modellfamilie ab. Diese Adapter unterstützen mehrere Aufgaben:

FamilieUnterstützte Aufgaben
LocateAnythingdetect, point
SenseNova-Visiondetect, segment, panoptic, pose, point, depth, ocr
WeVisOne-VLdetect, point, segment, matte, ocr

Da die Aufgabe durch einen Prompt gesteuert und nicht fest in einen Checkpoint integriert ist, kann sie bei einem geladenen Modell gewechselt werden:

python
model.set_task(task: str) -> LibreVLMModel

Die Aufgabe wird anhand der von der Familie unterstützten Liste validiert, bleibt für spätere Aufrufe von predict() und track() aktiv und gibt das Modell zurück, damit Aufrufe verkettet werden können.

Molmo2 liefert Punkte und benötigt {label} in eigenen Pointing-Vorlagen. Bei WeVisOne-VL sendet referring=True in detect eine Generierung je Phrase, und sein segment, matte sowie die referenzierende Erkennung lösen ohne Vokabular ValueError aus. Moondream unterstützt Erkennung, Punkte und nativen Chat. Verwende LibreGround für Anweisung-zu-Klick-Anfragen.

set_classes

python
model.set_classes(classes: list[str]) -> LibreVLMModel

Legt das offene Vokabular fest. Beliebige Wörter funktionieren, da das Modell mit ihnen gepromptet und nicht durch einen festen Head eingeschränkt wird. Die Liste darf nicht leer sein, und ihre Einträge müssen beim Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung eindeutig sein. Ein einfacher String löst TypeError aus, da er sonst in Klassen aus einzelnen Zeichen aufgeteilt würde. Das Vokabular bleibt aktiv. Lege es einmal nach dem Laden fest, und es gilt bis zur nächsten Änderung.

chat

python
model.chat(image, prompt, max_new_tokens=None, color_format="auto") -> str

Unverarbeitete multimodale Generierung: Bild und Prompt hinein, decodierter Text unverändert heraus. Dies ist der Ausweg unterhalb der komfortablen Erkennung für freie Fragen, Zählaufgaben oder ein Ausgabeformat, das der Erkennungs-Wrapper nicht abdeckt. max_new_tokens fällt auf den Wert MAX_NEW_TOKENS der Familie zurück, der in der Basisklasse 1024 beträgt. Die Decodierung verwendet Greedy Decoding mit einer leichten Wiederholungsstrafe.

Confidence

Die generierte Ausgabe besitzt keine kalibrierte Confidence pro Box. Diese Version weist einen konstanten Platzhalter zu, damit predict, Zeichnen und track funktionieren. Dadurch ist die Filterung mit conf= und mAP eher formal als aussagekräftig. Aus demselben Grund löst val() einen Fehler aus: Eine COCO-mAP auf Platzhalter-Scores wäre irreführend.

Vorhersage und Tracking

Die normale Vorhersageschnittstelle gilt, und track() funktioniert. Ein VLM-Detektor kann daher in dieselbe Pipeline wie jede andere Familie eingesetzt werden. Zwei Richtlinien auf Klassenebene unterscheiden sich von einem Convolutional Detector. Test-Time-Augmentierung ist deaktiviert, weil eine Multi-Scale-Augmentierung für einen Generator mit fester Auflösung nicht sinnvoll ist. Vorhersagen in Batches sind ebenfalls deaktiviert, da die Generierung autoregressiv ist und die Vorverarbeitung eine Text-und-Bild- Codierung statt eines stapelbaren Bildtensors zurückgibt.

Nicht unterstützte Funktionen

Export und Validierung der Erkennungs-mAP werden nicht unterstützt. Die Trainingsunterstützung ist auf den folgenden Qwen3-VL-Workflow beschränkt.

Remote-Code

Jede ausgelieferte Familie wird über eine native Modellklasse geladen. LibreYOLO führt daher standardmäßig keinen Code eines Drittanbieter-Repositorys aus. Eine Familie, die ihn wirklich benötigt, muss sich ausdrücklich dafür entscheiden und eine Snapshot-Revision festlegen. LocateAnything ist der einzige solche Fall und verwendet den Commit c32291ca5e996f5a7a485845b4f57a233936bba0.

LibreMODUS ist eine ausdrückliche Ausnahme vom Checkpoint-Schema. Sein Alias wird zu einem Verzeichnis festgelegter Upstream-Dateien statt einer LibreYOLO-.pt aufgelöst. LibreYOLO ergänzt weder v1.0-Metadaten noch veröffentlicht es die Dateien erneut.

Training

Qwen3-VL unterstützt LoRA für Erkennung über train(data=...) nach Installation von libreyolo[vlm-train]. Es friert den Vision-Tower ein, wählt die besten Checkpoints anhand des Validierungs-Losses und speichert Checkpoint-Verzeichnisse. Siehe VLM-Fine-Tuning.

Aliasse aus libreyolo/models/vlm/__init__.py; Repositorys, Größen und Aufgabenlisten aus den Familienmodulen unter libreyolo/models/vlm/ sowie libreyolo/models/sensenova/model.py; Aufrufregeln und Ausnahmen aus libreyolo/models/vlm/base.py, jeweils für v1.6.0.