
Link to this sectionMobile Segment Anything (MobileSAM)#
MobileSAM est un modèle de segmentation d'image compact et efficace, spécialement conçu pour les appareils mobiles et de périphérie (edge devices). Conçu pour apporter la puissance du Segment Anything Model (SAM) de Meta dans des environnements aux capacités de calcul limitées, MobileSAM offre une segmentation quasi instantanée tout en restant compatible avec le pipeline SAM original. Que tu développes des applications en temps réel ou des déploiements légers, MobileSAM fournit des résultats de segmentation impressionnants avec une fraction des besoins en taille et en vitesse de ses prédécesseurs.
Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉
MobileSAM a été adopté dans divers projets, notamment Grounding-SAM, AnyLabeling, et Segment Anything in 3D.
MobileSAM a été entraîné sur un seul GPU en utilisant un jeu 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.
Link to this sectionModè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 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 | Entraînement | Exporter (Export) |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | Segmentation d'instance | ✅ | ❌ | ❌ | ❌ |
Link to this sectionComparaison de MobileSAM avec YOLO#
La comparaison suivante met en évidence les différences entre les variantes de SAM de Meta, MobileSAM et les modèles de segmentation Ultralytics incluant YOLO26n-seg :
| Modèle | Taille (Mo) | Paramètres (M) | Vitesse (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 avec backbone YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0x plus petit) | 3.4 (11.4x moins) | 24.8 (945x plus rapide) |
| Ultralytics YOLO11n-seg | 6.2 (12.6x plus petit) | 2.9 (13.4x moins) | 24.3 (964x plus rapide) |
| Ultralytics YOLO26n-seg | 6.7 (11.7x plus petit) | 2.7 (14.4x moins) | 25.2 (930x plus rapide) |
Cette comparaison démontre les différences substantielles en termes de taille et de vitesse de modèle entre les variantes de SAM et les modèles de segmentation YOLO. Bien que les modèles SAM offrent des capacités de segmentation automatique uniques, les modèles YOLO — en particulier YOLOv8n-seg, YOLO11n-seg et YOLO26n-seg — sont nettement plus petits, plus rapides et plus efficaces en termes de calcul.
Vitesses de SAM mesurées avec PyTorch, vitesses de YOLO mesurées avec ONNX Runtime. Tests effectués sur un Apple M4 Air 2025 avec 16 Go de RAM en utilisant torch==2.10.0, ultralytics==8.4.31 et onnxruntime==1.24.4. Pour reproduire ces résultats :
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 sectionAdaptation de SAM vers MobileSAM#
MobileSAM conserve le même pipeline que le SAM original, y compris le prétraitement, le post-traitement et toutes les interfaces. Cela signifie que tu peux passer de SAM à MobileSAM avec des changements minimes dans ton flux de travail.
La différence clé réside dans l'encodeur d'image : MobileSAM remplace l'encodeur ViT-H original (637M de paramètres) par un encodeur Tiny-ViT beaucoup plus petit (5M de paramètres). Sur un seul GPU, MobileSAM traite une image en environ 12ms (8ms pour l'encodeur, 4ms pour le décodeur de masque).
Link to this sectionComparaison des encodeurs d'image basés sur ViT#
| Encodeur d'image | SAM original | MobileSAM |
|---|---|---|
| Paramètres | 637M | 5M |
| Vitesse | 452ms | 8ms |
Link to this sectionDécodeur de masque guidé par prompt#
| Décodeur de masque | SAM original | MobileSAM |
|---|---|---|
| Paramètres | 3.876M | 3.876M |
| Vitesse | 4ms | 4ms |
Link to this sectionComparaison du pipeline complet#
| Pipeline complet (Enc+Dec) | SAM original | MobileSAM |
|---|---|---|
| Paramètres | 641M | 9.66M |
| Vitesse | 456ms | 12ms |
La performance de MobileSAM et du SAM original est illustrée ci-dessous en utilisant des prompts de points et de boîtes.


MobileSAM est environ 7 fois plus petit et 5 fois plus rapide que FastSAM. Pour plus de détails, visite la page du projet MobileSAM.
Link to this sectionTester MobileSAM dans Ultralytics#
Tout comme pour le SAM original, Ultralytics fournit une interface simple pour tester MobileSAM, prenant en charge à la fois les prompts de points et de boîtes.
Link to this sectionTéléchargement du modèle#
Télécharge les poids pré-entraînés de MobileSAM depuis les ressources Ultralytics.
Link to this sectionPrompt de point#
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 boîte#
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]])MobileSAM et SAM partagent la même API. Pour plus de détails sur l'utilisation, consulte la documentation SAM.
Link to this sectionConstruire automatiquement des jeux de données de segmentation en utilisant un modèle de détection#
Pour annoter ton jeu de données automatiquement avec le framework Ultralytics, utilise la fonction auto_annotate comme indiqué ci-dessous :
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")| Argument | Type | Défaut | Description |
|---|---|---|---|
data | str | requis | Chemin vers le répertoire contenant les images cibles pour l'annotation ou la segmentation. |
det_model | str | 'yolo26x.pt' | Chemin du modèle de détection YOLO pour la détection d'objet initiale. |
sam_model | str | 'sam_b.pt' | Chemin du modèle SAM pour la segmentation (prend en charge les poids SAM, SAM 2, MobileSAM et SAM 3). |
device | str | '' | Appareil de calcul (par ex., 'cuda:0', 'cpu', ou '' pour la détection automatique de l'appareil). |
conf | float | 0.25 | Seuil de confiance de détection YOLO pour filtrer les détections faibles. |
iou | float | 0.45 | Seuil IoU pour le Non-Maximum Suppression afin de filtrer les boîtes qui se chevauchent. |
imgsz | int | 640 | Taille d'entrée pour redimensionner les images (doit être un multiple de 32). |
max_det | int | 300 | Nombre maximal de détections par image pour l'efficacité de la mémoire. |
classes | list[int] | None | Liste des indices de classe à détecter (par exemple, [0, 1] pour personne et vélo). |
output_dir | str | None | Répertoire de sauvegarde pour les annotations (par défaut : le dossier frère <data>_auto_annotate_labels). |
Link to this sectionCitations et remerciements#
Si MobileSAM t'est utile dans ta recherche ou ton développement, merci de 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}
}Lis l'article complet MobileSAM sur arXiv.
Link to this sectionFAQ#
Link to this sectionQu'est-ce que MobileSAM et en quoi diffère-t-il du modèle SAM original ?#
MobileSAM est un modèle léger et rapide de image segmentation optimisé pour les applications mobiles et en périphérie (edge). Il conserve le même pipeline que le SAM original mais remplace le large encodeur ViT-H (637M de paramètres) par un encodeur Tiny-ViT compact (5M de paramètres). Il en résulte que MobileSAM est environ 5 fois plus petit et 7 fois plus rapide que le SAM original, fonctionnant à environ 12ms par image contre 456ms pour SAM. Explore davantage l'implémentation de MobileSAM sur le MobileSAM GitHub repository.
Link to this sectionComment puis-je tester MobileSAM en utilisant Ultralytics ?#
Tester MobileSAM dans Ultralytics est simple. Tu peux utiliser des prompts de points et de boîtes pour prédire des segments. Par exemple, en utilisant un prompt de 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, consulte la section Tester MobileSAM dans Ultralytics.
Link to this sectionPourquoi devrais-je utiliser MobileSAM pour mon application mobile ?#
MobileSAM est idéal pour les applications mobiles et de périphérie en raison de sa conception légère et de sa vitesse d'inférence rapide. Comparé 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 aux ressources de calcul limitées. Son efficacité permet aux appareils mobiles d'effectuer une segmentation d'image en temps réel sans latence significative. De plus, MobileSAM prend en charge le mode d'inférence optimisé pour les performances mobiles.
Link to this sectionComment MobileSAM a-t-il été entraîné, et le code d'entraînement est-il disponible ?#
MobileSAM a été entraîné sur un seul GPU avec un jeu de données de 100 000 images (1 % des images originales) en moins d'une journée. Bien que le code d'entraînement sera publié ultérieurement, tu peux actuellement accéder aux poids pré-entraînés et aux détails d'implémentation sur le dépôt GitHub de MobileSAM.
Link to this sectionQuels sont les principaux cas d'utilisation pour MobileSAM ?#
MobileSAM est conçu pour une segmentation d'image rapide et efficace dans les environnements mobiles et de périphérie. Les principaux cas d'utilisation incluent :
- Détection et segmentation d'objets en temps réel pour les applications mobiles
- Traitement d'image à faible latence sur des appareils aux ressources de calcul limitées
- Intégration dans des applications mobiles alimentées par l'IA pour la réalité augmentée (RA), l'analytique et bien plus
Pour plus de détails sur les cas d'utilisation et les performances, consulte Adapting from SAM to MobileSAM et le blog Ultralytics sur les applications de MobileSAM.