Ultralytics YOLO27:

Logotipo del modelo ligero de segmentación de imágenes MobileSAM

Segment Anything móvil (MobileSAM)#

MobileSAM es un modelo compacto y eficiente de segmentación de imágenes, diseñado específicamente para dispositivos móviles y periféricos. Diseñado para llevar la potencia del modelo Segment Anything de Meta (SAM) a entornos con recursos de computación limitados, MobileSAM ofrece una segmentación prácticamente instantánea, manteniendo la compatibilidad con el pipeline original de SAM. Tanto si desarrollas aplicaciones en tiempo real como implementaciones ligeras, MobileSAM proporciona resultados de segmentación impresionantes con una fracción de los requisitos de tamaño y velocidad de sus predecesores.



Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

MobileSAM se ha adoptado en diversos proyectos, como Grounding-SAM, AnyLabeling y Segment Anything en 3D.

MobileSAM se entrenó en una sola GPU utilizando un conjunto de datos de 100 mil imágenes (el 1 % de las imágenes originales) en menos de un día.

Modelos disponibles, tareas compatibles y modos de funcionamiento#

La tabla siguiente resume el modelo MobileSAM disponible, sus pesos preentrenados, las tareas compatibles y la compatibilidad con distintos modos de funcionamiento, como Inferencia, Validación, Entrenamiento y Exportación. Los modos compatibles se indican con ✅ y los no compatibles, con ❌.

Tipo de modeloPesos preentrenadosTareas compatiblesEntrenamientoValidaciónInferenciaExportar
MobileSAMmobile_sam.ptSegmentación de instancias

Comparación de MobileSAM con YOLO#

La siguiente comparación destaca las diferencias entre las variantes SAM de Meta, MobileSAM y los modelos de segmentación de Ultralytics, incluido YOLO26n-seg:

ModeloTamaño
(MB)
Parámetros
(M)
Velocidad (CPU)
(ms/im)
SAM-b de Meta37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s con backbone YOLOv823.911.858.0
YOLOv8n-seg de Ultralytics7.1 (11.0 veces más pequeño)3.4 (11.4 veces menos)24.8 (945 veces más rápido)
YOLO11n-seg de Ultralytics6.2 (12.6x más pequeño)2.9 (13.4 veces menos)24.3 (964x más rápido)
YOLO26n-seg de Ultralytics6.7 (11.7 veces más pequeño)2.7 (14.4x menos)25.2 (930 veces más rápido)

Esta comparación demuestra las diferencias sustanciales de tamaño y velocidad entre las variantes SAM y los modelos de segmentación YOLO. Aunque los modelos SAM ofrecen capacidades únicas de segmentación automática, los modelos YOLO —especialmente YOLOv8n-seg, YOLO11n-seg y YOLO26n-seg— son significativamente más pequeños, rápidos y eficientes desde el punto de vista computacional.

Las velocidades de SAM se han medido con PyTorch y las de YOLO, con ONNX Runtime. Las pruebas se han ejecutado en un Apple M4 Air de 2025 con 16 GB de RAM utilizando torch==2.10.0, ultralytics==8.4.31 y onnxruntime==1.24.4. 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 (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True, nms=False)  # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Adaptación de SAM a MobileSAM#

MobileSAM conserva el mismo pipeline que el SAM original, incluido el preprocesamiento, el posprocesamiento y todas las interfaces. Esto significa que puedes pasar de SAM a MobileSAM con cambios mínimos en tu flujo de trabajo.

La diferencia principal es el codificador de imágenes: MobileSAM sustituye el codificador ViT-H original (637 M de parámetros) por un codificador Tiny-ViT mucho más pequeño (5 M de parámetros). En una sola GPU, MobileSAM procesa una imagen en unos 12 ms (8 ms para el codificador y 4 ms para el decodificador de máscaras).

Comparación de codificadores de imágenes basados en ViT#

Codificador de imágenesSAM originalMobileSAM
Parámetros637M5M
Velocidad452ms8ms

Decodificador de máscaras guiado por prompts#

Decodificador de máscarasSAM originalMobileSAM
Parámetros3,876M3,876M
Velocidad4ms4ms

Comparación del pipeline completo#

Pipeline completo (codificador + decodificador)SAM originalMobileSAM
Parámetros641M9,66M
Velocidad456ms12ms

El rendimiento de MobileSAM y del SAM original se ilustra a continuación utilizando prompts de puntos y de cajas.

Imagen con un punto como prompt

Imagen con una caja como prompt

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

Prueba de MobileSAM en Ultralytics#

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

Descarga del modelo#

Descarga los pesos preentrenados de MobileSAM desde recursos de Ultralytics.

Prompt de punto#

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]])

Prompt de caja#

Ejemplo
from ultralytics import SAM

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

# Predict a segment based on a single box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Predict multiple segments based on multiple box prompts
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

MobileSAM y SAM comparten la misma API. Para obtener más información sobre el uso, consulta la 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 la función auto_annotate, como se muestra a continuación:

Ejemplo
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
ArgumentoTipoPredeterminadoDescripción
datastrobligatorioRuta al directorio que contiene las imágenes de destino para la anotación o segmentación.
det_modelstr'yolo26x.pt'Ruta al modelo de detección YOLO para la detección inicial de objetos.
sam_modelstr'sam_b.pt'Ruta al modelo SAM para la segmentación (admite los pesos de SAM, SAM 2, MobileSAM y SAM 3).
devicestr''Dispositivo de cálculo (por ejemplo, 'cuda:0', 'cpu' o '' para la detección automática del dispositivo).
conffloat0.25Umbral de confianza de la detección YOLO para filtrar las detecciones débiles.
ioufloat0.45Umbral de IoU para la supresión no máxima, que permite filtrar las cajas superpuestas.
imgszint640Tamaño de entrada para cambiar el tamaño de las imágenes (debe ser múltiplo de 32).
max_detint300Número máximo de detecciones por imagen para optimizar el uso de memoria.
classeslist[int]NoneLista de índices de clase que se detectarán (por ejemplo, [0, 1] para persona y bicicleta).
output_dirstrNoneDirectorio donde se guardarán las anotaciones (de forma predeterminada: directorio hermano de <data>_auto_annotate_labels).

Citas y agradecimientos#

Si MobileSAM te resulta útil en tu investigación o desarrollo, considera citar el siguiente artículo:

Cita
@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}
}

Lee el artículo completo de MobileSAM en arXiv.

Preguntas frecuentes#

  • MobileSAM es un modelo de segmentación de imágenes ligero y rápido optimizado para aplicaciones móviles y de borde. Mantiene la misma tubería que el SAM original, pero reemplaza el gran codificador ViT-H (637 millones de parámetros) por un codificador Tiny-ViT compacto (5 millones de parámetros). Esto hace que toda la tubería de MobileSAM sea unas 66 veces más pequeña que la del SAM original (9.66 millones frente a 641 millones de parámetros) y unas 38 veces más rápida, operando a aproximadamente 12 ms por imagen frente a los 456 ms del SAM. Explora más sobre la implementación de MobileSAM en el repositorio de GitHub de MobileSAM.

  • Probar MobileSAM en Ultralytics es sencillo. Puedes utilizar prompts de puntos y de cajas para predecir segmentos. Por ejemplo, utilizando un prompt 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 información, consulta la sección Prueba de MobileSAM en Ultralytics.

  • MobileSAM es ideal para aplicaciones móviles y de borde debido a su diseño ligero y su rápida velocidad de inferencia. En comparación con el SAM original, MobileSAM tiene unos 66 veces menos parámetros y se ejecuta unas 38 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 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.

  • MobileSAM se entrenó en una sola GPU con un conjunto de datos de 100 mil imágenes (el 1 % de las imágenes originales de SA-1B) en menos de un día, destilando el codificador de imágenes ViT-H de SAM en un codificador Tiny-ViT. Los pesos preentrenados y los detalles de implementación están disponibles en el repositorio de GitHub de MobileSAM.

  • MobileSAM está diseñado para realizar una segmentación de imágenes rápida y eficiente en entornos móviles y periféricos. Entre los principales casos de uso se 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 recursos de computación limitados
    • Integración en aplicaciones móviles basadas en IA para realidad aumentada (AR), análisis y mucho más

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

Comentarios