PicoSAM3
PicoSAM3 є компактною CNN, дистильованою із SAM 2.1 і SAM 3 та створеною для сегментації областей інтересу за запитами рамками на сенсорах на кшталт Sony IMX500. LibreYOLO підтримує її через окрему фабрику LibreSAM, відмінну від фабрики детекторів LibreYOLO(), лише із запитами рамками.
- Задачі
- instance segmentation
- Розміри
- pico at 96 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Суміжний рівень, починаючи з v. Окремий інтерфейс продукту з власною фабрикою та контрактом.
- Ліцензії
- Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання
Встановлення
PicoSAM3 потребує додаткового набору залежностей sam: власне завантаження
ваг LibreYOLO і далі використовує інструменти Hugging Face із
transformers, хоча інференс працює в нативній CNN без transformers.
pip install "libreyolo[sam]"Передбачення
LibreSAM(...) (або фабрика конкретного сімейства LibrePicoSAM3(...))
є окремою точкою входу від LibreYOLO(...): вона повертає сегментатор за
запитами, а не детектор, оскільки прямий прохід тут не має сенсу без запиту.
Для цього сімейства немає команди CLI libreyolo predict; використовуйте
API Python.
from libreyolo import LibreSAM, SAMPLE_IMAGE # PicoSAM3 має один розмір "pico", тому інші псевдоніми не потрібні.model = LibreSAM("picosam3") # bboxes= є єдиним підтримуваним запитом: [x1, y1, x2, y2] або список# рамок, по одній масці на рамку. Кожна рамка розширюється на 10%,# стає квадратною, обрізається до зображення й масштабується до 96x96 перед CNN.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy) # Полігон для кожної маскиprint(result.boxes.xyxy) # Щільна рамка, отримана з маскиfrom libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image() кешує початкове зображення; PicoSAM3 запускає один повний# прямий прохід CNN на рамку, тому це заощаджує завантаження/декодування# зображення, а не прохід енкодера, як в інших сімействах 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 приймає лише bboxes=; передавання points=, labels=,
masks=, text=, multimask=True або пропуск рамки для сегментації
всього зображення спричиняє зрозумілий ValueError, оскільки цих режимів
немає в початковій моделі. conf фільтрує за передбаченою якістю маски
(IoU), а не за впевненістю виявлення, і має бути між 0.0 та 1.0.
Кожна маска має ідентифікатор класу 0 із назвою "object". train(),
val() і track() спричиняють NotImplementedError; використовуйте
LibreSAM2 або LibreSAM3 для запитів точками, текстом, масками чи для
сегментації всього. Типи джерел описано в розділі
передбачення.
Варіанти
Доступний один розмір pico із фіксованим входом ROI 96 px: PicoSAM3 виконує один повний прямий прохід CNN на рамку замість одноразового кодування всього зображення.
Експорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Instance segmentation | Instance segmentation to ONNX: підтримується | Instance segmentation to TorchScript: не підтримується | Instance segmentation to ExecuTorch: не підтримується | Instance segmentation to TensorRT: не підтримується | Instance segmentation to OpenVINO: не підтримується | Instance segmentation to Paddle: не підтримується | Instance segmentation to MNN: не підтримується | Instance segmentation to RKNN: не підтримується | Instance segmentation to ncnn: не підтримується | Instance segmentation to TFLite: не підтримується | Instance segmentation to CoreML: не підтримується | Instance segmentation to Core AI: не підтримується |
PicoSAM3 є єдиним сімейством рівня SAM, яке експортується: воно записує
необроблену CNN ROI 96x96 до ONNX, roi_image -> mask_logits, без вбудованих
NMS чи подальшої обробки масок. Інші сімейства SAM спричиняють
NotImplementedError для export(), оскільки їхній поділ
енкодера/декодера ще не має визначеного контракту експорту середовища
виконання. Експортований граф PicoSAM3 не завантажується назад через
LibreYOLO(); запускайте його безпосередньо в середовищі виконання на
кшталт onnxruntime, застосовуючи ту саму попередню обробку квадратного ROI
з доповненням 10%, показану вище.
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opset (типово 13) і dynamic (типово True, лише вісь батча) є# єдиними аргументами експорту, які приймає це сімейство.import numpy as npimport onnxruntime as ort # PicoSAM3 експортує необроблену CNN ROI 96x96: roi_image -> mask_logits.# Тут немає попередньої/подальшої обробки LibreYOLO для повторного використання,# оскільки export() не маршрутизується назад через LibreYOLO(), як контрольна# точка детектора.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)Контрольні точки
Усі опубліковані файли ваг цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| Instance segmentation | ||
| LibrePicoSAM3.pt | apache-2.0 | |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- PicoSAM3, ETH Zurich
- Ліцензія першоджерела
- Apache-2.0
- Джерело першоджерела
- github.com/pbonazzi/picosam3
- Код LibreYOLO
- MIT
- Ваги
- Apache-2.0, повторно опубліковано на huggingface.co/LibreYOLO
- Тлумачення
- 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 дистильовано із SAM 2.1 і SAM 3 як учительських моделей. LibreYOLO не включає й не розповсюджує код або ваги жодного вчителя в цьому сімействі; постачаються лише компактна CNN-учень та її перетворена контрольна точка.
Цитування
@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}
}Скопійовано з блоку цитування авторів на сторінці github.com/pbonazzi/picosam3#readme.