SAM 2
SAM 2 erweitert SAM um eine Streaming-Memory-Architektur für Video und wandelt einen Punkt- oder Boxklick in eine Objektmaske um. LibreYOLO unterstützt den Bildsegmentierungspfad über eine eigene LibreSAM-Factory, getrennt von der Detektor-Factory LibreYOLO().
- Aufgaben
- instance segmentation
- Größen
- Installation
pip install libreyolo- Supportstufe
- Geschwisterstufe, seit v. Eine separate Produktoberfläche mit eigener Factory und eigenem Vertrag.
- Upstream
- SAM 2 von Meta FAIR, Apache-2.0. Publikation, Quelle
- Lizenzen
- Code MIT, Gewichte Apache-2.0. Kommerzielle Nutzung
Installation
SAM 2 benötigt das Zusatzpaket sam, das transformers und timm installiert.
pip install "libreyolo[sam]"Vorhersage
LibreSAM(...) (oder das familienspezifische LibreSAM2(...)) 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. Es wird nur die Bildsegmentierung
unterstützt. Das Video-Memory-Tracking von SAM 2 liegt hier außerhalb des Umfangs.
from libreyolo import LibreSAM, SAMPLE_IMAGE # Größenaliasse: "sam2-tiny", "sam2-small", "sam2-base-plus",# "sam2-large" (auch Kurzformen "sam2-t"/"sam2-s"/"sam2-bp"/"sam2-l").model = LibreSAM("sam2-large") # 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)from libreyolo import LibreSAM2, SAMPLE_IMAGE # Die familienspezifische Klasse erhält die Größe ohne Präfix "sam2-".model = LibreSAM2("large") # 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. LibreYOLO unterstützt hier die
Bildinferenz. Unter Vorhersage findest du die Quelltypen.
Varianten
Es gibt vier Größen mit Hiera-Backbone: Tiny, Small, Base-plus und Large, alle mit derselben Eingabeauflösung. 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. Tiny lässt sich am schnellsten kodieren, Large ist am schwersten.
Checkpoints
Alle veröffentlichten Gewichtsdateien dieser Familie.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| Instance segmentation | ||
| LibreSAM2tiny.pt | apache-2.0 | |
| LibreSAM2small.pt | apache-2.0 | |
| LibreSAM2base-plus.pt | apache-2.0 | |
| LibreSAM2large.pt | apache-2.0 | |
Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.
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 2, Meta FAIR
- Upstream-Lizenz
- Apache-2.0
- Upstream-Quelle
- github.com/facebookresearch/sam2
- LibreYOLO-Code
- MIT
- Gewichte
- Apache-2.0, erneut unter huggingface.co/LibreYOLO veröffentlicht
- 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 loads SAM 2 through the Apache-2.0 Transformers implementation and republishes Transformers-compatible snapshots of the tiny, small, base-plus and large checkpoints on its own Hugging Face org, tagged Apache-2.0 there as well. LibreYOLO ships image inference only; SAM 2's video-memory tracking is out of scope for this family.
Zitieren
@article{ravi2024sam2,
title={SAM 2: Segment Anything in Images and Videos},
author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
journal={arXiv preprint arXiv:2408.00714},
url={https://arxiv.org/abs/2408.00714},
year={2024}
}Aus dem Zitierblock der Autoren unter github.com/facebookresearch/sam2#citing-sam-2 kopiert.