license: apache-2.0
library_name: libreyolo
pipeline_tag: image-segmentation
tags:
- libreyolo
- picosam3
- segmentation
- promptable-segmentation
- edge
- imx500
LibrePicoSAM3
Edge tier of the LibreYOLO LibreSAM promptable-segmentation family: a
1,371,418-parameter CNN that segments the object inside a box-defined region of
interest. It is small enough to run in-sensor on the Sony IMX500 and is the
smallest promptable segmenter LibreYOLO ships, sitting below MobileSAM.
Usage
from libreyolo import LibreSAM
model = LibreSAM("picosam3")
result = model.predict("image.jpg", bboxes=[100, 100, 400, 500])
result.show()
bboxes= is the only supported prompt. Point, text, mask, multimask and
segment-everything modes are not part of the upstream model contract and raise
a clear error; use LibreSAM("sam2") or LibreSAM("sam3") for those.
Measured quality
Evaluated by LibreYOLO on COCO val2017, using ground-truth boxes as ROI prompts and ground-truth masks as reference:
| Protocol | mIoU |
|---|---|
| Crop space, 96x96 (upstream evaluation protocol) | 0.692 |
Full image, end-to-end via LibrePicoSAM3.predict() |
0.697 |
Measured on 2000 randomly sampled non-crowd instances (seed 0, no area filter). The PicoSAM3 paper reports 65.45 mIoU on COCO; our sampling and filtering may differ from theirs, so we publish the number we measured rather than restating theirs as reproduced.
Against MobileSAM
Same 150 COCO instances, same box prompts, single-threaded CPU:
| Model | Params | mIoU | CPU latency |
|---|---|---|---|
| LibrePicoSAM3 | 1.37M | 0.691 | 8.6 ms/prompt |
| LibreMobileSAM | 10.13M | 0.800 | 407 ms/prompt |
MobileSAM is the better segmenter; prefer it when a GPU is available or quality dominates. PicoSAM3 trades ~11 mIoU points for 7x fewer parameters and ~47x lower CPU latency, which is what makes CPU-only and in-sensor deployment viable.
Provenance
- Architecture: ported from pbonazzi/picosam3
(Apache-2.0), commit
1b03949e43472953bb0021685c7fc3f5fdf48fde. The LibreYOLO implementation is native and produces bit-identical outputs to upstream (max abs diff 0.0 on a seeded FP32 batch). - Weights: converted from
pietrobonazzi/picosam3
(Apache-2.0), revision
af49e4322b6b7cf448499fee5c073d4576f59444, filePicoSAM3_SAM3_student_best.pt. Re-wrapped into the LibreYOLO checkpoint schema (v1) with provenance metadata; tensor values are unchanged. - Teacher chain: upstream distilled this student from SAM 2.1 and SAM 3. Teacher implementations and checkpoints are not included or redistributed here. Meta's SAM License places ownership of distilled derivative works with their creator and does not impose license inheritance, so these weights are redistributed under the upstream author's Apache-2.0 terms.
- Training data: COCO 2017 and LVIS v1.
Note: the PicoSAM3_student_epoch1.pt and PicoSAM3_epoch1.pt files in the
upstream weights repo contain the older PicoSAM2 architecture (output_head.*)
and do not load as PicoSAM3. LibreYOLO ships the best artifact and rejects the
epoch-1 files explicitly.
Citation
@article{picosam3_2026,
title={PicoSAM3: Real-Time In-Sensor Region-of-Interest Segmentation},
journal={IEEE Sensors Journal},
year={2026}
}
License
Apache-2.0, inherited from the upstream code and weights.