Ir al contenido

MobileSAM Logotipo

Segmento móvil Cualquier cosa (MobileSAM)

MobileSAM es un modelo de segmentación de imágenes compacto y eficiente, diseñado específicamente para dispositivos móviles y periféricos. Diseñado para llevar la potencia del Segment Anything Model de Meta (SAM) a entornos con capacidad de cómputo limitada, MobileSAM ofrece una segmentación casi instantánea, manteniendo la compatibilidad con la canalización SAM original. Ya sea que esté desarrollando aplicaciones en tiempo real o implementaciones ligeras, MobileSAM proporciona resultados de segmentación impresionantes con una fracción del tamaño y los requisitos de velocidad de sus predecesores.



Observa: Cómo ejecutar la inferencia con MobileSAM utilizando Ultralytics | Guía paso a paso 🎉

MobileSAM ha sido adoptado en una variedad de proyectos, incluyendo Grounding-SAM, AnyLabeling y Segment Anything in 3D.

MobileSAM se entrenó en una sola GPU utilizando un conjunto de datos de 100k imágenes (1% de las imágenes originales) en menos de un día. El código de entrenamiento se publicará en el futuro.

Modelos disponibles, tareas admitidas y modos de funcionamiento

La siguiente tabla describe el modelo MobileSAM disponible, sus pesos pre-entrenados, las tareas compatibles y la compatibilidad con diferentes modos de operación como Inferencia, Validación, Entrenamiento y Exportación. Los modos compatibles se indican con ✅ y los modos no compatibles con ❌.

Tipo de modelo Pesas preentrenadas Tareas admitidas Inferencia Validación Formación Exportar
MobileSAM mobile_sam.pt Segmentación de instancias

Comparación entre MobileSAM y YOLO

La siguiente comparación destaca las diferencias entre las variantes SAM de Meta, MobileSAM y los modelos de segmentación más pequeños de Ultralytics, incluyendo YOLO11n-seg:

Modelo Tamaño
(MB)
Parámetros
(M)
Velocidad (CPU)
(ms/im)
Meta SAM-b 375 93.7 49401
Meta SAM2-b 162 80.8 31901
Meta SAM2-t 78.1 38.9 25997
MobileSAM 40.7 10.1 25381
FastSAM conred troncal YOLOv8 23.7 11.8 55.9
Ultralytics YOLOv8n 6,7 (11,7 veces menor) 3,4 (11,4 veces menos) 24,5 (1061 veces más rápido)
Ultralytics YOLO11n-seg 5,9 (13,2x menor) 2,9 (13,4 veces menos) 30,1 (864 veces más rápido)

Esta comparación demuestra las diferencias sustanciales en el tamaño y la velocidad del modelo entre las variantes de SAM y los modelos de segmentación YOLO. Si bien los modelos SAM ofrecen capacidades únicas de segmentación automática, los modelos YOLO, especialmente YOLOv8n-seg y YOLO11n-seg, son significativamente más pequeños, rápidos y computacionalmente eficientes.

Las pruebas se realizaron en un Apple M4 Pro 2025 con 24 GB de RAM usando torch==2.6.0 y ultralytics==8.3.90. Para reproducir estos resultados:

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 YOLO models
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

Adaptación de SAM a MobileSAM

MobileSAM conserva la misma canalización que el SAM original, incluido el preprocesamiento, el postprocesamiento y todas las interfaces. Esto significa que puede realizar la transición de SAM a MobileSAM con cambios mínimos en su flujo de trabajo.

La diferencia clave reside en el codificador de imágenes: MobileSAM reemplaza el codificador ViT-H original (632M parámetros) con un codificador Tiny-ViT mucho más pequeño (5M parámetros). En una sola GPU, MobileSAM procesa una imagen en aproximadamente 12 ms (8 ms para el codificador, 4 ms para el decodificador de máscara).

Comparación del codificador de imágenes basado en ViT

Codificador de imágenes Original SAM MobileSAM
Parámetros 611M 5M
Velocidad 452ms 8ms

Decodificador de Máscaras Guiado por Prompt

Decodificador de máscaras Original SAM MobileSAM
Parámetros 3.876M 3.876M
Velocidad 4ms 4ms

Comparación de la Tubería Completa

Tubería completa (Enc+Dec) Original SAM MobileSAM
Parámetros 615M 9.66M
Velocidad 456 ms 12ms

El rendimiento de MobileSAM y el SAM original se ilustra a continuación utilizando indicaciones tanto de puntos como de cuadros.

Imagen con punto como indicador

Imagen con recuadro

MobileSAM es aproximadamente 5 veces más pequeño y 7 veces más rápido que FastSAM. Para obtener más detalles, visite la página del proyecto MobileSAM.

Pruebas MobileSAM en Ultralytics

Al igual que el SAM original, Ultralytics proporciona una interfaz sencilla para probar MobileSAM, que admite indicaciones tanto de puntos como de cajas.

Descarga de modelos

Descarga los pesos preentrenados de MobileSAM desde los recursos de Ultralytics.

Punto Prompt

Ejemplo

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Caja Prompt

Ejemplo

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Ambos MobileSAM y SAM comparten la misma API. Para obtener más detalles sobre el uso, consulte el Documentación de SAM.

Creación automática de conjuntos de datos de segmentación mediante un modelo de detección

Para anotar automáticamente tu conjunto de datos con el framework de Ultralytics, utiliza el auto_annotate como se muestra a continuación:

Ejemplo

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Argumento Tipo Por defecto Descripción
data str obligatorio Ruta al directorio que contiene las imágenes de destino para la anotación o segmentación.
det_model str 'yolo11x.pt' YOLO trayectoria del modelo de detección para la detección inicial de objetos.
sam_model str 'sam_b.pt' Trayectoria del modelo SAM para la segmentación (admite las variantes SAM, SAM2 y los modelos mobile_sam).
device str '' Dispositivo de cálculo (por ejemplo, 'cuda:0', 'cpu', o '' para la detección automática de dispositivos).
conf float 0.25 YOLO umbral de confianza de detección para filtrar las detecciones débiles.
iou float 0.45 Umbral IoU de Supresión No Máxima para filtrar cajas solapadas.
imgsz int 640 Tamaño de entrada para redimensionar las imágenes (debe ser múltiplo de 32).
max_det int 300 Número máximo de detecciones por imagen para ahorrar memoria.
classes list[int] None Lista de índices de clase a detectar (por ejemplo, [0, 1] para persona y bicicleta).
output_dir str None Guardar directorio para anotaciones (por defecto './labels' relativo a la ruta de datos).

Citas y agradecimientos

Si MobileSAM es útil en su investigación o desarrollo, considere citar el siguiente artículo:

@article{mobile_sam,
  title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
  author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
  journal={arXiv preprint arXiv:2306.14289},
  year={2023}
}

Lea el artículo completo de MobileSAM en arXiv.

PREGUNTAS FRECUENTES

¿Qué es MobileSAM y en qué se diferencia del modelo SAM original?

MobileSAM es un modelo de segmentación de imágenes ligero y rápido optimizado para aplicaciones móviles y periféricas. Mantiene la misma canalización que el SAM original, pero reemplaza el gran codificador ViT-H (632 millones de parámetros) con un codificador Tiny-ViT compacto (5 millones de parámetros). Esto da como resultado que MobileSAM sea aproximadamente 5 veces más pequeño y 7 veces más rápido que el SAM original, operando a aproximadamente 12 ms por imagen frente a los 456 ms de SAM. Explore más sobre la implementación de MobileSAM en el repositorio de MobileSAM en GitHub.

¿Cómo puedo probar MobileSAM usando Ultralytics?

Probar MobileSAM en Ultralytics es sencillo. Puedes usar indicaciones de Punto y Caja para predecir segmentos. Por ejemplo, usando una indicación de Punto:

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

Para obtener más detalles, consulta la sección Pruebas de MobileSAM en Ultralytics.

¿Por qué debería usar MobileSAM para mi aplicación móvil?

MobileSAM es ideal para aplicaciones móviles y periféricas debido a su diseño ligero y su rápida velocidad de inferencia. En comparación con el SAM original, MobileSAM es aproximadamente 5 veces más pequeño y 7 veces más rápido, lo que lo hace adecuado para la segmentación en tiempo real en dispositivos con recursos computacionales limitados. Su eficiencia permite que los dispositivos móviles realicen la segmentación de imágenes en tiempo real sin una latencia significativa. Además, MobileSAM admite el modo de inferencia optimizado para el rendimiento móvil.

¿Cómo se entrenó MobileSAM y está disponible el código de entrenamiento?

MobileSAM se entrenó en una sola GPU con un conjunto de datos de 100k imágenes (1% de las imágenes originales) en menos de un día. Si bien el código de entrenamiento se publicará en el futuro, actualmente puede acceder a los pesos pre-entrenados y a los detalles de implementación desde el repositorio de MobileSAM en GitHub.

¿Cuáles son los principales casos de uso de MobileSAM?

MobileSAM está diseñado para una segmentación de imágenes rápida y eficiente en entornos móviles y periféricos. Los principales casos de uso incluyen:

  • Detección y segmentación de objetos en tiempo real para aplicaciones móviles
  • Procesamiento de imágenes de baja latencia en dispositivos con capacidad de cálculo limitada
  • Integración en aplicaciones móviles impulsadas por IA para realidad aumentada (RA), análisis y más

Para obtener más detalles sobre los casos de uso y el rendimiento, consulta Adaptación de SAM a MobileSAM y el blog de Ultralytics sobre las aplicaciones de MobileSAM.



Creado hace 1 año ✏️ Actualizado hace 2 meses

Comentarios