PicoSAM3

PicoSAM3 è una CNN compatta distillata da SAM 2.1 e SAM 3, pensata per la segmentazione di regioni di interesse guidata da box su sensori come il Sony IMX500. LibreYOLO la supporta tramite una factory LibreSAM dedicata, separata dalla factory di detector LibreYOLO(), e solo con prompt di box.

Task
instance segmentation
Dimensioni
pico at 96 px
Installa
pip install libreyolo
Livello di supporto
Livello parallelo, dalla v. Un'interfaccia di prodotto separata, con una propria factory e un proprio contratto.
Origine
PicoSAM3 di ETH Zurich, Apache-2.0. Articolo, sorgente
Licenze
Codice Apache-2.0, pesi Apache-2.0. Uso commerciale

Installazione

PicoSAM3 richiede l'extra sam: il download dei pesi di LibreYOLO passa ancora dagli strumenti Hugging Face di transformers, anche se l'inferenza gira su una CNN nativa che non usa transformers.

bash
pip install "libreyolo[sam]"

Predizione

LibreSAM(...) (o il LibrePicoSAM3(...) specifico della famiglia) è un punto di ingresso distinto da LibreYOLO(...): restituisce un segmentatore guidato da prompt invece di un detector, perché qui un forward pass non ha senso senza un prompt. Per questa famiglia non esiste il comando CLI libreyolo predict; usa l'API Python.

Prompt di box
from libreyolo import LibreSAM, SAMPLE_IMAGE # PicoSAM3 ha una sola taglia, "pico", quindi non serve nessun altro alias.model = LibreSAM("picosam3") # bboxes= è l'unico prompt supportato: [x1, y1, x2, y2] oppure una lista# di box, una maschera per box. Ogni box viene espanso del 10%, reso# quadrato, ritagliato sull'immagine e portato a 96x96 prima della CNN.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy)      # un poligono per mascheraprint(result.boxes.xyxy)    # box aderente derivato dalla maschera
Codifica una volta, prompt multipli
from libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image() mette in cache l'immagine di origine; PicoSAM3 esegue un# forward completo della CNN per box, quindi risparmia il caricamento e la# decodifica, non un passaggio di encoder come nelle altre famiglie SAM.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 accetta solo bboxes=; passare points=, labels=, masks=, text=, multimask=True oppure omettere il box per segmentare tutto solleva in ogni caso un ValueError esplicito, perché nessuna di queste modalità esiste nel modello originale. conf filtra in base alla qualità predetta della maschera (IoU), non a una confidenza di rilevamento, e deve stare tra 0.0 e 1.0. Ogni maschera porta l'id di classe 0, di nome "object". train(), val() e track() sollevano NotImplementedError; usa LibreSAM2 o LibreSAM3 per prompt di punto, di testo, di maschera o per segmentare tutto. Vedi predizione per i tipi di sorgente.

Varianti

Una sola taglia, pico, con un input ROI fisso di 96 px: PicoSAM3 esegue un forward completo della CNN per ogni box invece di codificare una volta sola l'intera immagine.

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
Instance segmentationInstance segmentation to ONNX: supportatoInstance segmentation to TorchScript: non supportatoInstance segmentation to ExecuTorch: non supportatoInstance segmentation to TensorRT: non supportatoInstance segmentation to OpenVINO: non supportatoInstance segmentation to Paddle: non supportatoInstance segmentation to MNN: non supportatoInstance segmentation to RKNN: non supportatoInstance segmentation to ncnn: non supportatoInstance segmentation to TFLite: non supportatoInstance segmentation to CoreML: non supportatoInstance segmentation to Core AI: non supportato

PicoSAM3 è l'unica famiglia del livello SAM che si esporta: porta in ONNX la sua CNN ROI grezza a 96x96, roi_image -> mask_logits, senza NMS né postprocessing delle maschere incorporati. Le altre famiglie SAM sollevano NotImplementedError su export(), perché la loro separazione tra encoder e decoder non ha ancora un contratto di esportazione definito per il runtime. Un grafo PicoSAM3 esportato non si ricarica tramite LibreYOLO(); eseguilo direttamente con un runtime come onnxruntime, applicando lo stesso preprocessing di ROI quadrata con margine del 10% mostrato sopra.

Python
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opset (default 13) e dynamic (default True, solo l'asse del batch) sono# gli unici argomenti di esportazione accettati da questa famiglia.
Usare il file esportato
import numpy as npimport onnxruntime as ort # PicoSAM3 esporta la sua CNN ROI grezza a 96x96: roi_image -> mask_logits.# Qui non c'è nessun pre/postprocessing lato LibreYOLO da riutilizzare,# perché export() non viene instradato di nuovo attraverso LibreYOLO()# come succede per il checkpoint di un detector.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)

Checkpoint

Tutti i file di pesi pubblicati per questa famiglia.

FileIngresso (px)Licenza dei pesi
Instance segmentation
LibrePicoSAM3.ptapache-2.0

Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.

Licenza

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
PicoSAM3, ETH Zurich
Licenza upstream
Apache-2.0
Codice LibreYOLO
MIT
Pesi
Apache-2.0, ripubblicati su huggingface.co/LibreYOLO
Interpretazione
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 è distillato da SAM 2.1 e SAM 3 usati come modelli teacher. LibreYOLO non incorpora né ridistribuisce il codice o i pesi di nessuno dei due teacher in questa famiglia; vengono distribuiti solo la CNN student compatta e il suo checkpoint convertito.

Citazione

@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}
}

Copiato dal blocco di citazione degli autori disponibile su github.com/pbonazzi/picosam3#readme.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.