
Link to this sectionMobile Segment Anything (MobileSAM)#
MobileSAM es un modelo de segmentación de imágenes compacto y eficiente, diseñado específicamente para dispositivos móviles y de borde. Creado para llevar la potencia del Segment Anything Model (SAM) de Meta a entornos con capacidad de cómputo limitada, MobileSAM ofrece una segmentación casi instantánea mientras mantiene la compatibilidad con el pipeline original de SAM. Ya sea que estés 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.
Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉
MobileSAM ha sido adoptado en una variedad de proyectos, incluidos 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.
Link to this sectionModelos disponibles, tareas compatibles y modos de funcionamiento#
La tabla siguiente resume el modelo MobileSAM disponible, sus pesos preentrenados, las tareas soportadas y la compatibilidad con diferentes modos de funcionamiento como Inference, Validation, Training y Export. Los modos soportados se indican con ✅ y los no soportados con ❌.
| Tipo de modelo | Pesos preentrenados | Tareas compatibles | Inferencia | Validación | Entrenamiento | Exportar |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | Segmentación de instancias | ✅ | ❌ | ❌ | ❌ |
Link to this sectionComparativa de MobileSAM frente a YOLO#
La siguiente comparativa destaca las diferencias entre las variantes de SAM de Meta, MobileSAM y los modelos de segmentación de Ultralytics, incluido YOLO26n-seg:
| Modelo | Tamaño (MB) | Parámetros (M) | Velocidad (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s con backbone de YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0x más pequeño) | 3.4 (11.4x menos) | 24.8 (945x más rápido) |
| Ultralytics YOLO11n-seg | 6.2 (12.6x más pequeño) | 2.9 (13.4x menos) | 24.3 (964x más rápido) |
| Ultralytics YOLO26n-seg | 6.7 (11.7x más pequeño) | 2.7 (14.4x menos) | 25.2 (930x más rápido) |
Esta comparativa 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. Mientras que 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.
Velocidades de SAM medidas con PyTorch, velocidades de YOLO medidas con ONNX Runtime. Pruebas realizadas en un Apple M4 Air de 2025 con 16GB de RAM usando torch==2.10.0, ultralytics==8.4.31 y onnxruntime==1.24.4. Para reproducir estos resultados:
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)
model = YOLO(onnx_path)
model(ASSETS)Link to this sectionAdaptación de SAM a MobileSAM#
MobileSAM conserva el mismo pipeline que SAM original, incluyendo el preprocesamiento, el postprocesamiento y todas las interfaces. Esto significa que puedes realizar la transición de SAM a MobileSAM con cambios mínimos en tu flujo de trabajo.
La diferencia clave es el codificador de imágenes: MobileSAM sustituye el codificador original ViT-H (637M de parámetros) por un codificador Tiny-ViT mucho más pequeño (5M de parámetros). En una sola GPU, MobileSAM procesa una imagen en unos 12ms (8ms para el codificador, 4ms para el decodificador de máscaras).
Link to this sectionComparativa de codificadores de imágenes basados en ViT#
| Codificador de imágenes | SAM original | MobileSAM |
|---|---|---|
| Parámetros | 637M | 5M |
| Velocidad | 452ms | 8ms |
Link to this sectionDecodificador de máscara guiado por prompts#
| Decodificador de máscara | SAM original | MobileSAM |
|---|---|---|
| Parámetros | 3.876M | 3.876M |
| Velocidad | 4ms | 4ms |
Link to this sectionComparativa de todo el pipeline#
| Todo el pipeline (Cod+Dec) | SAM original | MobileSAM |
|---|---|---|
| Parámetros | 641M | 9.66M |
| Velocidad | 456ms | 12ms |
El rendimiento de MobileSAM y el SAM original se ilustra a continuación utilizando prompts de punto y de caja.


MobileSAM es aproximadamente 7 veces más pequeño y 5 veces más rápido que FastSAM. Para más detalles, visita la página del proyecto MobileSAM.
Link to this sectionPruebas de MobileSAM en Ultralytics#
Al igual que el SAM original, Ultralytics proporciona una interfaz sencilla para probar MobileSAM, soportando tanto prompts de punto como de caja.
Link to this sectionDescarga del modelo#
Descarga los pesos preentrenados de MobileSAM desde los recursos de Ultralytics.
Link to this sectionPrompt de punto#
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]])Link to this sectionPrompt de caja#
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]])Tanto MobileSAM como SAM comparten la misma API. Para más detalles de uso, consulta la documentación de SAM.
Link to this sectionConstruye automáticamente conjuntos de datos de segmentación utilizando un modelo de detección#
Para anotar tu conjunto de datos automáticamente con el framework de Ultralytics, utiliza la función auto_annotate como se muestra a continuación:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")| Argumento | Tipo | Predeterminado | 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 | 'yolo26x.pt' | Ruta del modelo de detección YOLO para la detección inicial de objetos. |
sam_model | str | 'sam_b.pt' | Ruta del modelo SAM para segmentación (admite pesos de SAM, SAM 2, MobileSAM y SAM 3). |
device | str | '' | Dispositivo de computación (p. ej., 'cuda:0', 'cpu', o '' para la detección automática del dispositivo). |
conf | float | 0.25 | Umbral de confianza de detección YOLO para filtrar detecciones débiles. |
iou | float | 0.45 | Umbral de IoU para la supresión de no máximos (NMS) con el fin de filtrar cajas superpuestas. |
imgsz | int | 640 | Tamaño de entrada para redimensionar imágenes (debe ser múltiplo de 32). |
max_det | int | 300 | Número máximo de detecciones por imagen para la eficiencia de la memoria. |
classes | list[int] | None | Lista de índices de clases a detectar (p. ej., [0, 1] para persona y bicicleta). |
output_dir | str | None | Directorio de guardado para anotaciones (predeterminado: el hermano de <data>_auto_annotate_labels). |
Link to this sectionCitas y agradecimientos#
Si MobileSAM te resulta útil en tu investigación o desarrollo, por favor considera 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}
}Lee el artículo completo de MobileSAM en arXiv.
Link to this sectionFAQ#
Link to this section¿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 de borde (edge). Mantiene la misma tubería que el SAM original, pero reemplaza el gran codificador ViT-H (637M de parámetros) por un codificador Tiny-ViT compacto (5M de parámetros). Esto da como resultado que MobileSAM sea unas 5 veces más pequeño y 7 veces más rápido que el SAM original, operando a aproximadamente 12ms por imagen frente a los 456ms de SAM. Explora más sobre la implementación de MobileSAM en el repositorio de GitHub de MobileSAM.
Link to this section¿Cómo puedo probar MobileSAM usando Ultralytics?#
Probar MobileSAM en Ultralytics es sencillo. Puedes usar prompts de puntos y 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 más detalles, consulta la sección Testing MobileSAM in Ultralytics.
Link to this section¿Por qué debería usar MobileSAM para mi aplicación móvil?#
MobileSAM es ideal para aplicaciones móviles y de borde debido a su diseño ligero y a 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 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.
Link to this section¿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 100 000 imágenes (1% de las imágenes originales) en menos de un día. Aunque el código de entrenamiento se publicará en el futuro, actualmente puedes acceder a los pesos preentrenados y a los detalles de la implementación en el repositorio de GitHub de MobileSAM.
Link to this section¿Cuáles son los casos de uso principales de MobileSAM?#
MobileSAM está diseñado para una segmentación de imágenes rápida y eficiente en entornos móviles y de borde. Sus casos de uso principales 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 computación limitada
- Integración en aplicaciones móviles con IA para realidad aumentada (AR), análisis y más
Para más detalles sobre casos de uso y rendimiento, consulta Adapting from SAM to MobileSAM y el blog de Ultralytics sobre MobileSAM.