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 потребує додаткового набору залежностей sam: власне завантаження ваг LibreYOLO і далі використовує інструменти Hugging Face із transformers, хоча інференс працює в нативній CNN без transformers.

bash
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 на рамку замість одноразового кодування всього зображення.

Експорт

Задача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, яке експортується: воно записує необроблену CNN ROI 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 експортує необроблену 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.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. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.