Ultralytics YOLO27 :

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

Segmentation mobile de tout (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. Conçu pour apporter la puissance du modèle Segment Anything de Meta (SAM) aux environnements disposant de ressources de calcul limitées, MobileSAM fournit une segmentation quasi 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 une fraction de la taille et des exigences de 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 100k 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 Inférence, Validation, Entraînement et 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érenceExportation
MobileSAMmobile_sam.ptSegmentation d'instances

Comparaison de MobileSAM avec 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
(Mo)
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 de moins)24,8 (945x plus rapide)
Ultralytics YOLO11n-seg6.2 (12.6 fois plus petit)2,9 (13,4x de moins)24.3 (964 fois plus rapide)
Ultralytics YOLO26n-seg6,7 (11,7x plus petit)2.7 (14.4 fois moins)25,2 (930x plus rapide)

Cette comparaison montre les différences considérables de taille et de vitesse entre les variantes 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 efficaces en termes de calcul.

Les vitesses de SAM ont été mesurées avec PyTorch et celles de YOLO avec ONNX Runtime. Les tests ont été effectués sur un Apple M4 Air de 2025 doté de 16 Go de RAM, avec 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

# 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, nms=False)  # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Passer de SAM à MobileSAM#

MobileSAM conserve le même pipeline que le SAM d'origine, notamment 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 réside dans l'encodeur d'images : MobileSAM remplace l'encodeur ViT-H d'origine (637 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 environ 12 ms (8 ms pour l'encodeur, 4 ms pour le décodeur de masques).

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

Encodeur d'imagesSAM d'origineMobileSAM
Paramètres637M5 M
Vitesse452ms8 ms

Décodeur de masques guidé par invite#

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

Comparaison de l'ensemble du pipeline#

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 d'invites de points et de boîtes.

Image avec un point comme invite

Image avec une boîte comme invite

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

Tester MobileSAM dans Ultralytics#

Tout comme le SAM d'origine, Ultralytics fournit une interface simple pour tester MobileSAM, prenant en charge les invites de points et de boîtes.

Téléchargement du modèle#

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

Invite de point#

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

Invite de boîte#

Exemple
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 utilisent la même API. Pour plus de détails sur l'utilisation, consulte la documentation 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
datastrrequisChemin vers le répertoire contenant les images cibles à annoter ou à segmenter.
det_modelstr'yolo26x.pt'Chemin du modèle de détection YOLO pour la détection initiale des objets.
sam_modelstr'sam_b.pt'Chemin du 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 ex. « cuda:0 », « cpu » ou « » pour la détection automatique du périphérique).
conffloat0.25Seuil de confiance de la 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 redimensionner les images (doit être un multiple de 32).
max_detint300Nombre maximal de détections par image pour optimiser l'utilisation de la mémoire.
classeslist[int]NoneListe des indices de classes à détecter (par ex. [0, 1] pour personne et vélo).
output_dirstrNoneRépertoire d'enregistrement des annotations (par défaut : répertoire parent de <data>_auto_annotate_labels).

Citations et remerciements#

Si MobileSAM est utile à 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 publié sur arXiv.

FAQ#

  • MobileSAM est un modèle de segmentation d'images léger et rapide, optimisé pour les applications mobiles et de périphérie. Il conserve le même pipeline que le SAM d'origine mais remplace le grand encodeur ViT-H (637M de paramètres) par un encodeur Tiny-ViT compact (5M de paramètres). Cela rend tout le pipeline MobileSAM environ 66 fois plus petit que le SAM d'origine (9.66M contre 641M de paramètres) et environ 38 fois plus rapide, fonctionnant à environ 12 ms par image contre 456 ms pour SAM. Découvre plus de détails sur l'implémentation de MobileSAM sur le dépôt GitHub de MobileSAM.

  • Tester MobileSAM dans Ultralytics est simple. Tu peux utiliser des invites de points et de boîtes pour prédire des segments. Par exemple, avec une invite 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.

  • 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. Par rapport au SAM d'origine, MobileSAM a environ 66 fois moins de paramètres et s'exécute environ 38 fois plus rapidement, ce qui le rend adapté à la segmentation en temps réel sur les appareils aux ressources de calcul limitées. Son efficacité permet aux appareils mobiles d'effectuer la segmentation d'images en temps réel sans latence significative. De plus, MobileSAM prend en charge le mode d'inférence optimisé pour les performances mobiles.

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

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

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

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

Commentaires