Ir al contenido

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.

SAM 2 Ejemplos de resultados

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.

SAM 2 Diagrama de arquitectura

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.

pip install ultralytics

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.

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4")
# Run inference with a SAM 2 model
yolo predict model=sam2.1_b.pt source=path/to/video.mp4

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

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
Argumento Tipo Descripción Por defecto
data str Ruta a la carpeta que contiene las imágenes que se van a anotar.
det_model stropcional Modelo de detección preentrenado YOLO . Por defecto es 'yolo11x.pt'. 'yolo11x.pt'
sam_model stropcional Modelo de segmentación preentrenado SAM 2. Por defecto es 'sam2_b.pt'. 'sam2_b.pt'
device stropcional Dispositivo en el que se ejecutarán los modelos. Por defecto es una cadena vacía (CPU o GPU, si está disponible).
conf floatopcional Umbral de confianza para el modelo de detección; por defecto es 0,25. 0.25
iou floatopcional Umbral de IoU para filtrar las cajas superpuestas en los resultados de detección; por defecto es 0,45. 0.45
imgsz intopcional Dimensión de redimensionamiento de la imagen de entrada; por defecto es 640. 640
max_det intopcional Limita las detecciones por imagen para controlar las salidas en escenas densas. 300
classes listopcional Filtra las predicciones según los ID de clase especificados, devolviendo sólo las detecciones relevantes. None
output_dir str, Noneopcional 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.

Creado hace 4 meses ✏️ Actualizado hace 13 días

Comentarios