Ultralytics YOLO27:
Get Started

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

Mobile Segment Anything (MobileSAM)#

MobileSAM es un modelo compacto y eficiente de segmentación de imágenes, diseñado específicamente para dispositivos móviles y de edge computing. Creado para llevar la potencia del Modelo de segmentación de cualquier cosa de Meta (SAM) a entornos con recursos informáticos limitados, MobileSAM ofrece segmentación casi instantánea y mantiene la compatibilidad con el flujo de trabajo original de SAM. Tanto si desarrollas aplicaciones en tiempo real como si preparas implementaciones ligeras, MobileSAM proporciona resultados de segmentación impresionantes con una fracción de los requisitos de tamaño y velocidad de sus predecesores.



Ver: Cómo ejecutar inferencias con MobileSAM mediante Ultralytics | Guía paso a paso 🎉

MobileSAM se ha incorporado a diversos proyectos, como Grounding-SAM, AnyLabeling y Segment Anything in 3D.

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

Modelos disponibles, tareas compatibles y modos de funcionamiento#

La siguiente tabla describe 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
Ultralytics YOLOv8n-seg7.1 (11.0x más pequeño)3.4 (11.4x menos)24.8 (945x más rápido)
Ultralytics YOLO11n-seg6.2 (12.6x más pequeño)2.9 (13.4x menos)24.3 (964x más rápido)
Ultralytics YOLO26n-seg6.7 (11.7x más pequeño)2.7 (14.4x menos)25.2 (930x más rápido)

Esta comparación muestra las diferencias sustanciales de tamaño y velocidad entre las variantes de 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 mucho 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 realizado en un Apple M4 Air de 2025 con 16 GB de RAM usando 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

# Perfilar 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)

# Perfilar FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Perfilar modelos YOLO (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)  # Cabezal sin NMS de YOLO26; no hace nada con YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Adaptación de SAM a MobileSAM#

MobileSAM conserva el mismo flujo de procesamiento 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 clave está en 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ámetros637M5 M
Velocidad452ms8 ms

Decodificador de máscaras guiado por indicaciones#

Decodificador de máscarasSAM originalMobileSAM
Parámetros3,876 M3,876 M
Velocidad4 ms4 ms

Comparación del flujo de procesamiento completo#

Flujo de procesamiento completo (codificador + decodificador)SAM originalMobileSAM
Parámetros641M9,66 M
Velocidad456ms12 ms

A continuación se muestra el rendimiento de MobileSAM y del SAM original con indicaciones de puntos y de cuadros.

Imagen con un punto como indicación

Imagen con un cuadro como indicación

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 ofrece una interfaz sencilla para probar MobileSAM, compatible con indicaciones de puntos y de cuadros.

Descarga del modelo#

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

Indicación de punto#

Ejemplo
from ultralytics import SAM

# Carga el modelo
model = SAM("mobile_sam.pt")

# Predice un segmento a partir de una indicación de un solo punto
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predice varios segmentos a partir de indicaciones de varios puntos
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predice un segmento por objeto a partir de indicaciones de varios puntos
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predice un segmento usando indicaciones positivas y negativas.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Indicación de cuadro#

Ejemplo
from ultralytics import SAM

# Carga el modelo
model = SAM("mobile_sam.pt")

# Predice un segmento a partir de una indicación de un solo cuadro
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Predice varios segmentos a partir de indicaciones de varios cuadros
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

Tanto MobileSAM como SAM comparten la misma API. Para obtener más información sobre su uso, consulta la documentación de SAM.

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

Para anotar automáticamente tu conjunto de datos con el framework Ultralytics, usa 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 que se van a anotar o segmentar.
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 (p. ej., 'cuda:0', 'cpu' o '' para detectar automáticamente el dispositivo).
conffloat0.25Umbral de confianza de detección YOLO para filtrar las detecciones poco fiables.
ioufloat0.45Umbral de IoU para la supresión no máxima (NMS) y el filtrado de cajas superpuestas.
imgszint640Tamaño de entrada para cambiar el tamaño de las imágenes (se redondea al múltiplo de 32 más cercano por exceso si es necesario).
max_detint300Número máximo de detecciones por imagen para optimizar el uso de memoria.
classeslist[int]NoneLista de índices de clase que se van a detectar (p. ej., [0, 1] para persona y bicicleta).
output_dirstrNoneDirectorio donde se guardan las anotaciones (por defecto: directorio hermano de <data>_auto_annotate_labels).

Citas y agradecimientos#

Si MobileSAM te resulta útil en tus investigaciones 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 ligero y rápido de segmentación de imágenes, optimizado para aplicaciones móviles y de edge. Mantiene el mismo flujo de procesamiento que el SAM original, pero sustituye el gran codificador ViT-H (637 M de parámetros) por un codificador Tiny-ViT compacto (5 M de parámetros). Esto hace que el flujo de procesamiento completo de MobileSAM sea unas 66 veces más pequeño que el del SAM original (9,66 M frente a 641 M de parámetros) y unas 38 veces más rápido: procesa cada imagen en aproximadamente 12 ms, frente a los 456 ms de SAM. Descubre más sobre la implementación de MobileSAM en el repositorio de MobileSAM en GitHub.

  • Probar MobileSAM en Ultralytics es sencillo. Puedes usar indicaciones de puntos y de cuadros para predecir segmentos. Por ejemplo, con una indicación de punto:

    from ultralytics import SAM
    
    # Carga el modelo
    model = SAM("mobile_sam.pt")
    
    # Predice un segmento a partir de una indicación de punto
    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 edge gracias a su diseño ligero y a la rapidez de inferencia. En comparación con el SAM original, MobileSAM tiene aproximadamente 66 veces menos parámetros y se ejecuta unas 38 veces más rápido, por lo que es 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 en dispositivos móviles.

  • MobileSAM se entrenó en una sola GPU con un conjunto de datos de 100 000 imágenes (el 1 % de las imágenes originales de SA-1B) en menos de un día; para ello, se destiló 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 MobileSAM en GitHub.

  • MobileSAM está diseñado para la segmentación de imágenes rápida y eficiente en entornos móviles y de edge. Entre sus principales casos de uso se incluyen:

    • Detección y segmentación de objetos en tiempo real para aplicaciones móviles
    • Procesamiento de imágenes con baja latencia en dispositivos con capacidad de cálculo limitada
    • 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 las aplicaciones de Segment Anything.

Comentarios