PicoSAM3

PicoSAM3 es una CNN compacta destilada de SAM 2.1 y SAM 3, pensada para la segmentación de regiones de interés guiada por cajas en sensores como el Sony IMX500. LibreYOLO lo admite mediante una factoría LibreSAM dedicada, separada de la factoría de detectores LibreYOLO(), y solo con prompts de caja.

Tareas
instance segmentation
Tamaños
pico at 96 px
Instalación
pip install libreyolo
Nivel de compatibilidad
Nivel hermano, desde v. Una superficie de producto independiente con su propia factoría y su propio contrato.
Proyecto original
PicoSAM3 de ETH Zurich, Apache-2.0. Artículo, fuente
Licencias
Código Apache-2.0, pesos Apache-2.0. Uso comercial

Instalación

PicoSAM3 necesita el extra sam: la descarga de pesos propia de LibreYOLO sigue pasando por las herramientas de Hugging Face de transformers, aunque la inferencia se ejecute sobre una CNN nativa que no usa transformers.

bash
pip install "libreyolo[sam]"

Predicción

LibreSAM(...) (o el LibrePicoSAM3(...) específico de la familia) es un punto de entrada distinto de LibreYOLO(...): devuelve un segmentador guiado por prompts en lugar de un detector, porque aquí un forward pass no significa nada sin un prompt. No hay comando de CLI libreyolo predict para esta familia; usa la API de Python.

Prompt de caja
from libreyolo import LibreSAM, SAMPLE_IMAGE # PicoSAM3 tiene un único tamaño, "pico", así que no hace falta otro alias.model = LibreSAM("picosam3") # bboxes= es el único prompt admitido: [x1, y1, x2, y2] o una lista de# cajas, con una máscara por caja. Cada caja se expande un 10 %, se hace# cuadrada, se recorta a la imagen y se escala a 96x96 antes de la CNN.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])print(result.masks.xy)      # un polígono por máscaraprint(result.boxes.xyxy)    # caja ajustada derivada de la máscara
Codifica una vez, lanza muchos prompts
from libreyolo import LibrePicoSAM3, SAMPLE_IMAGE model = LibrePicoSAM3() # set_image() cachea la imagen de origen; PicoSAM3 ejecuta un forward# completo de la CNN por caja, así que esto ahorra la carga y decodificación# de la imagen, no un paso de encoder como en las demás familias 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 solo acepta bboxes=; pasar points=, labels=, masks=, text=, multimask=True u omitir la caja para segmentarlo todo lanza en todos los casos un ValueError claro, porque ninguno de esos modos existe en el modelo original. conf filtra por la calidad de máscara predicha (IoU), no por una confianza de detección, y tiene que estar entre 0.0 y 1.0. Cada máscara lleva el id de clase 0, con nombre "object". train(), val() y track() lanzan NotImplementedError; usa LibreSAM2 o LibreSAM3 para prompts de punto, de texto, de máscara o de segmentarlo todo. Consulta predicción para los tipos de fuente.

Variantes

Un único tamaño, pico, con una entrada de ROI fija de 96 px: PicoSAM3 ejecuta un forward completo de la CNN por cada caja en lugar de codificar la imagen entera una sola vez.

Exportación

TareaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
Instance segmentationInstance segmentation to ONNX: compatibleInstance segmentation to TorchScript: no compatibleInstance segmentation to ExecuTorch: no compatibleInstance segmentation to TensorRT: no compatibleInstance segmentation to OpenVINO: no compatibleInstance segmentation to Paddle: no compatibleInstance segmentation to MNN: no compatibleInstance segmentation to RKNN: no compatibleInstance segmentation to ncnn: no compatibleInstance segmentation to TFLite: no compatibleInstance segmentation to CoreML: no compatibleInstance segmentation to Core AI: no compatible

PicoSAM3 es la única familia del nivel SAM que exporta: lleva su CNN de ROI de 96x96 en crudo a ONNX, roi_image -> mask_logits, sin NMS ni posprocesado de máscaras integrados. Las demás familias SAM lanzan NotImplementedError en export(), porque su separación entre encoder y decoder todavía no tiene un contrato de exportación definido para runtime. Un grafo de PicoSAM3 exportado no se vuelve a cargar mediante LibreYOLO(); ejecútalo directamente con un runtime como onnxruntime, aplicando el mismo preprocesado de ROI cuadrada con un 10 % de margen que se muestra arriba.

Python
from libreyolo import LibrePicoSAM3 model = LibrePicoSAM3()model.export(format="onnx", output_path="LibrePicoSAM3pico.onnx") # opset (13 por defecto) y dynamic (True por defecto, solo el eje de batch)# son los únicos argumentos de exportación que acepta esta familia.
Usar el archivo exportado
import numpy as npimport onnxruntime as ort # PicoSAM3 exporta su CNN de ROI de 96x96 en crudo: roi_image -> mask_logits.# Aquí no hay pre/posprocesado del lado de LibreYOLO que reutilizar, porque# export() no se enruta de vuelta por LibreYOLO() como sí ocurre con el# checkpoint de un 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 los archivos de pesos publicados de esta familia.

ArchivoEntrada (px)Licencia de los pesos
Instance segmentation
LibrePicoSAM3.ptapache-2.0

Todos los archivos anteriores existen hoy en la organización de LibreYOLO y se descargan la primera vez que se usan.

Licencia

Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.

Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.

Trabajo original
PicoSAM3, ETH Zurich
Licencia del proyecto original
Apache-2.0
Fuente del proyecto original
github.com/pbonazzi/picosam3
Código de LibreYOLO
MIT
Pesos
Apache-2.0, republicados en huggingface.co/LibreYOLO
Interpretación
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 se destila a partir de SAM 2.1 y SAM 3 como modelos maestros. LibreYOLO no incorpora ni redistribuye el código ni los pesos de ninguno de los dos maestros en esta familia; solo se distribuyen la CNN estudiante compacta y su checkpoint convertido.

Cita

@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 del bloque de cita de los autores en github.com/pbonazzi/picosam3#readme.

Verificado con LibreYOLO v1.5.0. Las tablas de compatibilidad, los checkpoints y las cifras de rendimiento de esta página se generan a partir de la biblioteca publicada y los pesos publicados; no se escriben a mano.