Ultralytics YOLO27:

Logo des leichten MobileSAM-Modells zur Bildsegmentierung

Mobile Segment Anything (MobileSAM)#

MobileSAM ist ein kompaktes, effizientes Modell zur Bildsegmentierung, das speziell für mobile Geräte und Edge-Geräte entwickelt wurde. MobileSAM bringt die Leistungsfähigkeit von Metas Segment Anything Model (SAM) in Umgebungen mit begrenzten Rechenressourcen und ermöglicht eine nahezu sofortige Segmentierung bei gleichzeitiger Kompatibilität mit der ursprünglichen SAM-Pipeline. Egal, ob du Echtzeitanwendungen oder ressourcenschonende Bereitstellungen entwickelst: MobileSAM liefert beeindruckende Segmentierungsergebnisse bei deutlich geringeren Größen- und Geschwindigkeitsanforderungen als seine Vorgänger.



Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

MobileSAM wird in verschiedenen Projekten eingesetzt, darunter Grounding-SAM, AnyLabeling und Segment Anything in 3D.

MobileSAM wurde an einer einzelnen GPU mit einem Datensatz von 100.000 Bildern (1 % der Originalbilder) in weniger als einem Tag trainiert.

Verfügbare Modelle, unterstützte Aufgaben und Betriebsmodi#

Die folgende Tabelle zeigt das verfügbare MobileSAM-Modell, seine vortrainierten Gewichte, die unterstützten Aufgaben und die Kompatibilität mit verschiedenen Betriebsmodi wie Inference, Validation, Training und Export. Unterstützte Modi sind mit ✅ und nicht unterstützte Modi mit ❌ gekennzeichnet.

ModelltypVortrainierte GewichteUnterstützte AufgabenTrainingValidierungInferenzExport
MobileSAMmobile_sam.ptInstanzsegmentierung

Vergleich von MobileSAM mit YOLO#

Der folgende Vergleich zeigt die Unterschiede zwischen Metas SAM-Varianten, MobileSAM und den Segmentierungsmodellen von Ultralytics, einschließlich YOLO26n-seg:

ModellGröße
(MB)
Parameter
(M)
Geschwindigkeit (CPU)
(ms/Bild)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s mit YOLOv8-Backbone23.911.858.0
Ultralytics YOLOv8n-seg7,1 (11,0-mal kleiner)3,4 (11,4-mal weniger)24,8 (945-mal schneller)
Ultralytics YOLO11n-seg6.2 (12.6-mal kleiner)2,9 (13,4-mal weniger)24.3 (964-mal schneller)
Ultralytics YOLO26n-seg6,7 (11,7-mal kleiner)2.7 (14.4-mal weniger)25,2 (930-mal schneller)

Dieser Vergleich zeigt die deutlichen Unterschiede bei Modellgröße und Geschwindigkeit zwischen den SAM-Varianten und den YOLO-Segmentierungsmodellen. Während SAM-Modelle einzigartige Möglichkeiten zur automatischen Segmentierung bieten, sind YOLO-Modelle – insbesondere YOLOv8n-seg, YOLO11n-seg und YOLO26n-seg – deutlich kleiner, schneller und recheneffizienter.

Die Geschwindigkeiten von SAM wurden mit PyTorch gemessen, die Geschwindigkeiten von YOLO mit ONNX Runtime. Die Tests wurden auf einem Apple M4 Air aus dem Jahr 2025 mit 16 GB RAM unter Verwendung von torch==2.10.0, ultralytics==8.4.31 und onnxruntime==1.24.4 durchgeführt. So kannst du diese Ergebnisse reproduzieren:

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

Von SAM zu MobileSAM wechseln#

MobileSAM verwendet dieselbe Pipeline wie das ursprüngliche SAM, einschließlich Vorverarbeitung, Nachverarbeitung und aller Schnittstellen. Dadurch kannst du mit minimalen Änderungen an deinem Workflow von SAM zu MobileSAM wechseln.

Der wichtigste Unterschied ist der Bildencoder: MobileSAM ersetzt den ursprünglichen ViT-H-Encoder (637 Millionen Parameter) durch einen deutlich kleineren Tiny-ViT-Encoder (5 Millionen Parameter). Auf einer einzelnen GPU verarbeitet MobileSAM ein Bild in etwa 12 ms (8 ms für den Encoder, 4 ms für den Maskendecoder).

Vergleich der ViT-basierten Bildencoder#

BildencoderUrsprüngliches SAMMobileSAM
Parameter637M5M
Geschwindigkeit452ms8ms

Prompt-gesteuerter Maskendecoder#

MaskendecoderUrsprüngliches SAMMobileSAM
Parameter3,876M3,876M
Geschwindigkeit4ms4ms

Vergleich der gesamten Pipeline#

Gesamte Pipeline (Enc+Dec)Ursprüngliches SAMMobileSAM
Parameter641M9,66M
Geschwindigkeit456ms12ms

Die Leistung von MobileSAM und dem ursprünglichen SAM wird im Folgenden anhand von Punkt- und Box-Prompts dargestellt.

Bild mit einem Punkt als Prompt

Bild mit einer Box als Prompt

MobileSAM ist etwa 7-mal kleiner und 5-mal schneller als FastSAM. Weitere Informationen findest du auf der MobileSAM-Projektseite.

MobileSAM in Ultralytics testen#

Wie beim ursprünglichen SAM bietet Ultralytics eine einfache Schnittstelle zum Testen von MobileSAM, die sowohl Punkt- als auch Box-Prompts unterstützt.

Model herunterladen#

Lade die vortrainierten MobileSAM-Gewichte aus den Ultralytics-Assets herunter.

Punkt-Prompt#

Beispiel
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#

Beispiel
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 und SAM verwenden dieselbe API. Weitere Informationen zur Verwendung findest du in der SAM-Dokumentation.

Segmentierungsdatensätze automatisch mit einem Erkennungsmodell erstellen#

Um deinen Datensatz automatisch zu annotieren, verwende im Ultralytics-Framework die Funktion auto_annotate wie unten gezeigt:

Beispiel
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
ArgumentTypStandardwertBeschreibung
datastrerforderlichPfad zu dem Verzeichnis mit den Zielbildern für Annotation oder Segmentierung.
det_modelstr'yolo26x.pt'Pfad zum YOLO-Erkennungsmodell für die anfängliche Objekterkennung.
sam_modelstr'sam_b.pt'Pfad zum SAM-Modell für die Segmentierung (unterstützt Gewichte von SAM, SAM 2, MobileSAM und SAM 3).
devicestr''Rechengerät (z. B. „cuda:0“, „cpu“ oder „“ für die automatische Geräteerkennung).
conffloat0.25Konfidenzschwellenwert der YOLO-Erkennung zum Herausfiltern unsicherer Erkennungen.
ioufloat0.45IoU-Schwellenwert für die Unterdrückung nichtmaximaler Werte zum Herausfiltern überlappender Boxen.
imgszint640Eingabegröße für die Größenanpassung von Bildern (muss ein Vielfaches von 32 sein).
max_detint300Maximale Anzahl von Erkennungen pro Bild zur effizienten Speichernutzung.
classeslist[int]NoneListe der zu erkennenden Klassenindizes (z. B. [0, 1] für Person und Fahrrad).
output_dirstrNoneSpeicherverzeichnis für Annotationen (Standard: benachbartes Verzeichnis zu <data>_auto_annotate_labels).

Zitate und Danksagungen#

Wenn MobileSAM für deine Forschung oder Entwicklung hilfreich ist, ziehe bitte die Zitierung der folgenden Publikation in Betracht:

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

Lies die vollständige MobileSAM-Publikation auf arXiv.

FAQ#

  • MobileSAM ist ein leichtgewichtigenes, schnelles image segmentation-Modell, das für Mobil- und Edge-Anwendungen optimiert ist. MobileSAM behält dieselbe Pipeline wie das ursprüngliche SAM bei, ersetzt jedoch den großen ViT-H-Encoder (637 Millionen Parameter) durch einen kompakten Tiny-ViT-Encoder (5 Millionen Parameter). Dies macht die gesamte MobileSAM-Pipeline etwa 66-mal kleiner als das ursprüngliche SAM (9,66 Millionen gegenüber 641 Millionen Parametern) und etwa 38-mal schneller, wobei MobileSAM mit ca. 12 ms pro Bild im Vergleich zu den 456 ms von SAM arbeitet. Erfahre mehr über die Implementierung von MobileSAM im MobileSAM GitHub repository.

  • MobileSAM mit Ultralytics zu testen, ist unkompliziert. Du kannst Punkt- und Box-Prompts verwenden, um Segmente vorherzusagen. Zum Beispiel mit einem Punkt-Prompt:

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

    Weitere Informationen findest du im Abschnitt MobileSAM mit Ultralytics testen.

  • MobileSAM ist aufgrund seines leichtgewichtigen Designs und seiner schnellen Inferenzgeschwindigkeit ideal für Mobil- und Edge-Anwendungen. Verglichen mit dem ursprünglichen SAM hat MobileSAM etwa 66-mal weniger Parameter und läuft etwa 38-mal schneller, wodurch MobileSAM für Echtzeit-Segmentierung auf Geräten mit begrenzten Rechenressourcen geeignet ist. Die Effizienz von MobileSAM ermöglicht es Mobilgeräten, real-time image segmentation ohne signifikante Latenz durchzuführen. Zusätzlich unterstützt MobileSAM den für mobile Leistung optimierten Inference mode.

  • MobileSAM wurde an einer einzelnen GPU mit einem Datensatz von 100.000 Bildern (1 % der originalen SA-1B-Bilder) in unter einem Tag trainiert, wobei der ViT-H-Bild-Encoder von SAM in einen Tiny-ViT-Encoder destilliert wurde. Vortrainierte Gewichte und Implementierungsdetails sind im MobileSAM GitHub repository verfügbar.

  • MobileSAM wurde für eine schnelle, effiziente Bildsegmentierung in mobilen Umgebungen und Edge-Umgebungen entwickelt. Zu den wichtigsten Anwendungsfällen gehören:

    • Echtzeit-Objekterkennung und -segmentierung für mobile Apps
    • Bildverarbeitung mit geringer Latenz auf Geräten mit begrenzten Rechenressourcen
    • Integration in KI-gestützte mobile Anwendungen für erweiterte Realität (AR), Analysen und mehr

    Weitere Informationen zu Anwendungsfällen und Leistung findest du unter Von SAM zu MobileSAM wechseln und im Ultralytics-Blog zu MobileSAM-Anwendungen.

Kommentare