PicoSAM3
PicoSAM3 ist ein kompaktes CNN, das aus SAM 2.1 und SAM 3 destilliert wurde und für Box-basierte Region-of-Interest-Segmentierung auf Sensoren wie dem Sony IMX500 entwickelt wurde. LibreYOLO unterstützt es ausschließlich mit Box-Prompts über eine eigene LibreSAM-Factory, getrennt von der Detektor-Factory LibreYOLO().
- Aufgaben
- instance segmentation
- Größen
- pico at 96 px
- Installation
pip install libreyolo- Supportstufe
- Geschwisterstufe, seit v. Eine separate Produktoberfläche mit eigener Factory und eigenem Vertrag.
- Upstream
- PicoSAM3 von ETH Zurich, Apache-2.0. Publikation, Quelle
- Lizenzen
- Code Apache-2.0, Gewichte Apache-2.0. Kommerzielle Nutzung
Installation
PicoSAM3 benötigt das Zusatzpaket sam. Der eigene Gewichtsdownload von
LibreYOLO verwendet weiterhin die Hugging-Face-Werkzeuge aus transformers,
obwohl die Inferenz auf einem nativen CNN ohne transformers läuft.
pip install "libreyolo[sam]"Vorhersage
LibreSAM(...) (oder das familienspezifische LibrePicoSAM3(...)) ist ein
separater Einstiegspunkt neben LibreYOLO(...). Er gibt einen Prompt-basierten
Segmentierer statt eines Detektors zurück, weil ein Vorwärtslauf ohne Prompt
hier keine Aussagekraft hat. Für diese Familie gibt es keinen CLI-Befehl
libreyolo predict. Verwende die Python-API.
from libreyolo import LibreSAM, SAMPLE_IMAGE # PicoSAM3 hat nur die Größe "pico", daher ist kein weiterer Alias nötig.model = LibreSAM("picosam3") # bboxes= ist der einzige unterstützte Prompt: [x1, y1, x2, y2] oder eine# Boxenliste, eine Maske pro Box. Jede Box wird um 10 % erweitert, quadratisch# gemacht, auf das Bild begrenzt und vor dem CNN auf 96x96 skaliert.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy) # Polygon pro Maskeprint(result.boxes.xyxy) # aus der Maske abgeleitete enge Boxfrom libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image() speichert das Quellbild zwischen. PicoSAM3 führt pro Box einen# vollständigen CNN-Vorwärtslauf aus. Dies spart Laden und Dekodieren des Bildes,# nicht wie bei anderen SAM-Familien einen Encoder-Durchlauf.model.set_image(SAMPLE_IMAGE)a = model.predict(bboxes=[300, 200, 900, 700])b = model.predict(bboxes=[100, 100, 400, 400])model.reset_image()PicoSAM3 akzeptiert nur bboxes=. Die Übergabe von points=, labels=,
masks=, text=, multimask=True oder das Auslassen einer Box zum
Segmentieren des gesamten Bildes lösen jeweils einen eindeutigen ValueError
aus, weil diese Modi im Upstream-Modell nicht existieren. conf filtert
anhand der vorhergesagten Maskenqualität (IoU), nicht anhand einer
Erkennungs-Confidence, und muss zwischen 0.0 und 1.0 liegen. Jede Maske
trägt die Klassen-ID 0 mit dem Namen "object". train(), val() und
track() lösen NotImplementedError aus. Verwende LibreSAM2 oder LibreSAM3
für Punkt-, Text-, Masken- oder Alles-segmentieren-Prompts. Unter
Vorhersage findest du die Quelltypen.
Varianten
Es gibt eine Größe, Pico, mit einer festen ROI-Eingabe von 96 px. PicoSAM3 führt pro Box einen vollständigen CNN-Vorwärtslauf aus, statt das gesamte Bild einmal zu kodieren.
Export
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Instance segmentation | Instance segmentation to ONNX: unterstützt | Instance segmentation to TorchScript: nicht unterstützt | Instance segmentation to ExecuTorch: nicht unterstützt | Instance segmentation to TensorRT: nicht unterstützt | Instance segmentation to OpenVINO: nicht unterstützt | Instance segmentation to Paddle: nicht unterstützt | Instance segmentation to MNN: nicht unterstützt | Instance segmentation to RKNN: nicht unterstützt | Instance segmentation to ncnn: nicht unterstützt | Instance segmentation to TFLite: nicht unterstützt | Instance segmentation to CoreML: nicht unterstützt | Instance segmentation to Core AI: nicht unterstützt |
PicoSAM3 ist die einzige Familie im SAM-Tier mit Export: Sie exportiert ihr
rohes 96x96-ROI-CNN nach ONNX, roi_image -> mask_logits, ohne eingebaute NMS
oder Maskennachverarbeitung. Die anderen SAM-Familien lösen bei export()
NotImplementedError aus, weil für ihre Encoder-Decoder-Aufteilung noch kein
Runtime-Exportvertrag definiert ist. Ein exportierter PicoSAM3-Graph wird nicht
wieder über LibreYOLO() geladen. Führe ihn direkt mit einer Runtime wie
onnxruntime aus und verwende dieselbe quadratische ROI-Vorverarbeitung mit
10-%-Rand wie oben.
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opset (standardmäßig 13) und dynamic (standardmäßig True, nur Batch-Achse)# sind die einzigen von dieser Familie akzeptierten Exportargumente.import numpy as npimport onnxruntime as ort # PicoSAM3 exportiert sein rohes 96x96-ROI-CNN: roi_image -> mask_logits.# Es gibt hier keine LibreYOLO-Vor-/Nachverarbeitung zur Wiederverwendung,# weil export() anders als bei einem Detektor-Checkpoint nicht über# LibreYOLO() zurückgeführt wird.session = ort.InferenceSession("LibrePicoSAM3pico.onnx")name = session.get_inputs()[0].nameoutputs = session.run(None, {name: np.zeros((1, 3, 96, 96), dtype=np.float32)}) for meta, array in zip(session.get_outputs(), outputs): print(meta.name, array.shape)Checkpoints
Alle veröffentlichten Gewichtsdateien dieser Familie.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| Instance segmentation | ||
| LibrePicoSAM3.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
- PicoSAM3, ETH Zurich
- Upstream-Lizenz
- Apache-2.0
- Upstream-Quelle
- github.com/pbonazzi/picosam3
- 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 carries a native port of the compact ROI CNN rather than vendoring upstream files unmodified, and downloads LibrePicoSAM3pico.pt from the LibreYOLO Hugging Face org, converted with unchanged tensor values from the pinned pietrobonazzi/picosam3 revision af49e4322b6b7cf448499fee5c073d4576f59444 and tagged Apache-2.0 there. PicoSAM3 is distilled from SAM 2.1 and SAM 3 as teacher models; LibreYOLO does not vendor or redistribute either teacher's code or weights in this family.
PicoSAM3 wurde aus SAM 2.1 und SAM 3 als Lehrermodelle destilliert. LibreYOLO übernimmt oder verteilt in dieser Familie weder Code noch Gewichte dieser Lehrer. Nur das kompakte Schüler-CNN und sein konvertierter Checkpoint werden ausgeliefert.
Zitieren
@article{picosam3_2026,
title={PicoSAM3: Real-Time In-Sensor Region-of-Interest Segmentation},
author={Pietro Bonazzi and Nicola Farronato and Stefan Zihlmann and Haotong Qin and Michele Magno},
journal={IEEE Sensors Journal},
year={2026}
}Aus dem Zitierblock der Autoren unter github.com/pbonazzi/picosam3#readme kopiert.