SAM

SAM (Segment Anything) wandelt einen Punkt- oder Boxklick in eine Objektmaske um. LibreYOLO lädt es über eine eigene LibreSAM-Factory, getrennt von der Detektor-Factory LibreYOLO(), weil ein Prompt-basiertes Modell eine andere Aufrufform benötigt.

Aufgaben
instance segmentation
Größen
base, large, huge at 1024 px
Installation
pip install libreyolo
Supportstufe
Geschwisterstufe, seit v. Eine separate Produktoberfläche mit eigener Factory und eigenem Vertrag.
Upstream
SAM (Segment Anything) von Meta AI Research (FAIR), Apache-2.0. Publikation, Quelle
Lizenzen
Code MIT, Gewichte Apache-2.0. Kommerzielle Nutzung

Installation

SAM benötigt das Zusatzpaket sam, das transformers und timm installiert.

bash
pip install "libreyolo[sam]"

Vorhersage

LibreSAM(...) ist ein separater Einstiegspunkt neben LibreYOLO(...). Er gibt einen Prompt-basierten Segmentierer statt eines Detektors zurück, weil ein Vorwärtslauf ohne räumlichen Prompt hier keine Aussagekraft hat. Für diese Familie gibt es keinen CLI-Befehl libreyolo predict. Verwende die Python-API.

Punkt- und Box-Prompts
from libreyolo import LibreSAM, SAMPLE_IMAGE # "base" lädt facebook/sam-vit-base bei der ersten Verwendung automatisch.# Weitere Größen: "large", "huge" (auch "b"/"l"/"h").model = LibreSAM("base") # Ein Punkt-Prompt: [x, y] in Pixelkoordinaten, Label 1 = Vordergrund.result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy)      # Polygon pro Maskeprint(result.boxes.xyxy)    # aus der Maske abgeleitete enge Box # Ein Box-Prompt anstelle eines Punkts.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700]) # Ohne Prompt wird das gesamte Bild segmentiert (ein vereinfachter automatischer# Maskengenerator, nicht die vollständige Referenzimplementierung).result = model.predict(SAMPLE_IMAGE)
Einmal kodieren, mehrfach prompten
from libreyolo import LibreSAM, SAMPLE_IMAGE model = LibreSAM("base") # Der Bild-Encoder ist der aufwendige Teil. set_image() führt ihn einmal aus;# jeder folgende predict()-Aufruf nutzt das zwischengespeicherte Embedding.model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()

Ein Punkt-Prompt akzeptiert [x, y] für ein Objekt, [[x, y], ...] für mehrere oder NumPy-Arrays. labels kennzeichnet jeden Punkt mit 1 (Vordergrund) oder 0 (Hintergrund) und verwendet standardmäßig für alle den Vordergrund. Ein Box-Prompt akzeptiert [x1, y1, x2, y2] oder eine Liste von Boxen und erzeugt eine Maske pro Box. Wenn du beide Prompt-Arten auslässt, wird das gesamte Bild segmentiert. Dazu wird ein dichtes Raster als Prompt verwendet, und sichere, nicht überlappende Masken werden beibehalten. Dieser Modus „alles segmentieren“ ist gegenüber dem automatischen Maskengenerator der Referenz vereinfacht und kann dicht besetzte Szenen zu grob segmentieren. Ein echter Punkt- oder Box-Prompt ist daher der präzise Pfad. conf filtert anhand der vorhergesagten Maskenqualität (IoU), nicht anhand einer Erkennungs-Confidence. Übergib 0.0, um alle Kandidaten zu behalten. multimask=True gibt alle drei Ganzes-gegen-Teil-Mehrdeutigkeitsmasken von SAM pro Prompt zurück statt nur der besten. device= verschiebt das Modell und bei einer aktiven set_image()-Sitzung auch das zwischengespeicherte Embedding. Jede Maske trägt die Klassen-ID 0 mit dem Namen "object", weil eine Prompt-basierte Maske keine feste Klassenmenge besitzt. train(), val(), export() und track() lösen für diese Familie alle NotImplementedError aus. SAM unterstützt in LibreYOLO nur Vorhersagen, und Video-Tracking liegt außerhalb des Umfangs. Unter Vorhersage findest du die Quelltypen.

Varianten

Es gibt drei ViT-Bild-Encoder-Größen: Base, Large und Huge, alle mit einer festen Eingabe von 1024 px. Für diese Familie wurde noch kein Accuracy- oder Latenzbenchmark veröffentlicht. Die Wahl der Größe tauscht daher direkt Encoder-Gewicht gegen Maskenqualität. Base lässt sich am schnellsten kodieren, Huge ist am schwersten.

Lizenzierung

Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.

Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.

Originalarbeit
SAM (Segment Anything), Meta AI Research (FAIR)
Upstream-Lizenz
Apache-2.0
LibreYOLO-Code
MIT
Gewichte
Apache-2.0, von den Autoren verbreitet. LibreYOLO hostet oder spiegelt sie nicht.
Einordnung
Apache-2.0 is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy you redistribute, and it grants a patent license. LibreYOLO does not mirror SAM-1 weights on its own Hugging Face org: LibreSAM downloads the base, large and huge checkpoints directly from Meta's own facebook/sam-vit-base, facebook/sam-vit-large and facebook/sam-vit-huge repositories, each tagged Apache-2.0 there as well.

LibreYOLO hostet keine eigene Kopie der SAM-1-Gewichte. LibreSAM("base"), "large" und "huge" laden direkt aus Metas eigenen Repositorys facebook/sam-vit-base, facebook/sam-vit-large und facebook/sam-vit-huge auf Hugging Face. Dort ist jedes unabhängig von LibreYOLO als Apache-2.0 gekennzeichnet.

Zitieren

@article{kirillov2023segany,
  title={Segment Anything},
  author={Kirillov, Alexander and Mintun, Eric and Ravi, Nikhila and Mao, Hanzi and Rolland, Chloe and Gustafson, Laura and Xiao, Tete and Whitehead, Spencer and Berg, Alexander C. and Lo, Wan-Yen and Doll{\'a}r, Piotr and Girshick, Ross},
  journal={arXiv:2304.02643},
  year={2023}
}

Aus dem Zitierblock der Autoren unter github.com/facebookresearch/segment-anything#citing-segment-anything kopiert.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.