Saltar al contenido

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.

SAM 2 Ejemplo de resultados

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étricaSAM 2SOTA anterior
Segmentación interactiva de vídeoMejor-
Se requieren interacciones humanas3 veces menosLínea de base
Precisión de la segmentación de imágenesMejoradoSAM
Velocidad de inferencia6 veces más rápidoSAM

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.

SAM 2 Diagrama de arquitectura

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 datosJ&FJF
DAVIS 201782.579.885.2
YouTube-VOS81.278.983.5

Segmentación interactiva

En las tareas de segmentación interactiva, SAM 2 muestra una eficacia y precisión significativas:

Conjunto de datosNoC@90AUC
DAVIS Interactivo1.540.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.

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 admitidas y la compatibilidad con distintos modos de funcionamiento como Inferencia, Validación, Entrenamiento y Exportación.

Tipo de modeloPesos preentrenadosTareas admitidasInferenciaValidaciónFormaciónExportar
SAM 2 diminutossam2_t.ptSegmentación de instancias
SAM 2 pequeñossam2_s.ptSegmentación de instancias
SAM 2 basesam2_b.ptSegmentación de instancias
SAM 2 grandessam2_l.ptSegmentación de instancias
SAM 2.1 Minúsculasam2.1_t.ptSegmentación de instancias
SAM 2.1 pequeñosam2.1_s.ptSegmentación de instancias
SAM 2.1 Basesam2.1_b.ptSegmentación de instancias
SAM 2.1 grandesam2.1_l.ptSegmentació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.

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
  • 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:

ModeloTamaño
(MB)
Parámetros
(M)
Velocidad (CPU)
(ms/im)
Meta SAM-b37593.7161440
Meta SAM2-b16280.8121923
Meta SAM2-t78.138.985155
MobileSAM40.710.198543
FastSAM-s con YOLOv8 columna vertebral23.711.8140
Ultralytics YOLOv8n-seg6,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

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
ArgumentoTipoDescripciónPor defecto
datastrRuta a una carpeta que contenga las imágenes que se van a anotar.
det_modelstropcionalModelo de detección preentrenado YOLO . Por defecto es 'yolo11x.pt'.'yolo11x.pt'
sam_modelstropcionalModelo de segmentación preentrenado SAM 2. Por defecto es 'sam2_b.pt'.'sam2_b.pt'
devicestropcionalDispositivo en el que se ejecutarán los modelos. Por defecto es una cadena vacía (CPU o GPU, si está disponible).
conffloatopcionalUmbral de confianza para el modelo de detección; por defecto es 0,25.0.25
ioufloatopcionalUmbral de IoU para filtrar las cajas superpuestas en los resultados de detección; por defecto es 0,45.0.45
imgszintopcionalDimensión de redimensionamiento de la imagen de entrada; por defecto es 640.640
max_detintopcionalLimita las detecciones por imagen para controlar las salidas en escenas densas.300
classeslistopcionalFiltra las predicciones a los ID de clase especificados, devolviendo sólo las detecciones relevantes.None
output_dirstr, NoneopcionalDirectorio 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:

ModeloTamaño
(MB)
Parámetros
(M)
Velocidad (CPU)
(ms/im)
Meta SAM-b37593.7161440
Meta SAM2-b16280.8121923
Meta SAM2-t78.138.985155
MobileSAM40.710.198543
FastSAM-s con YOLOv8 columna vertebral23.711.8140
Ultralytics YOLOv8n-seg6,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.

📅 C reado hace 3 meses ✏️ Actualizado hace 18 días

Comentarios