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.

bash
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 на каждую рамку, а не кодирует всё изображение один раз.

Экспорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
Instance segmentationInstance 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%, что показана выше.

Python
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.ptapache-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.

Проверено с LibreYOLO v1.5.0. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.