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 En savoir plus sur MobileSAM, son implémentation, la comparaison avec SAM d'origine, et comment le télécharger et le tester dans le cadre de l'environnement Ultralytics. Améliorez vos applications mobiles dès aujourd'hui. MobileSAM, Ultralytics, SAM, applications mobiles, Arxiv, GPU, API, encodeur d'image, décodeur de masque, téléchargement de modèle, méthode de test

Logo MobileSAM

Segmenter N'importe Quoi sur Mobile (MobileSAM)

Le document MobileSAM est maintenant disponible sur arXiv.

Une démonstration de MobileSAM exécutée sur un processeur CPU est accessible via ce lien de démonstration. Les performances sur un CPU Mac i5 prennent environ 3 secondes. Sur la démo de Hugging Face, l'interface ainsi que les CPU moins performants contribuent à une réponse plus lente, mais cela continue de fonctionner efficacement.

MobileSAM est implémenté dans divers projets, notamment Grounding-SAM, AnyLabeling, et Segment Anything en 3D.

MobileSAM est entraîné sur un seul GPU avec un ensemble de données de 100 000 images (1% des images originales) en moins d'une journée. Le code de cet entraînement sera disponible à l'avenir.

Modèles Disponibles, Tâches Prises en Charge et Modes d'Utilisation

Ce tableau présente les modèles disponibles avec leurs poids pré-entraînés spécifiques, les tâches qu'ils prennent en charge, et leur compatibilité avec les différents modes d'utilisation tels que Inférence, Validation, Entraînement et Export, indiqués par les emojis pour les modes pris en charge et pour les modes non pris en charge.

Type de Modèle Poids Pré-entraînés Tâches Prises en Charge Inférence Validation Entraînement Export
MobileSAM mobile_sam.pt Segmentation d'Instances

Passage de SAM à MobileSAM

Étant donné que MobileSAM conserve le même pipeline que SAM d'origine, nous avons incorporé le pré-traitement, le post-traitement et toutes les autres interfaces de l'original. Par conséquent, ceux qui utilisent actuellement SAM d'origine peuvent passer à MobileSAM avec un effort minimal.

MobileSAM a des performances comparables à celles de SAM d'origine et conserve le même pipeline à l'exception d'un changement dans l'encodeur d'image. Plus précisément, nous remplaçons l'encodeur d'image lourd original ViT-H (632M) par un encodeur Tiny-ViT plus petit (5M). Sur un seul GPU, MobileSAM fonctionne à environ 12 ms par image : 8 ms sur l'encodeur d'image et 4 ms sur le décodeur de masque.

Le tableau suivant présente une comparaison des encodeurs d'image basés sur ViT :

Encodeur d'Image SAM d'Origine MobileSAM
Paramètres 611M 5M
Vitesse 452 ms 8 ms

SAM d'origine et MobileSAM utilisent tous deux le même décodeur de masque basé sur une instruction :

Décodeur de Masque SAM d'Origine MobileSAM
Paramètres 3.876M 3.876M
Vitesse 4 ms 4 ms

Voici une comparaison du pipeline complet :

Pipeline Complet (Enc+Dec) SAM d'Origine MobileSAM
Paramètres 615M 9.66M
Vitesse 456 ms 12 ms

Les performances de MobileSAM et de SAM d'origine sont démontrées en utilisant à la fois un point et une boîte comme instructions.

Image avec un Point comme Instruction

Image avec une Boîte comme Instruction

Avec ses performances supérieures, MobileSAM est environ 5 fois plus petit et 7 fois plus rapide que FastSAM actuel. Plus de détails sont disponibles sur la page du projet MobileSAM.

Test de MobileSAM dans Ultralytics

Tout comme SAM d'origine, nous proposons une méthode de test simple dans Ultralytics, comprenant des modes pour les instructions Point et Boîte.

Téléchargement du modèle

Vous pouvez télécharger le modèle ici.

Instruction Point

!!! Example "Exemple"

=== "Python"
    ```python
    from ultralytics import SAM

    # Chargement du modèle
    model = SAM('mobile_sam.pt')

    # Prédiction d'un segment à partir d'une instruction Point
    model.predict('ultralytics/assets/zidane.jpg', points=[900, 370], labels=[1])
    ```

Instruction Boîte

!!! Example "Exemple"

=== "Python"
    ```python
    from ultralytics import SAM

    # Chargement du modèle
    model = SAM('mobile_sam.pt')

    # Prédiction d'un segment à partir d'une instruction Boîte
    model.predict('ultralytics/assets/zidane.jpg', bboxes=[439, 437, 524, 709])
    ```

Nous avons mis en œuvre MobileSAM et SAM en utilisant la même API. Pour plus d'informations sur l'utilisation, veuillez consulter la page SAM.

Citations et Remerciements

Si vous trouvez MobileSAM utile dans vos travaux de recherche ou de développement, veuillez envisager de citer notre document :

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