SAM 2
SAM 2 amplía SAM con una arquitectura de memoria en streaming construida para vídeo, y convierte un clic de punto o de caja en una máscara de objeto. LibreYOLO admite su ruta de segmentación de imágenes mediante una factoría LibreSAM dedicada, separada de la factoría de detectores LibreYOLO().
- Tareas
- instance segmentation
- Tamaños
- 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 2 necesita el extra sam, que arrastra transformers y timm.
pip install "libreyolo[sam]"Predicción
LibreSAM(...) (o el LibreSAM2(...) 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 espacial. No hay comando de CLI libreyolo predict para esta
familia; usa la API de Python. Solo se admite la segmentación de imágenes; el
seguimiento con memoria de vídeo de SAM 2 queda fuera del alcance aquí.
from libreyolo import LibreSAM, SAMPLE_IMAGE # Alias de tamaño: "sam2-tiny", "sam2-small", "sam2-base-plus",# "sam2-large" (también las formas cortas "sam2-t"/"sam2-s"/"sam2-bp"/"sam2-l").model = LibreSAM("sam2-large") # 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 LibreSAM2, SAMPLE_IMAGE # La clase específica de la familia toma el tamaño sin el prefijo "sam2-".model = LibreSAM2("large") # 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: aquí lo que LibreYOLO admite es la
inferencia sobre imágenes. Consulta predicción para los tipos
de fuente.
Variantes
Cuatro tamaños con backbone Hiera: tiny, small, base-plus y large, todos a la misma resolución de entrada. Todavía no hay publicado ningún benchmark de precisión ni de latencia para esta familia, así que elegir un tamaño supone cambiar directamente peso del encoder por calidad de máscara: tiny es el más rápido de codificar, large el más pesado.
Checkpoints
Todos los archivos de pesos publicados de esta familia.
| Archivo | Entrada (px) | Licencia de los pesos |
|---|---|---|
| Instance segmentation | ||
| LibreSAM2tiny.pt | apache-2.0 | |
| LibreSAM2small.pt | apache-2.0 | |
| LibreSAM2base-plus.pt | apache-2.0 | |
| LibreSAM2large.pt | apache-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
- SAM 2, Meta FAIR
- Licencia del proyecto original
- Apache-2.0
- Fuente del proyecto original
- github.com/facebookresearch/sam2
- 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 loads SAM 2 through the Apache-2.0 Transformers implementation and republishes Transformers-compatible snapshots of the tiny, small, base-plus and large checkpoints on its own Hugging Face org, tagged Apache-2.0 there as well. LibreYOLO ships image inference only; SAM 2's video-memory tracking is out of scope for this family.
Cita
@article{ravi2024sam2,
title={SAM 2: Segment Anything in Images and Videos},
author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
journal={arXiv preprint arXiv:2408.00714},
url={https://arxiv.org/abs/2408.00714},
year={2024}
}Copiado del bloque de cita de los autores en github.com/facebookresearch/sam2#citing-sam-2.