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.

bash
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.

Box-Prompt
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 Box
Einmal kodieren, mehrfach prompten
from 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

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
Instance segmentationInstance segmentation to ONNX: unterstütztInstance segmentation to TorchScript: nicht unterstütztInstance segmentation to ExecuTorch: nicht unterstütztInstance segmentation to TensorRT: nicht unterstütztInstance segmentation to OpenVINO: nicht unterstütztInstance segmentation to Paddle: nicht unterstütztInstance segmentation to MNN: nicht unterstütztInstance segmentation to RKNN: nicht unterstütztInstance segmentation to ncnn: nicht unterstütztInstance segmentation to TFLite: nicht unterstütztInstance segmentation to CoreML: nicht unterstütztInstance 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.

Python
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.
Exportierte Datei verwenden
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.

DateiEingabe (px)Lizenz der Gewichte
Instance segmentation
LibrePicoSAM3.ptapache-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
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.

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.