Ultralytics YOLO27 :
Get Started

Logo du modèle léger de segmentation d’images MobileSAM

Mobile Segment Anything (MobileSAM)#

MobileSAM est un modèle compact et efficace de segmentation d’images, spécialement conçu pour les appareils mobiles et périphériques. Pensé pour apporter la puissance du modèle de segmentation universelle de Meta (SAM) aux environnements disposant de capacités de calcul limitées, MobileSAM réalise une segmentation presque instantanée tout en restant compatible avec le pipeline SAM d’origine. 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 des besoins en taille et en vitesse bien inférieurs à ceux de ses prédécesseurs.



Regarder : Comment exécuter l’inférence avec MobileSAM à l’aide d’Ultralytics | Guide étape par étape 🎉

MobileSAM a été adopté dans plusieurs projets, notamment Grounding-SAM, AnyLabeling et Segment Anything in 3D.

MobileSAM a été entraîné sur un seul GPU à l’aide d’un jeu de données de 100 000 images (1 % des images d’origine), en moins d’une journée.

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 sa 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èlePoids préentraînésTâches prises en chargeEntraînementValidationInférenceExport
MobileSAMmobile_sam.ptSegmentation d'instances❌❌✅❌

Comparaison de MobileSAM et YOLO#

La comparaison suivante met en évidence les différences entre les variantes SAM de Meta, MobileSAM et les modèles de segmentation Ultralytics, notamment YOLO26n-seg :

ModèleTaille
(MB)
Paramètres
(M)
Vitesse (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s avec backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (11.0x plus petit)3.4 (11.4x moins)24.8 (945x plus rapide)
Ultralytics YOLO11n-seg6.2 (12.6x plus petit)2.9 (13.4x moins)24.3 (964x plus rapide)
Ultralytics YOLO26n-seg6.7 (11.7x plus petit)2.7 (14.4x moins)25.2 (930x plus rapide)

Cette comparaison met en évidence les différences considérables de taille et de vitesse entre les variantes de SAM et les modèles de segmentation YOLO. Si les modèles SAM offrent des capacités uniques de segmentation automatique, les modèles YOLO — en particulier YOLOv8n-seg, YOLO11n-seg et YOLO26n-seg — sont nettement plus petits, plus rapides et plus économes en ressources 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 de 2025 avec 16 Go de RAM à l’aide de torch==2.10.0, ultralytics==8.4.31 et onnxruntime==1.24.4. Pour reproduire ces résultats :

Exemple
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profiler 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)

# Profiler FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profiler les modèles YOLO (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, nms=False)  # Tête sans NMS de YOLO26 ; sans effet pour YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Passer de SAM à MobileSAM#

MobileSAM conserve le même pipeline que SAM d’origine, y compris le prétraitement, le post-traitement et toutes les interfaces. Tu peux donc passer de SAM à MobileSAM en apportant un minimum de modifications à ton workflow.

La principale différence concerne l’encodeur d’image : MobileSAM remplace l’encodeur ViT-H d’origine (637 M de paramètres) par un encodeur Tiny-ViT beaucoup plus petit (5 M de paramètres). Sur un seul GPU, MobileSAM traite une image en environ 12 ms (8 ms pour l’encodeur et 4 ms pour le décodeur de masques).

Comparaison des encodeurs d’image basés sur ViT#

Encodeur d’imageSAM d’origineMobileSAM
Paramètres637M5 M
Vitesse452ms8 ms

Décodeur de masques guidé par des prompts#

Décodeur de masquesSAM d’origineMobileSAM
Paramètres3,876 M3,876 M
Vitesse4 ms4 ms

Comparaison du pipeline complet#

Pipeline complet (encodeur + décodeur)SAM d’origineMobileSAM
Paramètres641M9,66 M
Vitesse456ms12 ms

Les performances de MobileSAM et du SAM d’origine sont illustrées ci-dessous à l’aide de prompts de points et de boîtes.

Image avec un point comme prompt

Image avec une boîte comme prompt

MobileSAM est environ 7 fois plus petit et 5 fois plus rapide que FastSAM. Pour en savoir plus, consulte la page du projet MobileSAM.

Tester MobileSAM dans Ultralytics#

Comme pour SAM d’origine, Ultralytics propose une interface simple pour tester MobileSAM, avec prise en charge des prompts Point et Box.

Télécharger le modèle#

Télécharge les poids préentraînés de MobileSAM depuis les ressources Ultralytics.

Prompt de point#

Exemple
from ultralytics import SAM

# Charger le modèle
model = SAM("mobile_sam.pt")

# Prédire un segment à partir d’un prompt de point unique
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Prédire plusieurs segments à partir de plusieurs prompts de points
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Prédire un segment à partir de plusieurs prompts de points par objet
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Prédire un segment à l’aide de prompts positifs et négatifs.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Prompt de boîte#

Exemple
from ultralytics import SAM

# Charger le modèle
model = SAM("mobile_sam.pt")

# Prédire un segment à partir d’un prompt de boîte unique
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Prédire plusieurs segments à partir de plusieurs prompts de boîtes
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

MobileSAM et SAM utilisent la même API. Pour en savoir plus sur leur utilisation, consulte la documentation de SAM.

Créer automatiquement des jeux de données de segmentation à l’aide d’un modèle de détection#

Pour annoter automatiquement ton jeu de données avec le framework Ultralytics, utilise la fonction auto_annotate comme indiqué ci-dessous :

Exemple
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
ArgumentTypeValeur par défautDescription
datastrobligatoireChemin vers le répertoire contenant les images à annoter ou à segmenter.
det_modelstr'yolo26x.pt'Chemin vers le modèle de détection YOLO pour la détection initiale des objets.
sam_modelstr'sam_b.pt'Chemin vers le modèle SAM pour la segmentation (prend en charge les poids SAM, SAM 2, MobileSAM et SAM 3).
devicestr''Périphérique de calcul (par exemple, 'cuda:0', 'cpu' ou '' pour la détection automatique du périphérique).
conffloat0.25Seuil de confiance de détection YOLO pour filtrer les détections peu fiables.
ioufloat0.45Seuil IoU pour la suppression non maximale afin de filtrer les boîtes qui se chevauchent.
imgszint640Taille d’entrée pour le redimensionnement des images (arrondie au multiple de 32 supérieur si nécessaire).
max_detint300Nombre maximal de détections par image pour limiter l’utilisation de la mémoire.
classeslist[int]NoneListe des indices de classes à détecter (par exemple, [0, 1] pour personne et vélo).
output_dirstrNoneRépertoire d’enregistrement des annotations (par défaut : répertoire frère de <data>_auto_annotate_labels).

Citations et remerciements#

Si MobileSAM t’est utile dans tes travaux de recherche ou de développement, pense à citer l’article suivant :

Citation
@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 sur MobileSAM sur arXiv.

FAQ#

  • MobileSAM est un modèle léger et rapide de segmentation d’images, optimisé pour les applications mobiles et en périphérie. Il conserve le même pipeline que SAM d’origine, mais remplace le grand encodeur ViT-H (637 M de paramètres) par un encodeur Tiny-ViT compact (5 M de paramètres). Le pipeline MobileSAM complet est ainsi environ 66 fois plus petit que celui de SAM d’origine (9,66 M contre 641 M de paramètres) et environ 38 fois plus rapide, avec un temps de traitement d’environ 12 ms par image, contre 456 ms pour SAM. Découvre davantage de détails sur l’implémentation de MobileSAM dans le dépôt GitHub de MobileSAM.

  • Tester MobileSAM dans Ultralytics est simple. Tu peux utiliser des prompts Point et Box pour prédire des segments. Par exemple, avec un prompt Point :

    from ultralytics import SAM
    
    # Charger le modèle
    model = SAM("mobile_sam.pt")
    
    # Prédire un segment à partir d’un prompt de point
    model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

    Pour plus de détails, consulte la section Tester MobileSAM dans Ultralytics.

  • MobileSAM est idéal pour les applications mobiles et en périphérie grâce à sa conception légère et à sa vitesse d’inférence élevée. Par rapport à SAM d’origine, MobileSAM a environ 66 fois moins de paramètres et s’exécute environ 38 fois plus vite, 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’images en temps réel sans latence importante. De plus, MobileSAM prend en charge le mode Inference, optimisé pour les performances mobiles.

  • MobileSAM a été entraîné sur un seul GPU avec un jeu de données de 100 000 images (soit 1 % des images SA-1B d’origine) en moins d’une journée. L’entraînement a consisté à distiller l’encodeur d’image ViT-H de SAM dans un encodeur Tiny-ViT. Les poids préentraînés et les détails de l’implémentation sont disponibles dans le dépôt GitHub de MobileSAM.

  • MobileSAM est conçu pour la segmentation d’images rapide et efficace dans les environnements mobiles et en périphérie. Ses principaux cas d’usage sont les suivants :

    • Détection et segmentation d’objets en temps réel dans les applications mobiles
    • Traitement d’images à faible latence sur des appareils aux capacités de calcul limitées
    • Intégration dans des applications mobiles basées sur l’IA pour la réalité augmentée (AR), l’analyse et bien plus encore

    Pour en savoir plus sur les cas d’usage et les performances, consulte Passer de SAM à MobileSAM et l’article de blog d’Ultralytics sur les applications de Segment Anything.

Commentaires