--- 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 ```python 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](https://github.com/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](https://huggingface.co/pietrobonazzi/picosam3) (Apache-2.0), revision `af49e4322b6b7cf448499fee5c073d4576f59444`, file `PicoSAM3_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 ```bibtex @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.