Ultralytics YOLO27:
Get Started

Logo des leichtgewichtigen MobileSAM-Bildsegmentierungsmodells

Mobile-Modell zur Segmentierung beliebiger Objekte (MobileSAM)#

MobileSAM ist ein kompaktes, effizientes Bildsegmentierungsmodell, das speziell für Mobil- und Edge-Geräte entwickelt wurde. Es überträgt die Leistungsfähigkeit von Metas Modell zur Segmentierung beliebiger Objekte (SAM) auf Umgebungen mit begrenzter Rechenleistung und ermöglicht eine nahezu sofortige Segmentierung bei gleichzeitiger Kompatibilität mit der ursprünglichen SAM-Pipeline. Ob du Echtzeitanwendungen entwickelst oder leichtgewichtige Bereitstellungen umsetzt: MobileSAM liefert beeindruckende Segmentierungsergebnisse und benötigt dafür nur einen Bruchteil des Speicherplatzes und der Rechenleistung seiner Vorgänger.



Ansehen: So führst du mit MobileSAM Inferenz über Ultralytics aus | Schritt-für-Schritt-Anleitung 🎉

MobileSAM kommt in verschiedenen Projekten zum Einsatz, darunter Grounding-SAM, AnyLabeling und Segment Anything in 3D.

MobileSAM wurde auf einer einzelnen GPU mit einem Datensatz aus 100.000 Bildern (1 % der ursprünglichen Bilder) in weniger als einem Tag trainiert.

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

Die folgende Tabelle gibt einen Überblick über das verfügbare MobileSAM-Modell, seine vortrainierten Gewichte, unterstützten Aufgaben und die Kompatibilität mit verschiedenen Betriebsmodi wie Inferenz, Validierung, Training und Export. ✅ kennzeichnet unterstützte Modi, ❌ nicht unterstützte Modi.

ModelltypVortrainierte GewichteUnterstützte AufgabenTrainingValidierungInferenzExportieren
MobileSAMmobile_sam.ptInstanzsegmentierung❌❌✅❌

Vergleich von MobileSAM und YOLO#

Der folgende Vergleich zeigt die Unterschiede zwischen Metas SAM-Varianten, MobileSAM und den Segmentierungsmodellen von Ultralytics, darunter 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 erheblichen Unterschiede bei Modellgröße und Geschwindigkeit zwischen SAM-Varianten und YOLO-Segmentierungsmodellen. SAM-Modelle bieten zwar einzigartige Funktionen zur automatischen Segmentierung, doch YOLO-Modelle – insbesondere YOLOv8n-seg, YOLO11n-seg und YOLO26n-seg – sind deutlich kleiner, schneller und recheneffizienter.

Die Geschwindigkeiten von SAM wurden mit PyTorch gemessen, die von YOLO mit ONNX Runtime. Die Tests wurden auf einem Apple M4 Air von 2025 mit 16 GB RAM und 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

# SAM2-t, SAM2-b, SAM-b, MobileSAM profilieren
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

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

# YOLO-Modelle profilieren (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)  # NMS-freier YOLO26-Head; für YOLOv8/YOLO11 ohne Funktion
    model = YOLO(onnx_path)
    model(ASSETS)

Der Wechsel von SAM zu MobileSAM#

MobileSAM behält dieselbe Pipeline wie das ursprüngliche SAM bei, einschließlich Vorverarbeitung, Nachverarbeitung und sämtlicher Schnittstellen. Das bedeutet, dass du mit minimalen Änderungen an deinem Arbeitsablauf von SAM zu MobileSAM wechseln kannst.

Der entscheidende 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

Promptgesteuerter Maskendecoder#

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

Vergleich der gesamten Pipeline#

Gesamte Pipeline (Encoder + Decoder)Ursprüngliches SAMMobileSAM
Parameter641M9.66M
Geschwindigkeit456ms12ms

Die Leistung von MobileSAM und dem ursprünglichen SAM wird unten anhand von Punkt- und Box-Vorgaben veranschaulicht.

Bild mit einem Punkt als Vorgabe

Bild mit einer Box als Vorgabe

MobileSAM ist etwa siebenmal kleiner und fünfmal schneller als FastSAM. Weitere Informationen findest du auf der MobileSAM-Projektseite.

MobileSAM mit Ultralytics testen#

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

Modell herunterladen#

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

Punktvorgabe#

Beispiel
from ultralytics import SAM

# Das Modell laden
model = SAM("mobile_sam.pt")

# Eine Segmentierung anhand einer einzelnen Punktvorgabe vorhersagen
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Mehrere Segmentierungen anhand mehrerer Punktvorgaben vorhersagen
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Für jedes Objekt eine Segmentierung anhand mehrerer Punktvorgaben vorhersagen
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Eine Segmentierung anhand positiver und negativer Vorgaben vorhersagen.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Box-Vorgabe#

Beispiel
from ultralytics import SAM

# Das Modell laden
model = SAM("mobile_sam.pt")

# Eine Segmentierung anhand einer einzelnen Box-Vorgabe vorhersagen
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Mehrere Segmentierungen anhand mehrerer Box-Vorgaben vorhersagen
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

Sowohl MobileSAM als auch SAM bieten dieselbe API. Weitere Informationen zur Verwendung findest du in der SAM-Dokumentation.

Segmentierungsdatensätze mithilfe eines Erkennungsmodells automatisch erstellen#

Um deinen Datensatz mit dem Ultralytics-Framework automatisch zu annotieren, verwende 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")
ArgumentTypStandardBeschreibung
datastrerforderlichPfad zum Verzeichnis mit den Zielbildern für die 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 SAM-, SAM 2-, MobileSAM- und SAM 3-Gewichte).
devicestr''Rechengerät (z. B. 'cuda:0', 'cpu' oder '' zur automatischen Geräteerkennung).
conffloat0.25Konfidenzschwelle der YOLO-Erkennung, um unsichere Erkennungen herauszufiltern.
ioufloat0.45IoU-Schwelle für Non-Maximum Suppression, um überlappende Boxen herauszufiltern.
imgszint640Eingabegröße für die Größenanpassung von Bildern (bei Bedarf auf das nächste Vielfache von 32 aufgerundet).
max_detint300Höchstzahl der 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 (standardmäßig ein Verzeichnis neben <data>_auto_annotate_labels).

Zitate und Danksagungen#

Wenn MobileSAM für deine Forschung oder Entwicklung hilfreich ist, solltest du die folgende Veröffentlichung zitieren:

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-Veröffentlichung auf arXiv.

Häufig gestellte Fragen#

  • MobileSAM ist ein leichtgewichtiges, schnelles Modell zur Bildsegmentierung, das für mobile Anwendungen und Edge-Anwendungen optimiert ist. Es 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). Dadurch ist 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: Sie benötigt ungefähr 12 ms pro Bild, verglichen mit 456 ms bei SAM. Weitere Informationen zur Implementierung von MobileSAM findest du im MobileSAM-Repository auf GitHub.

  • MobileSAM mit Ultralytics zu testen ist ganz einfach. Du kannst Punkt- und Box-Vorgaben verwenden, um Segmentierungen vorherzusagen. Zum Beispiel mit einer Punktvorgabe:

    from ultralytics import SAM
    
    # Das Modell laden
    model = SAM("mobile_sam.pt")
    
    # Eine Segmentierung anhand einer Punktvorgabe vorhersagen
    model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

    Weitere Informationen findest du im Abschnitt MobileSAM mit Ultralytics testen.

  • Dank seines geringen Gewichts und der schnellen Inferenz eignet sich MobileSAM ideal für mobile Anwendungen und Edge-Anwendungen. Im Vergleich zum ursprünglichen SAM hat MobileSAM etwa 66-mal weniger Parameter und läuft etwa 38-mal schneller. Damit eignet es sich für die Echtzeitsegmentierung auf Geräten mit begrenzten Rechenressourcen. Dank seiner Effizienz können mobile Geräte eine Bildsegmentierung in Echtzeit ohne nennenswerte Verzögerung durchführen. Außerdem unterstützt MobileSAM einen für mobile Leistung optimierten Inferenzmodus.

  • MobileSAM wurde in weniger als einem Tag auf einer einzelnen GPU mit einem Datensatz aus 100.000 Bildern trainiert (1 % der ursprünglichen SA-1B-Bilder). Dabei wurde der SAM-Bildencoder ViT-H in einen Tiny-ViT-Encoder destilliert. Vortrainierte Gewichte und Einzelheiten zur Implementierung findest du im MobileSAM-Repository auf GitHub.

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

    • Echtzeit-Objekterkennung und -segmentierung in mobilen Apps
    • Bildverarbeitung mit geringer Latenz auf Geräten mit begrenzter Rechenleistung
    • 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 Der Wechsel von SAM zu MobileSAM und im Ultralytics-Blog zu Anwendungen von Segment Anything.

Kommentare