SAM 2.1
Acabamos de apoyar el modelo SAM2.1, más preciso. Pruébelo.
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 a través de una arquitectura de modelo unificada y promptable que soporta el procesamiento en tiempo real y la generalización de cero disparos.
Características principales
Observa: Cómo ejecutar la inferencia con SAM2 de Meta usando 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 la implantación y permite un rendimiento uniforme 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 Zero-Shot
SAM 2 puede segmentar objetos que nunca ha encontrado antes, demostrando una fuerte generalización de cero disparos. Esto resulta especialmente útil en ámbitos visuales diversos o en evolución, en los que las categorías predefinidas pueden no abarcar todos los objetos posibles.
Perfeccionamiento 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 retos 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 lo largo de los fotogramas, garantizando 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 funciones de SAM 2, consulte el documento de investigaciónSAM 2.
Prestaciones y detalles técnicos
SAM 2 establece una nueva referencia en este campo, superando a los modelos anteriores en varias métricas:
Métrica | SAM 2 | SOTA anterior |
---|---|---|
Segmentación de vídeo interactivo | Mejor | - |
Interacciones humanas necesarias | 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 avisos: Procesa las indicaciones proporcionadas por el usuario (puntos, cuadros, máscaras) para guiar la tarea de segmentación. Esto permite a SAM 2 adaptarse a las indicaciones del usuario y centrarse en objetos específicos 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 de los objetos a lo largo del tiempo.
- Decodificador 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 entre fotogramas.
Mecanismo de memoria y gestión de oclusiones
El mecanismo de memoria permite a SAM 2 gestionar 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 queda oculto, el modelo puede basarse en esta memoria para predecir su posición y apariencia cuando reaparece. La cabeza de oclusión se ocupa específicamente de las situaciones en las que los objetos no son visibles, prediciendo la probabilidad de que un objeto esté ocluido.
Resolución de ambigüedades en varias máscaras
En situaciones de 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: Captados en 47 países, ofrecen una amplia gama de situaciones reales.
- Más de 600.000 anotaciones de máscara: Anotaciones de máscara espaciotemporales detalladas, denominadas "masklets", que abarcan 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, lo que ofrece 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 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 tareas de segmentación interactiva, SAM 2 muestra una eficiencia y precisión significativas:
Conjunto de datos | NoC@90 | AUC |
---|---|---|
DAVIS Interactivo | 1.54 | 0.872 |
Instalación
Para instalar SAM 2, utilice 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 soportadas y la compatibilidad con diferentes modos de funcionamiento como Inferencia, Validación, Entrenamiento y Exportación.
Tipo de modelo | Pesas preentrenadas | Tareas admitidas | Inferencia | Validación | Formación | Exportar |
---|---|---|---|---|---|---|
SAM 2 pequeños | 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 grandes | 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, la obtención de imágenes médicas y los sistemas autónomos. Su capacidad para segmentar datos visuales estáticos y dinámicos lo convierte en una herramienta versátil para investigadores y desarrolladores.
Segmento con indicaciones
Segmento con indicaciones
Utilice indicaciones para segmentar objetos específicos 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]])
Segmento Todo
Segmento Todo
Segmente todo el contenido de la imagen o el vídeo sin indicaciones específicas.
Segmentar vídeo y rastrear objetos
Segmento de vídeo
Segmente todo el contenido del vídeo con indicaciones específicas y objetos de seguimiento.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=1)
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
- Este ejemplo demuestra cómo SAM 2 puede utilizarse para segmentar todo el contenido de una imagen o vídeo si no se proporcionan indicaciones (bboxes/puntos/máscaras).
SAM 2 comparación frente a 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 entre los tamaños y velocidades de los modelos. 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 función es especialmente útil para crear grandes conjuntos de datos de alta calidad sin un gran esfuerzo manual.
Cómo realizar anotaciones automáticas con SAM 2
Observa: Anotación automática con el modelo Segment Anything 2 de Meta utilizando Ultralytics | Etiquetado de datos
Para auto-anotar su conjunto de datos utilizando SAM 2, siga este ejemplo:
Ejemplo de anotación automática
Argumento | Tipo | Descripción | Por defecto |
---|---|---|---|
data |
str |
Ruta a la carpeta que contiene 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 según 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 'labels' en el mismo directorio que 'data'. | None |
Esta función facilita la creación rápida de conjuntos de datos de segmentación de alta calidad, ideales para investigadores y desarrolladores que deseen 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 prolongadas 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.
- Eficiencia 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 su trabajo de investigación o desarrollo, cítelo 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 a través de una arquitectura de modelo unificada y promptable que soporta el procesamiento en tiempo real y la generalización zero-shot. SAM 2 ofrece varias mejoras con 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 Zero-Shot: Segmenta objetos que nunca ha encontrado antes, útil en diversos dominios visuales.
- Perfeccionamiento interactivo: Permite a los usuarios refinar iterativamente los resultados de la segmentación proporcionando indicaciones adicionales.
- Gestión avanzada de los retos visuales: Gestiona problemas habituales de segmentación de vídeo, como la oclusión y reaparición de objetos.
Para más detalles sobre la arquitectura y las funciones de SAM 2, consulte el documento de investigaciónSAM 2.
¿Cómo puedo utilizar SAM 2 para la segmentación de vídeo en tiempo real?
SAM 2 se puede utilizar para la segmentación de vídeo en tiempo real aprovechando su interfaz de avisos y sus capacidades de inferencia en tiempo real. He aquí un ejemplo básico:
Segmento con indicaciones
Utilice indicaciones para segmentar objetos específicos 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, consulte 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: Captados en 47 países, ofrecen una amplia gama de situaciones reales.
- Más de 600.000 anotaciones de máscara: Anotaciones de máscara espaciotemporales detalladas, denominadas "masklets", que abarcan 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, lo que ofrece una diversidad y complejidad sin precedentes.
Este amplio conjunto de datos permite a SAM 2 alcanzar un rendimiento superior en las principales pruebas de segmentación de vídeo y mejora su capacidad de generalización sin disparos. Para obtener más información, consulte la sección SA-V Dataset.
¿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 consta de:
- 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 de los objetos 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, consulte 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 sirven a diferentes propósitos y sobresalen en diferentes áreas. Mientras que SAM 2 está diseñado para la segmentación exhaustiva de objetos con funciones avanzadas como la generalización sin disparos 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, consulte la sección SAM 2 comparison vs YOLOv8.