YOLO Vision 2026:

MobileSAM lightweight image segmentation model logo

Mobile Segment Anything (MobileSAM)#

MobileSAM ist ein kompaktes, effizientes Bildsegmentierungsmodell, das speziell für Mobil- und Edge-Geräte entwickelt wurde. Es bringt die Leistungsfähigkeit von Metas Segment Anything Model (SAM) in Umgebungen mit begrenzten Rechenressourcen, bietet eine nahezu sofortige Segmentierung und behält dabei die Kompatibilität mit der ursprünglichen SAM-Pipeline bei. Ganz gleich, ob du Echtzeitanwendungen oder schlanke Deployments entwickelst, MobileSAM liefert beeindruckende Segmentierungsergebnisse mit einem Bruchteil der Größen- und Geschwindigkeitsanforderungen seiner Vorgänger.



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

MobileSAM wurde in einer Vielzahl von Projekten übernommen, darunter Grounding-SAM, AnyLabeling und Segment Anything in 3D.

MobileSAM wurde auf einer einzelnen GPU unter Verwendung eines 100k-Bilddatensatzes (1 % der ursprünglichen Bilder) in weniger als einem Tag trainiert. Der Trainingscode wird in der Zukunft veröffentlicht.

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

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

ModelltypVortrainierte GewichteUnterstützte AufgabenTrainingValidationInferenceExportieren
MobileSAMmobile_sam.ptInstanzsegmentierung

MobileSAM-Vergleich vs. YOLO#

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

ModellGröße
(MB)
Parameter
(M)
Geschwindigkeit (CPU)
(ms/im)
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.0x kleiner)3.4 (11.4x weniger)24.8 (945x schneller)
Ultralytics YOLO11n-seg6.2 (12.6x kleiner)2.9 (13.4x weniger)24.3 (964x schneller)
Ultralytics YOLO26n-seg6.7 (11.7x kleiner)2.7 (14.4x weniger)25.2 (930x schneller)

Dieser Vergleich demonstriert die erheblichen Unterschiede in Modellgröße und Geschwindigkeit zwischen SAM-Varianten und YOLO-Segmentierungsmodellen. Während SAM-Modelle einzigartige automatische Segmentierungsfunktionen bieten, sind YOLO-Modelle—insbesondere YOLOv8n-seg, YOLO11n-seg und YOLO26n-seg—deutlich kleiner, schneller und recheneffizienter.

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

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)
    model = YOLO(onnx_path)
    model(ASSETS)

Anpassung von SAM an MobileSAM#

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

Der wesentliche Unterschied ist der Image Encoder: MobileSAM ersetzt den ursprünglichen ViT-H Encoder (637M Parameter) durch einen wesentlich kleineren Tiny-ViT Encoder (5M Parameter). Auf einer einzelnen GPU verarbeitet MobileSAM ein Bild in etwa 12ms (8ms für den Encoder, 4ms für den Mask Decoder).

Vergleich des ViT-basierten Bild-Encoders#

Bild-EncoderOriginal SAMMobileSAM
Parameter637M5M
Geschwindigkeit452ms8ms

Prompt-gesteuerter Masken-Decoder#

Masken-DecoderOriginal SAMMobileSAM
Parameter3.876M3.876M
Geschwindigkeit4ms4ms

Gesamt-Pipeline-Vergleich#

Gesamt-Pipeline (Enc+Dec)Original SAMMobileSAM
Parameter641M9.66M
Geschwindigkeit456ms12ms

Die Leistung von MobileSAM und dem ursprünglichen SAM wird unten unter Verwendung von Punkt- und Box-Prompts veranschaulicht.

Image with Point as Prompt

Image with Box as Prompt

MobileSAM ist etwa 7-mal kleiner und 5-mal schneller als FastSAM. Weitere Details findest du auf der MobileSAM project page.

Testen von MobileSAM in Ultralytics#

Genau wie das ursprüngliche SAM bietet Ultralytics eine einfache Schnittstelle zum Testen von MobileSAM, die sowohl Punkt- als auch Box-Prompts unterstützt.

Modell-Download#

Lade die vortrainierten MobileSAM-Gewichte von 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]])

Sowohl MobileSAM als auch SAM teilen sich dieselbe API. Weitere Details zur Verwendung findest du in der SAM documentation.

Automatische Erstellung von Segmentierungsdatensätzen unter Verwendung eines Erkennungsmodells#

Um deinen Datensatz mit dem Ultralytics-Framework automatisch zu annotate your dataset, 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 Zielbildern für Annotation oder Segmentierung.
det_modelstr'yolo26x.pt'YOLO-Detektionsmodellpfad für die anfängliche Objekterkennung.
sam_modelstr'sam_b.pt'SAM-Modellpfad für Segmentierung (unterstützt SAM, SAM 2, MobileSAM und SAM 3 Gewichte).
devicestr''Berechnungsgerät (z. B. 'cuda:0', 'cpu' oder '' für automatische Geräteerkennung).
conffloat0.25YOLO-Erkennungs-Konfidenzschwellenwert zum Filtern schwacher Erkennungen.
ioufloat0.45IoU-Schwellenwert für die Non-Maximum Suppression zum Filtern überlappender Boxen.
imgszint640Eingabegröße für die Bildskalierung (muss ein Vielfaches von 32 sein).
max_detint300Maximale Anzahl an Erkennungen pro Bild zur Speichereffizienz.
classeslist[int]NoneListe der zu erkennenden Klassenindizes (z. B. [0, 1] für Person & Fahrrad).
output_dirstrNoneSpeicherverzeichnis für Annotationen (Standard: <data>_auto_annotate_labels Geschwisterordner).

Zitate und Danksagungen#

Wenn MobileSAM in deiner Forschung oder Entwicklung hilfreich ist, ziehe bitte in Betracht, das folgende Paper zu 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 das vollständige MobileSAM paper on arXiv.

FAQ#

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

  • Das Testen von MobileSAM in Ultralytics 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 Details findest du im Abschnitt Testing MobileSAM in Ultralytics.

  • MobileSAM ist aufgrund seines leichtgewichtigigen Designs und seiner schnellen Inferenzgeschwindigkeit ideal für Mobil- und Edge-Anwendungen. Verglichen mit dem ursprünglichen SAM ist MobileSAM etwa 5-mal kleiner und 7-mal schneller, wodurch es sich für Echtzeitsegmentierung auf Geräten mit begrenzten Rechenressourcen eignet. Seine Effizienz ermöglicht es Mobilgeräten, real-time image segmentation ohne signifikante Latenz durchzuführen. Darüber hinaus unterstützt MobileSAM den Inference mode, der auf mobile Leistung optimiert ist.

  • MobileSAM wurde auf einer einzelnen GPU mit einem Datensatz von 100k Bildern (1% der Originalbilder) in weniger als einem Tag trainiert. Während der Trainingscode in Zukunft veröffentlicht wird, kannst du derzeit von der MobileSAM GitHub repository auf vortrainierte Gewichte und Implementierungsdetails zugreifen.

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

    • Echtzeit-object detection and segmentation für mobile Apps
    • Bildverarbeitung mit geringer Latenz auf Geräten mit begrenzter Rechenleistung
    • Integration in KI-gestützte mobile Anwendungen für Augmented Reality (AR), Analytik und mehr

    Weitere Details zu Anwendungsfällen und Leistung findest du unter Adapting from SAM to MobileSAM und im Ultralytics blog on MobileSAM applications.

Kommentare