You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

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

Logotipo de MobileSAM

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.

Imagen con Punto como Instrucción

Imagen con Caja como Instrucción

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