Zum Inhalt springen

MobileSAM Logo

Mobiles Segment Irgendwas (MobileSAM)

MobileSAM ist ein kompaktes, effizientes Bildsegmentierungsmodell, das speziell für mobile und Edge-Geräte entwickelt wurde. Es wurde entwickelt, um die Leistungsfähigkeit von Metas Segment Anything Model (SAM) in Umgebungen mit begrenzter Rechenleistung zu bringen, liefert MobileSAM eine nahezu sofortige Segmentierung, wobei die Kompatibilität mit der ursprünglichen SAM erhalten bleibt. Unabhängig davon, ob Sie Echtzeitanwendungen oder leichtgewichtige Implementierungen entwickeln, liefert MobileSAM beeindruckende Segmentierungsergebnisse mit einem Bruchteil der Größe und der Geschwindigkeitsanforderungen seiner Vorgängerversionen.



Beobachten: Inferenz mit MobileSAM und Ultralytics | Schritt-für-Schritt-Anleitung 🎉

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

MobileSAM wurde auf einem einzigen GPU mit einem Datensatz von 100 000 Bildern (1 % der Originalbilder) in weniger als einem Tag trainiert. Der Trainingscode wird in Zukunft veröffentlicht werden.

Verfügbare Modelle, unterstützte Aufgaben und Betriebsmodi

Die nachstehende Tabelle gibt einen Überblick über das verfügbare MobileSAM , seine vortrainierten Gewichte, unterstützte Aufgaben und die Kompatibilität mit verschiedenen Betriebsmodi wie Inferenz, Validierung, Training und Export. Unterstützte Modi sind durch ✅ und nicht unterstützte Modi durch ❌ gekennzeichnet.

Modell Typ Vorgefertigte Gewichte Unterstützte Aufgaben Inferenz Validierung Ausbildung Exportieren
MobileSAM mobile_sam.pt Instanz-Segmentierung

MobileSAM Vergleich mit YOLO

Der folgende Vergleich zeigt die Unterschiede zwischen Metas SAM MobileSAM und Ultralytics' kleinsten Segmentierungsmodellen, einschließlich YOLO11n-seg:

Modell Größe
(MB)
Parameter
(M)
Geschwindigkeit (CPU)
(ms/im)
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 mitYOLOv8-Backbone 23.7 11.8 55.9
Ultralytics YOLOv8n 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 zeigt die erheblichen Unterschiede in der Modellgröße und Geschwindigkeit zwischen SAM und YOLO . Während SAM einzigartige automatische Segmentierungsfähigkeiten bieten, sind YOLO - insbesondere YOLOv8n und YOLO11n-seg - deutlich kleiner, schneller und rechnerisch effizienter.

Die Tests wurden auf einem 2025 Apple M4 Pro mit 24 GB RAM durchgeführt. torch==2.6.0 und ultralytics==8.3.90. Um 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)

Anpassen von SAM an MobileSAM

MobileSAM verfügt über die gleiche Pipeline wie das ursprüngliche SAMeinschließlich Vorverarbeitung, Nachverarbeitung und aller Schnittstellen. Das bedeutet, dass Sie mit minimalen Änderungen an Ihrem Arbeitsablauf von SAM zu MobileSAM wechseln können.

Der wichtigste Unterschied 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 Maskendecoder).

ViT-basierter Image Encoder Vergleich

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

Aufforderungsgesteuerter Maskendecoder

Maske Decoder Original SAM MobileSAM
Parameter 3.876M 3.876M
Geschwindigkeit 4ms 4ms

Gesamte Pipeline im Vergleich

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

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

Bild mit Punkt als Aufforderung

Bild mit Box als Aufforderung

MobileSAM ist etwa fünfmal kleiner und siebenmal schneller als FastSAM. Weitere Einzelheiten finden Sie auf der MobileSAM .

Prüfung MobileSAM in Ultralytics

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

Modell Download

Laden Sie die vortrainierten MobileSAM aus den Ultralytics herunter.

Punkt Aufforderung

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 Aufforderung

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 nutzen dieselbe API. Weitere Einzelheiten zur Verwendung finden Sie in der SAM.

Automatischer Aufbau von Segmentierungsdatensätzen mithilfe eines Erkennungsmodells

Um Ihren Datensatz automatisch mit dem Ultralytics zu annotieren, verwenden Sie die auto_annotate Funktion wie unten dargestellt:

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, das die Zielbilder für die Beschriftung oder Segmentierung enthält.
det_model str 'yolo11x.pt' YOLO Erkennungsmodellpfad für die anfängliche Objekterkennung.
sam_model str 'sam_b.pt' SAM für die Segmentierung (unterstützt SAM, SAM2 und mobile_sam-Modelle).
device str '' Berechnungsgerät (z. B. 'cuda:0', 'cpu' oder '' für die automatische Geräteerkennung).
conf float 0.25 YOLO Schwellenwert für die Erkennungswahrscheinlichkeit zum Herausfiltern schwacher Erkennungen.
iou float 0.45 IoU-Schwelle für die Nicht-Maximum-Unterdrückung, um überlappende Boxen zu filtern.
imgsz int 640 Eingabegröß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, um den Speicher zu schonen.
classes list[int] None Liste der zu erkennenden Klassenindizes (z. B., [0, 1] für Person & Fahrrad).
output_dir str None Speicherverzeichnis für Anmerkungen (Standardwert ist './labels' relativ zum Datenpfad).

Zitate und Danksagungen

Wenn MobileSAM für Ihre Forschung oder Entwicklung hilfreich ist, ziehen Sie bitte in Erwägung, das folgende Dokument 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 auf arXiv.

FAQ

Was ist MobileSAM und wie unterscheidet es sich von dem ursprünglichen SAM ?

MobileSAM ist ein leichtgewichtiges, schnelles Bildsegmentierungsmodell, das für mobile und Randanwendungen optimiert ist. Es behält die gleiche Pipeline wie das ursprüngliche SAM bei, ersetzt aber den großen ViT-H-Encoder (632M Parameter) durch einen kompakten Tiny-ViT-Encoder (5M Parameter). Dadurch ist MobileSAM etwa fünfmal kleiner und siebenmal schneller als das ursprüngliche SAM und arbeitet mit etwa 12 ms pro Bild im Vergleich zu 456 ms bei SAM. Weitere Informationen über die Implementierung von MobileSAM finden Sie im MobileSAM GitHub Repository.

Wie kann ich MobileSAM mit Ultralytics testen?

Die Prüfung von MobileSAM in Ultralytics ist unkompliziert. Sie können Punkt- und Box-Eingabeaufforderungen verwenden, um Segmente vorherzusagen. Zum Beispiel mit einer Punktaufforderung:

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

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

MobileSAM eignet sich aufgrund seiner geringen Größe und schnellen Inferenzgeschwindigkeit ideal für mobile und Edge-Anwendungen. Im Vergleich zum ursprünglichen SAM ist MobileSAM etwa fünfmal kleiner und siebenmal schneller, wodurch es sich für die Echtzeitsegmentierung auf Geräten mit begrenzten Rechenressourcen eignet. Seine Effizienz ermöglicht es mobilen Geräten, Bildsegmentierungen in Echtzeit und ohne nennenswerte Latenzzeit durchzuführen. Außerdem unterstützt MobileSAM den für die mobile Leistung optimierten Inferenzmodus.

Wie wurde MobileSAM geschult, und ist der Schulungscode verfügbar?

MobileSAM wurde auf einer einzelnen GPU mit einem Datensatz von 100.000 Bildern (1 % der Originalbilder) in weniger als einem Tag trainiert. Der Trainingscode wird in Zukunft veröffentlicht. Derzeit können Sie bereits trainierte Gewichte und Implementierungsdetails über das MobileSAM GitHub-Repository abrufen.

Was sind die wichtigsten Anwendungsfälle für MobileSAM?

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

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

Weitere Einzelheiten zu Anwendungsfällen und Leistung finden Sie unter Anpassung von SAM an MobileSAM und im Ultralytics zu MobileSAM .



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 1 Monat

Kommentare