PicoSAM3
PicoSAM3 est un CNN compact distillé à partir de SAM 2.1 et SAM 3, conçu pour la segmentation de régions d'intérêt guidée par boîte sur des capteurs tels que le Sony IMX500. LibreYOLO le prend en charge par une factory LibreSAM dédiée, distincte de la factory de détecteurs LibreYOLO(), et uniquement avec des requêtes par boîte.
- Tâches
- instance segmentation
- Tailles
- pico at 96 px
- Installer
pip install libreyolo- Niveau de support
- Niveau parallèle, depuis v. Une interface produit distincte avec sa propre factory et son propre contrat.
- Licences
- Code Apache-2.0, poids Apache-2.0. Usage commercial
Installer
PicoSAM3 nécessite l'extra sam : le téléchargement de poids propre à
LibreYOLO passe toujours par les outils Hugging Face de transformers, même si
l'inférence s'exécute sur un CNN natif indépendant de transformers.
pip install "libreyolo[sam]"Prédire
LibreSAM(...) (ou LibrePicoSAM3(...), propre à la famille) constitue un
point d'entrée distinct de LibreYOLO(...) : il renvoie un segmenteur guidable
et non un détecteur, car une passe n'a ici aucun sens sans requête. Il n'existe
pas de commande CLI libreyolo predict pour cette famille ; utilisez l'API
Python.
from libreyolo import LibreSAM, SAMPLE_IMAGE # PicoSAM3 n'a qu'une taille, "pico", aucun autre alias n'est nécessaire.model = LibreSAM("picosam3") # bboxes= est la seule requête prise en charge : [x1, y1, x2, y2] ou une# liste de boîtes, un masque par boîte. Chaque boîte est agrandie de 10 %,# rendue carrée, limitée à l'image et redimensionnée à 96x96 avant le CNN.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy) # un polygone par masqueprint(result.boxes.xyxy) # boîte ajustée dérivée du masquefrom libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image() met l'image source en cache ; PicoSAM3 exécute une passe CNN# complète par boîte. Cela évite le chargement/décodage de l'image, pas une# passe d'encodeur comme pour les autres familles 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 accepte uniquement bboxes=. Fournir points=, labels=, masks=,
text=, multimask=True ou omettre la boîte pour tout segmenter lève dans tous
les cas une ValueError explicite, car aucun de ces modes n'existe dans le
modèle amont. conf filtre selon la qualité prédite du masque (IoU), et non une
confiance de détection, et doit être compris entre 0.0 et 1.0. Chaque masque
porte l'identifiant de classe 0, nommé "object". train(), val() et
track() lèvent NotImplementedError ; utilisez LibreSAM2 ou LibreSAM3 pour
les requêtes par point, texte, masque ou de segmentation complète. Consultez la
prédiction pour les types de sources.
Variantes
Une seule taille, pico, avec une entrée ROI fixe de 96 px : PicoSAM3 exécute une passe CNN complète par boîte au lieu d'encoder l'image entière une seule fois.
Exporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Instance segmentation | Instance segmentation to ONNX : pris en charge | Instance segmentation to TorchScript : non pris en charge | Instance segmentation to ExecuTorch : non pris en charge | Instance segmentation to TensorRT : non pris en charge | Instance segmentation to OpenVINO : non pris en charge | Instance segmentation to Paddle : non pris en charge | Instance segmentation to MNN : non pris en charge | Instance segmentation to RKNN : non pris en charge | Instance segmentation to ncnn : non pris en charge | Instance segmentation to TFLite : non pris en charge | Instance segmentation to CoreML : non pris en charge | Instance segmentation to Core AI : non pris en charge |
PicoSAM3 est la seule famille de la catégorie SAM qui s'exporte : elle transmet
son CNN ROI 96x96 brut à ONNX, roi_image -> mask_logits, sans NMS ni
post-traitement de masque intégré. Les autres familles SAM lèvent
NotImplementedError avec export(), car leur séparation encodeur/décodeur ne
dispose pas encore d'un contrat d'export pour le runtime. Un graphe PicoSAM3
exporté ne se recharge pas par LibreYOLO() ; exécutez-le directement avec un
runtime comme onnxruntime, en appliquant le même prétraitement de ROI carrée
avec une marge de 10 % présenté ci-dessus.
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opset (13 par défaut) et dynamic (True par défaut, axe de batch seul)# sont les seuls arguments d'export acceptés par cette famille.import numpy as npimport onnxruntime as ort # PicoSAM3 exporte son CNN ROI 96x96 brut : roi_image -> mask_logits.# Aucun pré/post-traitement LibreYOLO n'est réutilisable ici, car export()# ne repasse pas par LibreYOLO() comme pour un checkpoint de détecteur.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
Tous les fichiers de poids publiés pour cette famille.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| Instance segmentation | ||
| LibrePicoSAM3.pt | apache-2.0 | |
Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.
Licence
Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.
Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.
- Travail d'origine
- PicoSAM3, ETH Zurich
- Licence du projet d'origine
- Apache-2.0
- Source du projet d'origine
- github.com/pbonazzi/picosam3
- Code de LibreYOLO
- MIT
- Poids
- Apache-2.0, republiés sur huggingface.co/LibreYOLO
- Interprétation
- 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 est distillé à partir de SAM 2.1 et SAM 3 utilisés comme modèles enseignants. LibreYOLO n'intègre ni ne redistribue le code ou les poids d'aucun de ces enseignants dans cette famille ; seuls le CNN élève compact et son checkpoint converti sont fournis.
Citation
@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}
}Copié depuis le bloc de citation des auteurs sur github.com/pbonazzi/picosam3#readme.