PicoSAM3
PicoSAM3 to kompaktowa sieć CNN destylowana z SAM 2.1 i SAM 3, zbudowana do segmentacji obszaru zainteresowania sterowanej ramką na czujnikach takich jak Sony IMX500. LibreYOLO obsługuje ją przez osobną fabrykę LibreSAM, niezależną od fabryki detektorów LibreYOLO(), wyłącznie z promptami ramkowymi.
- Zadania
- instance segmentation
- Rozmiary
- pico at 96 px
- Instalacja
pip install libreyolo- Poziom obsługi
- Poziom siostrzany, od wersji v. Osobna część produktu z własną fabryką i kontraktem.
- Projekt źródłowy
- PicoSAM3, autorzy: ETH Zurich, licencja: Apache-2.0. Publikacja, kod źródłowy
- Licencje
- Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne
Instalacja
PicoSAM3 wymaga dodatku sam. Własne pobieranie wag LibreYOLO nadal korzysta z
narzędzi Hugging Face w transformers, mimo że inferencja działa na natywnej
sieci CNN niezależnej od transformers.
pip install "libreyolo[sam]"Predykcja
LibreSAM(...) (lub właściwy dla tej rodziny LibrePicoSAM3(...)) jest
osobnym punktem wejścia niż LibreYOLO(...). Zwraca segmenter sterowany
promptami, a nie detektor, ponieważ przebieg w przód nie ma tu znaczenia bez
promptu. Dla tej rodziny nie istnieje polecenie CLI libreyolo predict. Należy
użyć API Pythona.
from libreyolo import LibreSAM, SAMPLE_IMAGE # PicoSAM3 ma jeden rozmiar, "pico", dlatego nie jest potrzebny inny alias.model = LibreSAM("picosam3") # bboxes= jest jedynym obsługiwanym promptem: [x1, y1, x2, y2] lub lista# ramek, jedna maska na ramkę. Każda ramka jest rozszerzana o 10%, zamieniana# na kwadrat, przycinana do obrazu i skalowana do 96x96 przed uruchomieniem CNN.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy) # wielokąt dla każdej maskiprint(result.boxes.xyxy) # ciasna ramka wyznaczona z maskifrom libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image() zapisuje obraz źródłowy w pamięci podręcznej. PicoSAM3 wykonuje pełny# przebieg CNN dla każdej ramki, więc oszczędza to wczytywanie/dekodowanie obrazu,# a nie przebieg enkodera jak w pozostałych rodzinach 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 przyjmuje wyłącznie bboxes=. Przekazanie points=, labels=,
masks=, text=, multimask=True albo pominięcie ramki, aby segmentować
wszystko, zgłasza czytelny ValueError, ponieważ żaden z tych trybów nie
istnieje w modelu źródłowym. conf filtruje według przewidywanej jakości maski
(IoU), a nie pewności detekcji, i musi mieścić się między 0.0 a 1.0. Każda
maska ma identyfikator klasy 0 o nazwie "object". Wywołania train(),
val() i track() zgłaszają NotImplementedError. Do promptów punktowych,
tekstowych, maskowych lub segmentujących wszystko należy użyć LibreSAM2 albo
LibreSAM3. Informacje o typach źródeł zawiera strona
predykcji.
Warianty
Dostępny jest jeden rozmiar, pico, ze stałym wejściem ROI 96 px. PicoSAM3 wykonuje jeden pełny przebieg CNN dla każdej ramki zamiast jednorazowo kodować cały obraz.
Eksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Instance segmentation | Instance segmentation to ONNX: obsługiwane | Instance segmentation to TorchScript: brak obsługi | Instance segmentation to ExecuTorch: brak obsługi | Instance segmentation to TensorRT: brak obsługi | Instance segmentation to OpenVINO: brak obsługi | Instance segmentation to Paddle: brak obsługi | Instance segmentation to MNN: brak obsługi | Instance segmentation to RKNN: brak obsługi | Instance segmentation to ncnn: brak obsługi | Instance segmentation to TFLite: brak obsługi | Instance segmentation to CoreML: brak obsługi | Instance segmentation to Core AI: brak obsługi |
PicoSAM3 jest jedyną rodziną poziomu SAM, którą można eksportować. Udostępnia
surową sieć CNN ROI 96x96 w ONNX, roi_image -> mask_logits, bez NMS ani
przetwarzania końcowego maski wbudowanego w graf. Pozostałe rodziny SAM
zgłaszają NotImplementedError dla export(), ponieważ ich podział na enkoder
i dekoder nie ma jeszcze zdefiniowanego kontraktu eksportu środowiska
uruchomieniowego. Wyeksportowany graf PicoSAM3 nie jest ponownie wczytywany przez
LibreYOLO(). Należy uruchomić go bezpośrednio w środowisku takim jak
onnxruntime, stosując to samo przetwarzanie wstępne kwadratowego ROI z
dopełnieniem 10%, które pokazano powyżej.
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opset (domyślnie 13) i dynamic (domyślnie True, tylko oś batcha) są# jedynymi argumentami eksportu przyjmowanymi przez tę rodzinę.import numpy as npimport onnxruntime as ort # PicoSAM3 eksportuje surową sieć CNN ROI 96x96: roi_image -> mask_logits.# Nie ma tu przetwarzania wstępnego/końcowego LibreYOLO do ponownego użycia,# ponieważ export() nie kieruje wyniku z powrotem przez LibreYOLO() tak jak# checkpoint detektora.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)Checkpointy
Wszystkie opublikowane pliki wag dla tej rodziny.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| Instance segmentation | ||
| LibrePicoSAM3.pt | apache-2.0 | |
Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.
Licencja
Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.
To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.
- Oryginalna praca
- PicoSAM3, ETH Zurich
- Licencja projektu źródłowego
- Apache-2.0
- Kod źródłowy projektu
- github.com/pbonazzi/picosam3
- Kod LibreYOLO
- MIT
- Wagi
- Apache-2.0, ponownie opublikowane w huggingface.co/LibreYOLO
- Interpretacja
- 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 jest destylowany z modeli nauczycieli SAM 2.1 i SAM 3. LibreYOLO nie dołącza ani nie redystrybuuje kodu lub wag żadnego z nauczycieli w tej rodzinie. Udostępniana jest tylko kompaktowa sieć CNN ucznia i jej przekonwertowany checkpoint.
Cytowanie
@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}
}Skopiowano z bloku cytowania autorów w github.com/pbonazzi/picosam3#readme.