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.
- 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.
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.
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 mascherafrom 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
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Instance segmentation | Instance segmentation to ONNX: supportato | Instance segmentation to TorchScript: non supportato | Instance segmentation to ExecuTorch: non supportato | Instance segmentation to TensorRT: non supportato | Instance segmentation to OpenVINO: non supportato | Instance segmentation to Paddle: non supportato | Instance segmentation to MNN: non supportato | Instance segmentation to RKNN: non supportato | Instance segmentation to ncnn: non supportato | Instance segmentation to TFLite: non supportato | Instance segmentation to CoreML: non supportato | Instance 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.
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.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.
| File | Ingresso (px) | Licenza dei pesi |
|---|---|---|
| Instance segmentation | ||
| LibrePicoSAM3.pt | apache-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
- Sorgente upstream
- github.com/pbonazzi/picosam3
- 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.