6.4 KiB
comments | description | keywords |
---|---|---|
true | Obtén más información sobre MobileSAM, su implementación, comparación con SAM original y cómo descargarlo y probarlo en el framework de Ultralytics. ¡Mejora tus aplicaciones móviles hoy mismo! | MobileSAM, Ultralytics, SAM, aplicaciones móviles, Arxiv, GPU, API, codificador de imágenes, decodificador de máscaras, descarga de modelos, método de prueba |
Segmentación Móvil de Cualquier Cosa (MobileSAM)
El artículo de MobileSAM ahora está disponible en arXiv.
Una demostración de MobileSAM funcionando en una CPU se puede acceder en este enlace de demostración. El rendimiento en una CPU Mac i5 tarda aproximadamente 3 segundos. En la demostración de Hugging Face, la interfaz y las CPUs de menor rendimiento contribuyen a una respuesta más lenta, pero sigue funcionando de manera efectiva.
MobileSAM se implementa en varios proyectos, incluyendo Grounding-SAM, AnyLabeling y Segment Anything in 3D.
MobileSAM se entrena en una sola GPU con un conjunto de datos de 100k (1% de las imágenes originales) en menos de un día. El código para este entrenamiento estará disponible en el futuro.
Modelos Disponibles, Tareas Admitidas y Modos de Operación
Esta tabla presenta los modelos disponibles con sus pesos pre-entrenados específicos, las tareas que admiten y su compatibilidad con diferentes modos de operación como Inference (Inferencia), Validation (Validación), Training (Entrenamiento) y Export (Exportación), indicados por emojis ✅ para los modos admitidos y emojis ❌ para los modos no admitidos.
Tipo de Modelo | Pesos Pre-entrenados | Tareas Admitidas | Inferencia | Validación | Entrenamiento | Exportación |
---|---|---|---|---|---|---|
MobileSAM | mobile_sam.pt |
Segmentación de Instancias | ✅ | ❌ | ❌ | ✅ |
Adaptación de SAM a MobileSAM
Dado que MobileSAM mantiene el mismo pipeline que SAM original, hemos incorporado el pre-procesamiento, post-procesamiento y todas las demás interfaces del original. En consecuencia, aquellos que actualmente utilizan SAM original pueden hacer la transición a MobileSAM con un esfuerzo mínimo.
MobileSAM tiene un rendimiento comparable a SAM original y mantiene el mismo pipeline excepto por un cambio en el codificador de imágenes. Específicamente, reemplazamos el codificador de imágenes original ViT-H pesado (632M) por uno más pequeño, Tiny-ViT (5M). En una sola GPU, MobileSAM funciona a aproximadamente 12ms por imagen: 8ms en el codificador de imágenes y 4ms en el decodificador de máscaras.
La siguiente tabla proporciona una comparación de los codificadores de imágenes basados en ViT:
Codificador de Imágenes | SAM Original | MobileSAM |
---|---|---|
Parámetros | 611M | 5M |
Velocidad | 452ms | 8ms |
Tanto SAM original como MobileSAM utilizan el mismo decodificador de máscaras guiado por instrucciones:
Decodificador de Máscaras | SAM Original | MobileSAM |
---|---|---|
Parámetros | 3.876M | 3.876M |
Velocidad | 4ms | 4ms |
Aquí está la comparación de todo el pipeline:
Pipeline Completo (Enc+Dec) | SAM Original | MobileSAM |
---|---|---|
Parámetros | 615M | 9.66M |
Velocidad | 456ms | 12ms |
El rendimiento de MobileSAM y SAM original se demuestra utilizando tanto un punto como una caja como instrucciones.
Con su rendimiento superior, MobileSAM es aproximadamente 5 veces más pequeño y 7 veces más rápido que el actual FastSAM. Más detalles están disponibles en la página del proyecto de MobileSAM.
Probando MobileSAM en Ultralytics
Al igual que SAM original, ofrecemos un método sencillo de prueba en Ultralytics, que incluye modos tanto para instrucciones de Punto como para Caja.
Descarga del Modelo
Puedes descargar el modelo aquí.
Instrucción de Punto
!!! Example "Ejemplo"
=== "Python"
```python
from ultralytics import SAM
# Carga el modelo
model = SAM('mobile_sam.pt')
# Predice un segmento basado en una instrucción de punto
model.predict('ultralytics/assets/zidane.jpg', points=[900, 370], labels=[1])
```
Instrucción de Caja
!!! Example "Ejemplo"
=== "Python"
```python
from ultralytics import SAM
# Carga el modelo
model = SAM('mobile_sam.pt')
# Predice un segmento basado en una instrucción de caja
model.predict('ultralytics/assets/zidane.jpg', bboxes=[439, 437, 524, 709])
```
Hemos implementado MobileSAM
y SAM
utilizando la misma API. Para obtener más información sobre cómo usarlo, consulta la página de SAM.
Citaciones y Reconocimientos
Si encuentras útil MobileSAM en tu investigación o trabajo de desarrollo, considera citar nuestro artículo:
!!! Quote ""
=== "BibTeX"
```bibtex
@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}
}