Zum Inhalt springen

MobileSAM Logo

Mobile Segment Anything (MobileSAM)

MobileSAM ist ein kompaktes, effizientes Bildsegmentierungsmodell, das speziell für mobile und Edge-Geräte entwickelt wurde. MobileSAM wurde entwickelt, um die Leistungsfähigkeit von Metas Segment Anything Model (SAM) in Umgebungen mit begrenzter Rechenleistung zu bringen, und liefert nahezu sofortige Segmentierung, während die Kompatibilität mit der ursprünglichen SAM-Pipeline erhalten bleibt. Ob Sie nun Echtzeitanwendungen oder schlanke Bereitstellungen entwickeln, MobileSAM liefert beeindruckende Segmentierungsergebnisse mit einem Bruchteil der Größe und Geschwindigkeitsanforderungen seiner Vorgänger.



Ansehen: So führen Sie eine Inferenz mit MobileSAM mithilfe von Ultralytics aus | Schritt-für-Schritt-Anleitung 🎉

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

MobileSAM wurde auf einer einzelnen GPU mit einem 100k-Bilddatensatz (1 % der Originalbilder) in weniger als einem Tag trainiert. Der Trainingscode wird in Zukunft veröffentlicht.

Verfügbare Modelle, unterstützte Aufgaben und Betriebsmodi

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

Modelltyp Vortrainierte Gewichte Unterstützte Aufgaben Inferenz Validierung Training Export
MobileSAM mobile_sam.pt Instanzsegmentierung

MobileSAM-Vergleich vs. YOLO

Der folgende Vergleich hebt die Unterschiede zwischen den SAM-Varianten von Meta, MobileSAM und den kleinsten Segmentierungsmodellen von Ultralytics hervor, einschließlich YOLO11n-seg:

Modell Größe
(MB)
Parameter
(M)
Geschwindigkeit (CPU)
(ms/Bild)
Meta SAM-b 375 93.7 49401
Meta SAM2-b 162 80.8 31901
Meta SAM2-t 78.1 38.9 25997
MobileSAM 40.7 10.1 25381
FastSAM-s mit YOLOv8 Backbone 23.7 11.8 55.9
Ultralytics YOLOv8n-seg 6.7 (11,7x kleiner) 3.4 (11,4x weniger) 24.5 (1061x schneller)
Ultralytics YOLO11n-seg 5.9 (13.2x kleiner) 2.9 (13.4x weniger) 30.1 (864x schneller)

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

Die Tests wurden auf einem Apple M4 Pro 2025 mit 24 GB RAM durchgeführt unter Verwendung von torch==2.6.0 und ultralytics==8.3.90Um diese Ergebnisse zu 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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

Anpassung von SAM an MobileSAM

MobileSAM behält die gleiche Pipeline wie das Original-SAM bei, einschließlich Vorverarbeitung, Nachverarbeitung und aller Schnittstellen. Das bedeutet, dass Sie mit minimalen Änderungen an Ihrem Workflow von SAM zu MobileSAM wechseln können.

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

Vergleich von ViT-basierten Bild-Encodern

Image Encoder Original SAM MobileSAM
Parameter 611M 5M
Geschwindigkeit 452ms 8ms

Prompt-gesteuerter Masken-Decoder

Masken-Decoder Original SAM MobileSAM
Parameter 3.876M 3.876M
Geschwindigkeit 4ms 4ms

Vergleich der gesamten Pipeline

Gesamte Pipeline (Enc+Dec) Original SAM MobileSAM
Parameter 615M 9.66M
Geschwindigkeit 456ms 12ms

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

Bild mit Punkt als Eingabeaufforderung

Bild mit Box als Eingabeaufforderung

MobileSAM ist etwa 7 Mal kleiner und 5 Mal schneller als FastSAM. Weitere Einzelheiten finden Sie auf der MobileSAM .

Testen von MobileSAM in Ultralytics

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

Modell-Download

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

Beide MobileSAM und SAM die gleiche API verwenden. Weitere Nutzungsdetails finden Sie im SAM-Dokumentation.

Automatische Erstellung von Segmentierungsdatensätzen mithilfe eines Erkennungsmodells

Um Ihr Dataset automatisch mit dem Ultralytics Framework zu annotieren, verwenden Sie die auto_annotate Funktion, wie unten gezeigt:

Beispiel

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Argument Typ Standard Beschreibung
data str erforderlich Pfad zum Verzeichnis mit den Zielbildern für Annotation oder Segmentierung.
det_model str 'yolo11x.pt' YOLO-Erkennungsmodellpfad für die anfängliche Objekterkennung.
sam_model str 'sam_b.pt' SAM-Modellpfad für die Segmentierung (unterstützt SAM, SAM2-Varianten und mobile_sam-Modelle).
device str '' Rechengerät (z. B. 'cuda:0', 'cpu' oder '' für automatische Geräteerkennung).
conf float 0.25 YOLO-Erkennungsschwellenwert für die Filterung schwacher Erkennungen.
iou float 0.45 IoU-Schwellenwert für Non-Maximum Suppression, um überlappende Boxen zu filtern.
imgsz int 640 Eingangsgröße für die Größenänderung von Bildern (muss ein Vielfaches von 32 sein).
max_det int 300 Maximale Anzahl von Erkennungen pro Bild für Speichereffizienz.
classes list[int] None Liste der zu erkennenden Klassenindizes (z. B. [0, 1] für Personen & Fahrräder).
output_dir str None Speicherverzeichnis für Anmerkungen (standardmäßig './labels' relativ zum Datenpfad).

Zitate und Danksagungen

Wenn MobileSAM für Ihre Forschung oder Entwicklung hilfreich ist, ziehen Sie bitte in Betracht, das folgende Paper zu zitieren:

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

Lesen Sie das vollständige MobileSAM Paper auf arXiv.

FAQ

Was ist MobileSAM und wie unterscheidet es sich vom ursprünglichen SAM-Modell?

MobileSAM ist ein leichtgewichtiges, schnelles Bildsegmentierungs-Modell, das für mobile und Edge-Anwendungen optimiert ist. Es behält die gleiche Pipeline wie das Original-SAM bei, ersetzt aber den großen ViT-H-Encoder (632 Millionen Parameter) durch einen kompakten Tiny-ViT-Encoder (5 Millionen Parameter). Dadurch ist MobileSAM etwa 5-mal kleiner und 7-mal schneller als das Original-SAM und arbeitet mit etwa 12 ms pro Bild gegenüber 456 ms bei SAM. Erfahren Sie mehr über die Implementierung von MobileSAM im MobileSAM GitHub-Repository.

Wie kann ich MobileSAM mit Ultralytics testen?

Das Testen von MobileSAM in Ultralytics ist unkompliziert. Sie können Punkt- und Box-Prompts verwenden, um Segmente vorherzusagen. Zum Beispiel die Verwendung eines Punkt-Prompts:

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 finden Sie im Abschnitt Testen von MobileSAM in Ultralytics.

Warum sollte ich MobileSAM für meine mobile Anwendung verwenden?

MobileSAM eignet sich aufgrund seines schlanken Designs und seiner schnellen Inferenzgeschwindigkeit ideal für mobile Anwendungen und Edge-Anwendungen. Im Vergleich zum ursprünglichen SAM ist MobileSAM etwa 5-mal kleiner und 7-mal schneller, wodurch es sich für die Echtzeitsegmentierung auf Geräten mit begrenzten Rechenressourcen eignet. Seine Effizienz ermöglicht es mobilen Geräten, eine Echtzeit-Bildsegmentierung ohne signifikante Latenz durchzuführen. Darüber hinaus unterstützt MobileSAM den für mobile Leistung optimierten Inferenzmodus.

Wie wurde MobileSAM trainiert und ist der Trainingscode verfügbar?

MobileSAM wurde auf einer einzelnen GPU mit einem 100k-Bilddatensatz (1 % der Originalbilder) in weniger als einem Tag trainiert. Während der Trainingscode in Zukunft veröffentlicht wird, können Sie derzeit über das MobileSAM GitHub-Repository auf vortrainierte Gewichte und Implementierungsdetails zugreifen.

Was sind die Hauptanwendungsfälle für MobileSAM?

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

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

Weitere Informationen zu Anwendungsfällen und Leistung finden Sie unter Anpassung von SAM an MobileSAM und im Ultralytics-Blog zu MobileSAM-Anwendungen.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 4 Tagen

Kommentare