SAM
SAM (Segment Anything) convierte un clic de punto o de caja en la máscara de un objeto. LibreYOLO lo carga mediante una factoría LibreSAM dedicada, separada de la factoría de detectores LibreYOLO(), porque un modelo guiado por prompts necesita otra forma de llamada.
- Tareas
- instance segmentation
- Tamaños
- base, large, huge at 1024 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.
- Licencias
- Código MIT, pesos Apache-2.0. Uso comercial
Instalación
SAM necesita el extra sam, que arrastra transformers y timm.
pip install "libreyolo[sam]"Predicción
LibreSAM(...) 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 espacial. No hay comando de CLI
libreyolo predict para esta familia; usa la API de Python.
from libreyolo import LibreSAM, SAMPLE_IMAGE # "base" descarga automáticamente facebook/sam-vit-base en el primer uso.# Otros tamaños: "large", "huge" (también "b"/"l"/"h").model = LibreSAM("base") # Un prompt de punto: [x, y] en coordenadas de píxel, label 1 = primer plano.result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy) # un polígono por máscaraprint(result.boxes.xyxy) # caja ajustada derivada de la máscara # Un prompt de caja en lugar de un punto.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700]) # Sin ningún prompt se segmenta la imagen entera (un generador# automático de máscaras simplificado, no el exhaustivo de referencia).result = model.predict(SAMPLE_IMAGE)from libreyolo import LibreSAM, SAMPLE_IMAGE model = LibreSAM("base") # El encoder de imagen es la parte cara. set_image() lo ejecuta una vez;# cada llamada posterior a predict() reutiliza el embedding cacheado.model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()Un prompt de punto acepta [x, y] para un objeto, [[x, y], ...] para varios,
o arrays de numpy; labels marca cada punto con 1 (primer plano) o 0
(fondo) y por defecto son todos de primer plano. Un prompt de caja toma
[x1, y1, x2, y2] o una lista de cajas, con una máscara por caja. Omitir ambos
prompts segmenta la imagen entera lanzando una rejilla densa de prompts y
quedándose con las máscaras de confianza que no se solapan; este modo de
«segmentarlo todo» está simplificado frente al generador automático de máscaras
de referencia y puede infrasegmentar escenas concurridas, así que un prompt real
de punto o de caja es el camino preciso. conf filtra por la calidad de máscara
predicha (IoU), no por una confianza de detección: pasa 0.0 para conservar
todos los candidatos. multimask=True devuelve las tres máscaras de ambigüedad
todo-frente-a-parte de SAM por cada prompt, en lugar de solo la mejor. device=
mueve el modelo y, si hay una sesión de set_image() activa, su embedding
cacheado. Cada máscara lleva el id de clase 0, con nombre "object", porque
una máscara guiada por prompts no tiene un conjunto fijo de clases. train(),
val(), export() y track() lanzan todos NotImplementedError en esta
familia: SAM es solo de predicción en LibreYOLO, y el seguimiento en vídeo queda
fuera del alcance. Consulta predicción para los tipos de
fuente.
Variantes
Tres tamaños de encoder de imagen ViT: base, large y huge, todos con una entrada fija de 1024 px. Todavía no hay publicado ningún benchmark de precisión ni de latencia para esta familia, así que elegir un tamaño intercambia directamente peso del encoder por calidad de máscara: base es el más rápido de codificar, huge el más pesado.
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
- SAM (Segment Anything), Meta AI Research (FAIR)
- Licencia del proyecto original
- Apache-2.0
- Fuente del proyecto original
- github.com/facebookresearch/segment-anything
- Código de LibreYOLO
- MIT
- Pesos
- Apache-2.0, distribuidos por sus autores. LibreYOLO no los aloja ni los replica.
- 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 does not mirror SAM-1 weights on its own Hugging Face org: LibreSAM downloads the base, large and huge checkpoints directly from Meta's own facebook/sam-vit-base, facebook/sam-vit-large and facebook/sam-vit-huge repositories, each tagged Apache-2.0 there as well.
LibreYOLO no aloja su propia copia de los pesos de SAM-1. LibreSAM("base"),
"large" y "huge" descargan directamente de los repositorios
facebook/sam-vit-base, facebook/sam-vit-large y facebook/sam-vit-huge de
la propia Meta en Hugging Face, cada uno etiquetado allí como Apache-2.0 de
forma independiente a LibreYOLO.
Cita
@article{kirillov2023segany,
title={Segment Anything},
author={Kirillov, Alexander and Mintun, Eric and Ravi, Nikhila and Mao, Hanzi and Rolland, Chloe and Gustafson, Laura and Xiao, Tete and Whitehead, Spencer and Berg, Alexander C. and Lo, Wan-Yen and Doll{\'a}r, Piotr and Girshick, Ross},
journal={arXiv:2304.02643},
year={2023}
}Copiado del bloque de cita de los autores en github.com/facebookresearch/segment-anything#citing-segment-anything.