SAM 2.1
Acabamos de admitir el modelo SAM2.1, más preciso. ¡Pruébalo!
SAM 2: Segmento Cualquier cosa Modelo 2
SAM 2, el sucesor del Segment Anything Model de Meta (SAM), es una herramienta de vanguardia diseñada para la segmentación exhaustiva de objetos tanto en imágenes como en vídeos. Sobresale en el manejo de datos visuales complejos gracias a una arquitectura de modelos unificada e incitable que admite el procesamiento en tiempo real y la generalización sin disparos.
Características principales
Observa: Cómo realizar inferencias con SAM2 de Meta utilizando Ultralytics | Guía paso a paso 🎉
Arquitectura del Modelo Unificado
SAM 2 combina las capacidades de segmentación de imagen y vídeo en un único modelo. Esta unificación simplifica el despliegue y permite un rendimiento coherente en distintos tipos de medios. Aprovecha una interfaz flexible basada en instrucciones, que permite a los usuarios especificar objetos de interés mediante diversos tipos de instrucciones, como puntos, cuadros delimitadores o máscaras.
Rendimiento en tiempo real
El modelo alcanza velocidades de inferencia en tiempo real, procesando aproximadamente 44 fotogramas por segundo. Esto hace que SAM 2 sea adecuado para aplicaciones que requieren una respuesta inmediata, como la edición de vídeo y la realidad aumentada.
Generalización del Tiro Cero
SAM 2 puede segmentar objetos que nunca ha encontrado antes, demostrando una fuerte generalización de cero disparos. Esto es especialmente útil en dominios visuales diversos o en evolución, en los que las categorías predefinidas pueden no abarcar todos los objetos posibles.
Refinamiento interactivo
Los usuarios pueden refinar iterativamente los resultados de la segmentación proporcionando indicaciones adicionales, lo que permite un control preciso sobre el resultado. Esta interactividad es esencial para afinar los resultados en aplicaciones como la anotación de vídeos o la obtención de imágenes médicas.
Manejo Avanzado de los Desafíos Visuales
SAM 2 incluye mecanismos para gestionar los retos habituales de la segmentación de vídeo, como la oclusión y reaparición de objetos. Utiliza un sofisticado mecanismo de memoria para realizar un seguimiento de los objetos a través de los fotogramas, asegurando la continuidad incluso cuando los objetos se oscurecen temporalmente o salen y vuelven a entrar en la escena.
Para conocer mejor la arquitectura y las capacidades de SAM 2, explora el documento de investigaciónSAM 2.
Rendimiento y detalles técnicos
SAM 2 establece un nuevo punto de referencia en este campo, superando a los modelos anteriores en varias métricas:
Métrica | SAM 2 | SOTA anterior |
---|---|---|
Segmentación interactiva de vídeo | Mejor | - |
Se requieren interacciones humanas | 3 veces menos | Línea de base |
Precisión de la segmentación de imágenes | Mejorado | SAM |
Velocidad de inferencia | 6 veces más rápido | SAM |
Arquitectura Modelo
Componentes básicos
- Codificador de imagen y vídeo: Utiliza una arquitectura basada en transformadores para extraer características de alto nivel tanto de imágenes como de fotogramas de vídeo. Este componente se encarga de comprender el contenido visual en cada paso temporal.
- Codificador de indicaciones: Procesa las indicaciones proporcionadas por el usuario (puntos, recuadros, máscaras) para guiar la tarea de segmentación. Esto permite a SAM 2 adaptarse a las indicaciones del usuario y centrarse en objetos concretos de una escena.
- Mecanismo de memoria: Incluye un codificador de memoria, un banco de memoria y un módulo de atención a la memoria. Estos componentes almacenan y utilizan colectivamente información de fotogramas anteriores, lo que permite al modelo mantener un seguimiento coherente del objeto a lo largo del tiempo.
- Descodificador de máscaras: Genera las máscaras de segmentación finales basándose en las características de la imagen codificada y en las indicaciones. En vídeo, también utiliza el contexto de memoria para garantizar un seguimiento preciso a través de los fotogramas.
Mecanismo de memoria y tratamiento de oclusiones
El mecanismo de memoria permite a SAM 2 manejar las dependencias temporales y las oclusiones en los datos de vídeo. A medida que los objetos se mueven e interactúan, SAM 2 registra sus características en un banco de memoria. Cuando un objeto se ocluye, el modelo puede basarse en esta memoria para predecir su posición y apariencia cuando vuelva a aparecer. El cabezal de oclusión maneja específicamente escenarios en los que los objetos no son visibles, prediciendo la probabilidad de que un objeto esté ocluido.
Resolución de ambigüedades multimáscara
En situaciones con ambigüedad (por ejemplo, objetos superpuestos), SAM 2 puede generar predicciones de máscaras múltiples. Esta característica es crucial para representar con precisión escenas complejas en las que una sola máscara podría no describir suficientemente los matices de la escena.
Conjunto de datos SA-V
El conjunto de datos SA-V, desarrollado para el entrenamiento de SAM 2, es uno de los mayores y más diversos conjuntos de datos de segmentación de vídeo disponibles. Incluye:
- Más de 51.000 vídeos: Capturados en 47 países, proporcionan una amplia gama de escenarios del mundo real.
- Más de 600.000 Anotaciones de Máscara: Anotaciones espacio-temporales detalladas de máscaras, denominadas "masklets", que cubren objetos enteros y partes.
- Escala del conjunto de datos: Presenta 4,5 veces más vídeos y 53 veces más anotaciones que los mayores conjuntos de datos anteriores, ofreciendo una diversidad y complejidad sin precedentes.
Puntos de referencia
Segmentación de objetos de vídeo
SAM 2 ha demostrado un rendimiento superior en las principales pruebas de referencia de segmentación de vídeo:
Conjunto de datos | J&F | J | F |
---|---|---|---|
DAVIS 2017 | 82.5 | 79.8 | 85.2 |
YouTube-VOS | 81.2 | 78.9 | 83.5 |
Segmentación interactiva
En las tareas de segmentación interactiva, SAM 2 muestra una eficacia y precisión significativas:
Conjunto de datos | NoC@90 | AUC |
---|---|---|
DAVIS Interactivo | 1.54 | 0.872 |
Instalación
Para instalar SAM 2, utiliza el siguiente comando. Todos los modelos de SAM 2 se descargarán automáticamente la primera vez que se utilicen.
Cómo utilizar SAM 2: Versatilidad en la segmentación de imágenes y vídeos
La siguiente tabla detalla los modelos disponibles en SAM 2, sus pesos preentrenados, las tareas admitidas y la compatibilidad con distintos modos de funcionamiento como Inferencia, Validación, Entrenamiento y Exportación.
Tipo de modelo | Pesos preentrenados | Tareas admitidas | Inferencia | Validación | Formación | Exportar |
---|---|---|---|---|---|---|
SAM 2 diminutos | sam2_t.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2 pequeños | sam2_s.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2 base | sam2_b.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2 grandes | sam2_l.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 Minúscula | sam2.1_t.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 pequeño | sam2.1_s.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 Base | sam2.1_b.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 grande | sam2.1_l.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
SAM 2 Ejemplos de predicción
SAM 2 puede utilizarse en un amplio espectro de tareas, como la edición de vídeo en tiempo real, las imágenes médicas y los sistemas autónomos. Su capacidad para segmentar datos visuales estáticos y dinámicos la convierte en una herramienta versátil para investigadores y desarrolladores.
Segmento con indicaciones
Segmento con indicaciones
Utiliza indicaciones para segmentar objetos concretos en imágenes o vídeos.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Run inference with single point
results = model(points=[900, 370], labels=[1])
# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Segmentar todo
Segmentar todo
Segmenta todo el contenido de la imagen o el vídeo sin indicaciones específicas.
- Este ejemplo demuestra cómo se puede utilizar SAM 2 para segmentar todo el contenido de una imagen o vídeo si no se proporcionan indicaciones (bboxes/puntos/máscaras).
SAM 2 comparación vs YOLOv8
Aquí comparamos el modelo más pequeño de Meta SAM 2, SAM2-t, con el modelo de segmentación más pequeño de Ultralytics , YOLOv8n-seg:
Modelo | Tamaño (MB) | Parámetros (M) | Velocidad (CPU) (ms/im) |
---|---|---|---|
Meta SAM-b | 375 | 93.7 | 161440 |
Meta SAM2-b | 162 | 80.8 | 121923 |
Meta SAM2-t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM-s con YOLOv8 columna vertebral | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-seg | 6,7 (11,7 veces menor) | 3,4 (11,4 veces menos) | 79,5 (1071 veces más rápido) |
Esta comparación muestra las diferencias de orden de magnitud en los tamaños y velocidades de los modelos entre sí. Aunque SAM presenta capacidades únicas para la segmentación automática, no es un competidor directo de los modelos de segmentación de YOLOv8 , que son más pequeños, rápidos y eficaces.
Pruebas realizadas en un Macbook Apple M2 2023 con 16 GB de RAM utilizando torch==2.3.1
y ultralytics==8.3.82
. Para reproducir esta prueba:
Ejemplo
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
model = SAM(file)
model.info()
model(ASSETS)
# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model(ASSETS)
Anotación automática: Creación eficiente de conjuntos de datos
La anotación automática es una potente función de SAM 2, que permite a los usuarios generar conjuntos de datos de segmentación con rapidez y precisión aprovechando modelos preentrenados. Esta capacidad es especialmente útil para crear grandes conjuntos de datos de alta calidad sin un gran esfuerzo manual.
Cómo hacer anotaciones automáticas con SAM 2
Para auto-anotar tu conjunto de datos utilizando SAM 2, sigue este ejemplo:
Ejemplo de anotación automática
Argumento | Tipo | Descripción | Por defecto |
---|---|---|---|
data | str | Ruta a una carpeta que contenga las imágenes que se van a anotar. | |
det_model | str opcional | Modelo de detección preentrenado YOLO . Por defecto es 'yolo11x.pt'. | 'yolo11x.pt' |
sam_model | str opcional | Modelo de segmentación preentrenado SAM 2. Por defecto es 'sam2_b.pt'. | 'sam2_b.pt' |
device | str opcional | Dispositivo en el que se ejecutarán los modelos. Por defecto es una cadena vacía (CPU o GPU, si está disponible). | |
conf | float opcional | Umbral de confianza para el modelo de detección; por defecto es 0,25. | 0.25 |
iou | float opcional | Umbral de IoU para filtrar las cajas superpuestas en los resultados de detección; por defecto es 0,45. | 0.45 |
imgsz | int opcional | Dimensión de redimensionamiento de la imagen de entrada; por defecto es 640. | 640 |
max_det | int opcional | Limita las detecciones por imagen para controlar las salidas en escenas densas. | 300 |
classes | list opcional | Filtra las predicciones a los ID de clase especificados, devolviendo sólo las detecciones relevantes. | None |
output_dir | str , None opcional | Directorio para guardar los resultados anotados. Por defecto es una carpeta "etiquetas" en el mismo directorio que "datos". | None |
Esta función facilita la creación rápida de conjuntos de datos de segmentación de alta calidad, ideal para investigadores y desarrolladores que quieran acelerar sus proyectos.
Limitaciones
A pesar de sus puntos fuertes, SAM 2 tiene ciertas limitaciones:
- Estabilidad de seguimiento: SAM 2 puede perder el seguimiento de los objetos durante secuencias largas o cambios significativos del punto de vista.
- Confusión de objetos: El modelo puede confundir a veces objetos de aspecto similar, sobre todo en escenas abarrotadas.
- Eficacia con Múltiples Objetos: La eficacia de la segmentación disminuye cuando se procesan varios objetos simultáneamente, debido a la falta de comunicación entre objetos.
- Precisión en los detalles: Puede pasar por alto detalles finos, especialmente con objetos que se mueven rápidamente. Las indicaciones adicionales pueden resolver parcialmente este problema, pero no se garantiza la suavidad temporal.
Citas y agradecimientos
Si SAM 2 es una parte crucial de tu trabajo de investigación o desarrollo, por favor, cítalo utilizando la siguiente referencia:
@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},
year={2024}
}
Extendemos nuestra gratitud a Meta AI por su contribución a la comunidad de la IA con este innovador modelo y conjunto de datos.
PREGUNTAS FRECUENTES
¿Qué es SAM 2 y cómo mejora el modelo original Segment Anything Model (SAM)?
SAM 2, el sucesor del Segment Anything Model de Meta (SAM), es una herramienta de vanguardia diseñada para la segmentación exhaustiva de objetos tanto en imágenes como en vídeos. Sobresale en el manejo de datos visuales complejos gracias a una arquitectura de modelos unificada e incitable que admite el procesamiento en tiempo real y la generalización sin disparos. SAM 2 ofrece varias mejoras respecto al original SAM, entre las que se incluyen:
- Arquitectura de Modelo Unificado: Combina las capacidades de segmentación de imagen y vídeo en un único modelo.
- Rendimiento en tiempo real: Procesa aproximadamente 44 fotogramas por segundo, lo que la hace adecuada para aplicaciones que requieren una respuesta inmediata.
- Generalización de disparo cero: Segmenta objetos que nunca ha encontrado antes, útil en diversos dominios visuales.
- Refinamiento interactivo: Permite a los usuarios refinar iterativamente los resultados de la segmentación proporcionando indicaciones adicionales.
- Manejo avanzado de los retos visuales: Gestiona los retos habituales de la segmentación de vídeo, como la oclusión y reaparición de objetos.
Para más detalles sobre la arquitectura y las capacidades de SAM 2, explora el documento de investigaciónSAM 2.
¿Cómo puedo utilizar SAM 2 para la segmentación de vídeo en tiempo real?
SAM 2 puede utilizarse para la segmentación de vídeo en tiempo real aprovechando su interfaz promptable y sus capacidades de inferencia en tiempo real. He aquí un ejemplo básico:
Segmento con indicaciones
Utiliza indicaciones para segmentar objetos concretos en imágenes o vídeos.
from ultralytics import SAM
# Load a model
model = SAM("sam2_b.pt")
# Display model information (optional)
model.info()
# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])
Para un uso más completo, consulta la sección Cómo utilizar SAM 2.
¿Qué conjuntos de datos se utilizan para entrenar SAM 2, y cómo mejoran su rendimiento?
SAM 2 se entrena en el conjunto de datos SA-V, uno de los mayores y más diversos conjuntos de datos de segmentación de vídeo disponibles. El conjunto de datos SA-V incluye:
- Más de 51.000 vídeos: Capturados en 47 países, proporcionan una amplia gama de escenarios del mundo real.
- Más de 600.000 Anotaciones de Máscara: Anotaciones espacio-temporales detalladas de máscaras, denominadas "masklets", que cubren objetos enteros y partes.
- Escala del conjunto de datos: Presenta 4,5 veces más vídeos y 53 veces más anotaciones que los mayores conjuntos de datos anteriores, ofreciendo una diversidad y complejidad sin precedentes.
Este amplio conjunto de datos permite a SAM 2 alcanzar un rendimiento superior en las principales pruebas de referencia de segmentación de vídeo y mejora su capacidad de generalización sin disparos. Para más información, consulta la sección Conjunto de datos SA-V.
¿Cómo gestiona SAM 2 las oclusiones y las reapariciones de objetos en la segmentación de vídeo?
SAM 2 incluye un sofisticado mecanismo de memoria para gestionar las dependencias temporales y las oclusiones en los datos de vídeo. El mecanismo de memoria consiste en
- Codificador de memoria y banco de memoria: Almacena características de fotogramas anteriores.
- Módulo de Atención a la Memoria: Utiliza la información almacenada para mantener un seguimiento coherente del objeto a lo largo del tiempo.
- Cabezal de oclusión: trata específicamente los escenarios en los que los objetos no son visibles, prediciendo la probabilidad de que un objeto esté ocluido.
Este mecanismo garantiza la continuidad incluso cuando los objetos se oscurecen temporalmente o salen y vuelven a entrar en la escena. Para más detalles, consulta la sección Mecanismo de memoria y manejo de oclusiones.
¿Cómo se compara SAM 2 con otros modelos de segmentación como YOLOv8?
SAM 2 y Ultralytics YOLOv8 tienen propósitos distintos y destacan en áreas diferentes. Mientras que SAM 2 está diseñado para la segmentación exhaustiva de objetos con funciones avanzadas como la generalización sin disparo y el rendimiento en tiempo real, YOLOv8 está optimizado para la velocidad y la eficacia en las tareas de detección y segmentación de objetos. He aquí una comparación:
Modelo | Tamaño (MB) | Parámetros (M) | Velocidad (CPU) (ms/im) |
---|---|---|---|
Meta SAM-b | 375 | 93.7 | 161440 |
Meta SAM2-b | 162 | 80.8 | 121923 |
Meta SAM2-t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM-s con YOLOv8 columna vertebral | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-seg | 6,7 (11,7 veces menor) | 3,4 (11,4 veces menos) | 79,5 (1071 veces más rápido) |
Para más detalles, consulta la sección SAM 2 comparación vs YOLOv8.