PicoSAM3
O PicoSAM3 é uma CNN compacta destilada do SAM 2.1 e do SAM 3, feita para segmentação de regiões de interesse guiada por caixas em sensores como o Sony IMX500. O LibreYOLO dá suporte a ele por uma factory LibreSAM dedicada, separada da factory de detectores LibreYOLO(), e só com prompts de caixa.
- Tarefas
- instance segmentation
- Tamanhos
- pico at 96 px
- Instalação
pip install libreyolo- Nível de suporte
- Nível irmão, desde a v. Uma superfície de produto separada, com sua própria fábrica e seu próprio contrato.
- Origem
- PicoSAM3 por ETH Zurich, Apache-2.0. Artigo, código-fonte
- Licenças
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalação
O PicoSAM3 precisa do extra sam: o download de pesos do próprio LibreYOLO
ainda passa pelo ferramental do Hugging Face que vem com transformers, mesmo
que a inferência rode sobre uma CNN nativa, sem transformers.
pip install "libreyolo[sam]"Predição
LibreSAM(...) (ou o LibrePicoSAM3(...) específico da família) é um ponto de
entrada separado de LibreYOLO(...): ele devolve um segmentador guiado por
prompts em vez de um detector, porque aqui um forward pass não significa nada
sem um prompt. Não existe comando de CLI libreyolo predict para esta família;
use a API Python.
from libreyolo import LibreSAM, SAMPLE_IMAGE # O PicoSAM3 tem um único tamanho, "pico", então não há outro alias.model = LibreSAM("picosam3") # bboxes= é o único prompt suportado: [x1, y1, x2, y2] ou uma lista de# caixas, uma máscara por caixa. Cada caixa é expandida em 10%, virada# quadrada, recortada à imagem e redimensionada para 96x96 antes da CNN.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy) # um polígono por máscaraprint(result.boxes.xyxy) # caixa justa derivada da máscarafrom libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image() guarda a imagem de origem em cache; o PicoSAM3 roda um# forward completo da CNN por caixa, então isso economiza a carga e o# decode da imagem, não um passo de encoder como nas outras famílias 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()O PicoSAM3 aceita apenas bboxes=; passar points=, labels=, masks=,
text=, multimask=True ou omitir a caixa para segmentar tudo levanta um
ValueError claro em todos os casos, já que nenhum desses modos existe no
modelo original. conf filtra pela qualidade de máscara predita (IoU), não por
uma confiança de detecção, e precisa estar entre 0.0 e 1.0. Toda máscara
carrega o id de classe 0, com nome "object". train(), val() e track()
levantam NotImplementedError; use o LibreSAM2 ou o LibreSAM3 para prompts de
ponto, texto, máscara ou de segmentar tudo. Veja predição para
os tipos de fonte.
Variantes
Um único tamanho, pico, com entrada de ROI fixa de 96 px: o PicoSAM3 roda um forward completo da CNN por caixa em vez de codificar a imagem inteira uma vez só.
Exportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Instance segmentation | Instance segmentation to ONNX: compatível | Instance segmentation to TorchScript: incompatível | Instance segmentation to ExecuTorch: incompatível | Instance segmentation to TensorRT: incompatível | Instance segmentation to OpenVINO: incompatível | Instance segmentation to Paddle: incompatível | Instance segmentation to MNN: incompatível | Instance segmentation to RKNN: incompatível | Instance segmentation to ncnn: incompatível | Instance segmentation to TFLite: incompatível | Instance segmentation to CoreML: incompatível | Instance segmentation to Core AI: incompatível |
O PicoSAM3 é a única família do nível SAM que exporta: ele leva sua CNN de ROI
96x96 crua para ONNX, roi_image -> mask_logits, sem NMS nem pós-processamento
de máscara embutidos. As outras famílias SAM levantam NotImplementedError no
export(), já que a separação entre encoder e decoder delas ainda não tem um
contrato de exportação definido para runtime. Um grafo PicoSAM3 exportado não
carrega de volta por LibreYOLO(); rode ele direto com um runtime como o
onnxruntime, aplicando o mesmo pré-processamento de ROI quadrada com 10% de
folga mostrado acima.
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opset (13 por padrão) e dynamic (True por padrão, só o eixo de batch)# são os únicos argumentos de exportação que esta família aceita.import numpy as npimport onnxruntime as ort # O PicoSAM3 exporta sua CNN de ROI 96x96 crua: roi_image -> mask_logits.# Aqui não há pré/pós-processamento do lado do LibreYOLO para reaproveitar,# porque export() não é roteado de volta por LibreYOLO() como acontece# com o checkpoint de um detector.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)Checkpoints
Todos os arquivos de pesos publicados desta família.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| Instance segmentation | ||
| LibrePicoSAM3.pt | apache-2.0 | |
Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.
Licenciamento
Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.
Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.
- Trabalho original
- PicoSAM3, ETH Zurich
- Licença original
- Apache-2.0
- Código-fonte original
- github.com/pbonazzi/picosam3
- Código do LibreYOLO
- MIT
- Pesos
- Apache-2.0, republicado em huggingface.co/LibreYOLO
- Interpretação
- 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.
O PicoSAM3 é destilado do SAM 2.1 e do SAM 3, usados como modelos professores. O LibreYOLO não incorpora nem redistribui o código ou os pesos de nenhum dos dois professores nesta família; só a CNN estudante compacta e seu checkpoint convertido são distribuídos.
Citação
@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}
}Copiado do bloco de citação dos autores em github.com/pbonazzi/picosam3#readme.