CommunityBildgithub.com

clip-box

Lokalisiert ein Objekt in einem Bild. Nutzt h2oai/h2o-lightning-4b, um einen Begrenzungsrahmen zu einem Referenzausdruck zu finden („der Gesamtbetrag“, „das rote Quadrat“, „die Kaffeetasse“) und liefert Bildanteile, Pixelkoordinaten, eine kalibrierte Konfidenz (P(IoU ≥ 0.5)) und eine `present`-Wahrscheinlichkeit, die die Antwort absichert.

Was ist clip-box?

`clip-box` ist ein Skill zur Lokalisierung von Objekten in Bildern auf Basis des Entscheidungsmodells h2o-lightning-4b. Der Skill beantwortet die Frage „Wo ist X“ in einem Bild, indem er einen Begrenzungsrahmen (bounding box) um das genannte Referenzobjekt legt. Neben den relativen und absoluten Pixelkoordinaten liefert er zwei zentrale Metriken: die Konfidenz (`confidence`) als Wahrscheinlichkeit für IoU ≥ 0.5 und die Anwesenheitswahrscheinlichkeit (`present`), die angibt, ob das Zielobjekt überhaupt sichtbar ist. Der Skill eignet sich besonders für eindeutige Objekte, Symbole, Formen und einzelne Bilder, während er bei dichtem Kleingedrucktem auf Quittungen schwächelt. Er arbeitet als dünne Einstiegsschicht (`shim`) über dem eigentlichen Entscheidungsendpunkt und kann über Kommandozeile oder API mit JSON-Ausgabe und Optionen wie `--crop`, `--min-present` und `--min-confidence` gesteuert werden. Unterstützt werden CPU-, CUDA- und Vulkan-Backends, und der Skill ist Teil des `decision-model`-Ökosystems, das auch `bool`, `choice` und `score` bietet.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rodritimecoder/agent-skills/tree/HEAD/multimodal/clip-box

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

clip-box — wo ist es in diesem Bild?

Dies ist die „Wo ist X“-Eingangstür. Die Implementierung befindet sich in decision-model: Der gleiche Client beantwortet bool, choice, score und box, und clip-box ist ein dünner Einstiegspunkt, der dieses Vokabular routbar hält und auf einen eigenständigen Shim verweisen kann, wenn ein anderes Modell den Entscheidungsplatz belegt.

clip-box --image scene.png --target "das rote Quadrat"          # Slot-Shim auf :8083
clip-box --image scene.png --target "das rote Quadrat" --port 8761   # eigenständiger Shim
decision-model box --image scene.png --target "das rote Quadrat"     # gleiche Sache

h2o-lightning ist ein 4B Entscheidungsmodell: Es beantwortet typisierte Fragen mit Wahrscheinlichkeiten und generiert keine Prosa. Seine box-Frage gibt ein Rechteck anstelle eines Labels und drei Zahlen zurück, die wichtiger sind als das Rechteck:

FeldBedeutung
boxlinks, oben, rechts, unten als Anteile des Bildes, von oben links
confidenceP(IoU ≥ 0.5) — ein Entscheidungsausdruck auf dem Bild mit eingezeichnetem Rechteck, keine vom Modell erzählte Zahl
presentP(das Ziel ist überhaupt sichtbar) — ein separater Ausdruck auf dem unberührten Bild
foundob ein Rechteck erzeugt wurde; ein Fehlschlag gibt das gesamte Bild mit Konfidenz 0 zurück

Entscheiden Sie anhand von present, nicht von found. Wird nach einem blauen Fahrrad in einer Szene gefragt, in der es keines gibt, liefert das Modell ein selbstbewusst aussehendes Rechteck um etwas anderes mit found: true und present: 0,111. present sagt die Wahrheit.

Verwendung

# Starte die API (Box-Fragen sind aktiv; der Slot-Front-Port ist :8083)
h2o-serve --port 8083          # CPU, Q8_0
h2o-serve --backend vulkan     # AMD GPUs: baut das fixierte Vulkan-Backend einmalig auf
h2o-serve --status
h2o-serve --stop

# Frage stellen
clip-box --image scene.png --target "das rote Quadrat"
# ACCEPT  box=(0,247, 0,247) -> (0,753, 0,753)  confidence=0,651  present=0,885

clip-box --image scene.png --target "das blaue Fahrrad"   # nicht vorhanden -> beendet mit 2
clip-box --image receipt.png --target "der Gesamtbetrag" # confidence 0,163 < 0,30 -> abgelehnt
clip-box --image scene.png --target "das rote Quadrat" --json --crop /tmp/square.png

--json gibt accepted, reason, box, pixels (berechnet aus der tatsächlichen Bildgröße), confidence, present, found und das model, das geantwortet hat, zurück. Exit-Code 0 akzeptiert, 2 lehnt ab, 1 ist ein Anfragefehler.

--min-present (Standard 0,5) und --min-confidence (Standard 0,30) setzen die Schwellwerte; beide sind auch als Umgebungsvariablen verfügbar (BOX_MIN_PRESENT, BOX_MIN_CONFIDENCE). --crop schreibt das akzeptierte Rechteck; es benötigt Pillow.

Fähigkeit, keine Annahme

box ist eine Shim-Funktion, keine Protokollfunktion: llama.cpps eigenes /v1/systemone akzeptiert nur choice, score und noul. Der Entscheidungsslot rotiert zwischen fünf Kandidaten, daher:

decision-model caps
# model       /models/h2o-lightning-4b-Q4_K_M.gguf
# slot        :8083  (box auf :8083)
# primitives  bool, choice, score, box

Wenn der Belegung kein h2o ist, listet caps kein box auf, und box lehnt mit dem Namen des bedienten Modells ab — anstatt eine Frage zu stellen, die dieser Endpunkt nicht beantworten kann.

Wofür es tatsächlich gut ist

Gemessen auf dieser Workstation (Q8_0, CPU-Backend), synthetische Szenen mit bekannter Wahrheit:

ZielIoUconfidencepresent
rotes Quadrat, 512×512 zentriert0,9760,6510,885
rotes Rechteck, 512×1024 hoch0,8770,6690,897
rotes Rechteck, 1024×512 breit0,8480,7220,895
kleines rotes Quadrat in unübersichtlicher Szene0,6030,3590,896
„das blaue Fahrrad“ (nicht vorhanden)—0,1880,111
„der Gesamtbetrag“ auf einer QuittungFehlschlag (Rechteck unter dem Gesamtbetrag)0,1440,899

Auffällige Objekte, Symbole, Formen, Einzelbilder: gut, Seitenverhältnis wird korrekt behandelt. Dichter Kleingedruckter auf einer Quittung: es scheitert, und seine niedrige Konfidenz sagt dies. Für einen Wert auf einer Quittung zuschneiden mit der Umgebung des Gesamtbetrags oder die choice-Frage der Entscheidungs-API verwenden („Was ist der GESAMTBETRAG? Zwischensumme/Gesamtsumme/Steuer“), die auf demselben Bild korrekt bewertet wurde.

Die Falle, die dieser Skill abfängt

Pillow. Der Shim zeichnet das Rechteck vor dem Tightness-Ausdruck und gibt bei ImportError None zurück, sodass ein Python ohne Pillow jede Box mit confidence: 0.0 beantwortet. h2o-serve erstellt eine eigene venv und prüft den Import.

Dateien

PfadRolle
scripts/clip_box.pyEinstiegspunkt — hebt --port/--host, delegiert an decision-model box
../hardware/decision-model/scripts/decision_model.pyder Client: eine Box-Frage, zwei Schwellwerte, Zuschnitt, Exit-Codes
../hardware/decision-model/scripts/h2o_serve.pyder Starter: fixiertes Bootstrap per Hash, Pillow-sichere venv, CPU/CUDA/Vulkan-Backend, --status, --stop

Der Zustand lebt in ~/.cache/h2o_lightning_gguf (Gewichte + fixiertes Backend) und ~/.local/share/h2o-lightning/venv. Nichts außerhalb dieser beiden Pfade wird berührt.

Protokollhinweise

  • Der box.mode des Shims ist hier generate: eine eingeschränkte Generierung in Qwens bbox_2d-Konvention (0–1000, x zuerst), geparst und begrenzt. edges/hybrid benötigen ein Modell, das auf Kantenausgaben trainiert wurde; behalten Sie generate bei dieser Version bei.
  • confidence ist eine Wahrscheinlichkeit mit eigener Temperatur, 1.0 bis zur Anpassung, also konservativ: ein nahezu perfektes Rechteck auf einem großen Quadrat ergibt 0,65, nicht 0,95.
  • Standardmäßig ein Bild pro Anfrage; der Shim akzeptiert bis zu 8 mit images: und das Backend wird mit --image-max-tokens 1024 gestartet.
  • Die Entscheidungsseite desselben Servers beantwortet choice / noul / score auf Text und Bilder unter /v1/systemone; für kalibrierte Entscheidungen auf Text bevorzugen Sie pplx-decider (Entscheidungsindex 60,06 vs. 51,38 hier). Verwenden Sie dieses Modell für Geometrie, nicht für Routing.

Verwandte Skills