PicoSAM3
PicoSAM3 — компактная CNN, дистиллированная из SAM 2.1 и SAM 3 и рассчитанная на сегментацию области интереса по промпту-рамке на сенсорах вроде Sony IMX500. LibreYOLO поддерживает его через отдельную фабрику LibreSAM, независимую от фабрики детекторов LibreYOLO(), и только с промптами-рамками.
- Задачи
- instance segmentation
- Размеры
- pico at 96 px
- Установка
pip install libreyolo- Уровень поддержки
- Смежный уровень, начиная с v. Отдельная часть продукта со своей фабрикой и контрактом.
- Исходный проект
- PicoSAM3 от ETH Zurich, Apache-2.0. Статья, исходный код
- Лицензии
- Код: Apache-2.0, веса: Apache-2.0. Коммерческое использование
Установка
PicoSAM3 требует extra-пакет sam: скачивание весов в LibreYOLO по-прежнему
идёт через инструменты Hugging Face из transformers, хотя сам инференс
работает на нативной CNN без transformers.
pip install "libreyolo[sam]"Предсказание
LibreSAM(...) (или специфичный для семейства LibrePicoSAM3(...)) — точка
входа, отдельная от LibreYOLO(...): она возвращает сегментатор, работающий по
промпту, а не детектор, потому что прямой проход здесь без промпта не имеет
смысла. CLI-команды libreyolo predict для этого семейства нет; используйте
Python API.
from libreyolo import LibreSAM, SAMPLE_IMAGE # У PicoSAM3 один размер, "pico", поэтому других алиасов не нужно.model = LibreSAM("picosam3") # bboxes= — единственный поддерживаемый промпт: [x1, y1, x2, y2] или# список рамок, по маске на каждую. Перед запуском CNN каждая рамка# расширяется на 10%, приводится к квадрату, обрезается по изображению# и масштабируется до 96x96.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.
У каждой маски id класса 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, у которого есть экспорт: оно
выгружает свою сырую ROI-CNN 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 экспортирует свою сырую ROI-CNN 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.