Skip to content

MobileSAM Logo

Mobile Segment Anything (MobileSAM)

MobileSAM est un modèle de segmentation d'image compact et efficace conçu pour les appareils mobiles et périphériques. Conçu pour apporter la puissance du modèle Segment Anything de Meta (SAM) de Meta dans des environnements où le calcul est limité, MobileSAM offre une segmentation quasi instantanée tout en maintenant la compatibilité avec le pipeline SAM d'origine. Que vous développiez des applications en temps réel ou des déploiements légers, MobileSAM fournit des résultats de segmentation impressionnants avec une fraction de la taille et des exigences de vitesse de ses prédécesseurs.



Regarder : Comment exécuter une inférence avec MobileSAM en utilisant Ultralytics | Guide étape par étape 🎉

MobileSAM a été adopté dans le cadre de divers projets, notamment SAM, AnyLabeling et Segment Anything in 3D.

MobileSAM a été entraîné sur un seul GPU à l'aide d'un ensemble de données de 100 000 images (1 % des images originales) en moins d'une journée. Le code d'entraînement sera publié ultérieurement.

Modèles disponibles, tâches prises en charge et modes de fonctionnement

Le tableau ci-dessous présente le modèle MobileSAM disponible, ses poids pré-entraînés, les tâches prises en charge et la compatibilité avec les différents modes de fonctionnement tels que l'inférence, la validation, l'entraînement et l'exportation. Les modes pris en charge sont indiqués par ✅ et les modes non pris en charge par ❌.

Type de modèle Poids pré-entraînés Tâches prises en charge Inférence Validation Formation Exportation
MobileSAM mobile_sam.pt Segmentation des instances

Comparaison MobileSAM vs YOLO

La comparaison suivante met en évidence les différences entre les variantes SAM de Meta, MobileSAM, et les plus petits modèles de segmentation d'Ultralytics, y compris YOLO11n-seg:

Modèle Taille
(MB)
Paramètres
(M)
Vitesse (CPU)
(ms/im)
Meta SAM-b 375 93.7 49401
Meta SAM2-b 162 80.8 31901
Meta SAM2-t 78.1 38.9 25997
MobileSAM 40.7 10.1 25381
FastSAM avecbackbone YOLOv8 23.7 11.8 55.9
Ultralytics YOLOv8n 6,7 (11,7x plus petit) 3,4 (11,4x moins) 24,5 (1061x plus rapide)
Ultralytics YOLO11n-seg 5,9 (13,2x plus petit) 2,9 (13,4x moins) 30.1 (864 fois plus rapide)

Cette comparaison démontre les différences substantielles en termes de taille et de vitesse des modèles entre les variantes SAM et les modèles de segmentation YOLO . Alors que les modèles SAM offrent des capacités uniques de segmentation automatique, les modèles YOLO - en particulier YOLOv8n et YOLO11n-seg - sont nettement plus petits, plus rapides et plus efficaces en termes de calcul.

Les tests ont été effectués sur un Apple M4 Pro 2025 avec 24GB RAM en utilisant torch==2.6.0 et ultralytics==8.3.90. Pour reproduire ces résultats :

Exemple

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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

Adaptation de SAM à MobileSAM

MobileSAM conserve le même pipeline que la version originale de SAMoriginal, y compris le prétraitement, le post-traitement et toutes les interfaces. Cela signifie que vous pouvez passer de SAM à MobileSAM en apportant un minimum de modifications à votre flux de travail.

La principale différence réside dans le codeur d'image : MobileSAM remplace l'encodeur ViT-H original (632 millions de paramètres) par un encodeur Tiny-ViT beaucoup plus petit (5 millions de paramètres). Sur un seul GPU, MobileSAM traite une image en 12 ms environ (8 ms pour l'encodeur, 4 ms pour le décodeur de masque).

Comparaison des encodeurs d'images basés sur le ViT

Encodeur d'images Original SAM MobileSAM
Paramètres 611M 5M
Vitesse 452ms 8ms

Décodeur de masque guidé par un message-guide

Décodeur de masque Original SAM MobileSAM
Paramètres 3.876M 3.876M
Vitesse 4ms 4ms

Comparaison de l'ensemble du pipeline

Pipeline entier (Enc+Dec) Original SAM MobileSAM
Paramètres 615M 9.66M
Vitesse 456ms 12ms

Les performances de MobileSAM et du SAM original sont illustrées ci-dessous à l'aide d'invites ponctuelles et de boîtes.

Image avec point comme incitation

Image avec boîte en guise d'incitation

MobileSAM est environ 5 fois plus petit et 7 fois plus rapide que FastSAM. Pour plus de détails, visitez la page du projetMobileSAM .

Tester MobileSAM dans Ultralytics

Comme l'original SAMoriginal, Ultralytics fournit une interface simple pour tester MobileSAM, supportant à la fois les invites de type " Point " et " Box ".

Modèle à télécharger

Téléchargez les poids pré-entraînés de MobileSAM à partir des actifs d'Ultralytics .

Invitation à la discussion

Exemple

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]])

Box Prompt

Exemple

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]])

Les deux MobileSAM et SAM partagent la même API. Pour plus de détails sur l'utilisation, voir la page Documentation SAM.

Construire automatiquement des ensembles de données de segmentation à l'aide d'un modèle de détection

Pour annoter automatiquement votre jeu de données avec le cadre Ultralytics , utilisez l'option auto_annotate comme indiqué ci-dessous :

Exemple

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Argument Type Défaut Description
data str requis Chemin d'accès au répertoire contenant les images cibles pour l'annotation ou la segmentation.
det_model str 'yolo11x.pt' YOLO chemin du modèle de détection pour la détection initiale de l'objet.
sam_model str 'sam_b.pt' Chemin d'accès au modèle SAM pour la segmentation (supporte les modèles SAM, SAM2 et mobile_sam).
device str '' Dispositif de calcul (par exemple, "cuda:0 ", "cpu" ou " " pour la détection automatique du dispositif).
conf float 0.25 YOLO seuil de confiance de détection pour filtrer les détections faibles.
iou float 0.45 Seuil de référence pour la suppression non maximale afin de filtrer les cases qui se chevauchent.
imgsz int 640 Taille d'entrée pour le redimensionnement des images (doit être un multiple de 32).
max_det int 300 Nombre maximum de détections par image pour une meilleure efficacité de la mémoire.
classes list[int] None Liste des indices de classe à détecter (par ex, [0, 1] pour les personnes et les vélos).
output_dir str None Répertoire de sauvegarde des annotations (par défaut './labels' par rapport au chemin des données).

Citations et remerciements

Si MobileSAM vous est utile dans votre recherche ou votre développement, pensez à citer l'article suivant :

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

Lire l'article complet surMobileSAM sur arXiv.

FAQ

Qu'est-ce que MobileSAM et en quoi diffère-t-il du modèle SAM original ?

MobileSAM est un modèle de segmentation d'image léger et rapide, optimisé pour les applications mobiles et périphériques. Il conserve le même pipeline que le SAM original mais remplace le grand encodeur ViT-H (632M paramètres) par un encodeur compact Tiny-ViT (5M paramètres). MobileSAM est ainsi environ 5 fois plus petit et 7 fois plus rapide que le SAM original, fonctionnant à environ 12 ms par image contre 456 ms pour le SAM. Pour en savoir plus sur la mise en œuvre de MobileSAM , consultez le dépôtMobileSAM GitHub.

Comment puis-je tester MobileSAM avec Ultralytics?

Tester MobileSAM dans Ultralytics est simple. Vous pouvez utiliser les invites Point et Box pour prédire les segments. Par exemple, à l'aide d'une invite de type Point :

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])

Pour plus de détails, voir la section Test de MobileSAM dans Ultralytics.

Pourquoi utiliser MobileSAM pour mon application mobile ?

MobileSAM est idéal pour les applications mobiles et périphériques en raison de sa conception légère et de sa vitesse d'inférence rapide. Par rapport au SAM original, MobileSAM est environ 5 fois plus petit et 7 fois plus rapide, ce qui le rend adapté à la segmentation en temps réel sur des appareils disposant de ressources informatiques limitées. Son efficacité permet aux appareils mobiles d'effectuer une segmentation d'image en temps réel sans latence significative. En outre, MobileSAM prend en charge le mode d'inférence optimisé pour les performances mobiles.

Comment MobileSAM a-t-il été formé et le code de formation est-il disponible ?

MobileSAM a été 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 d'entraînement sera publié à l'avenir, mais vous pouvez actuellement accéder aux poids pré-entraînés et aux détails de la mise en œuvre sur le dépôt GitHub deMobileSAM .

Quels sont les principaux cas d'utilisation de MobileSAM?

MobileSAM est conçu pour une segmentation rapide et efficace des images dans les environnements mobiles et périphériques. Les principaux cas d'utilisation sont les suivants

  • Détection et segmentation d'objets en temps réel pour les applications mobiles
  • Traitement d'images à faible latence sur des appareils à capacité de calcul limitée
  • Intégration dans les applications mobiles alimentées par l'IA pour la réalité augmentée (AR), l'analyse, etc.

Pour plus de détails sur les cas d'utilisation et les performances, voir Adaptation de SAM à MobileSAM et le blog d'Ultralytics sur les applications MobileSAM .



📅C réé il y a 1 an ✏️ Mis à jour il y a 1 mois

Commentaires