Zum Inhalt springen

MobileSAM Logo

Mobiles Segment Irgendwas (MobileSAM)

Das MobileSAM Papier ist jetzt auf arXiv verfügbar.

Eine Demonstration von MobileSAM , die auf einem CPU läuft, findest du unter diesem Demo-Link. Die Leistung auf einem Mac i5 CPU beträgt etwa 3 Sekunden. Auf der Hugging Face Demo tragen die Schnittstelle und die leistungsschwächeren CPUs zu einer langsameren Reaktion bei, aber sie funktioniert weiterhin effektiv.

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

MobileSAM wird auf einer einzigen GPU mit einem 100k-Datensatz (1% der Originalbilder) in weniger als einem Tag trainiert. Der Code für dieses Training wird in Zukunft zur Verfügung gestellt werden.

Verfügbare Modelle, unterstützte Aufgaben und Betriebsmodi

Diese Tabelle zeigt die verfügbaren Modelle mit ihren spezifischen vortrainierten Gewichten, die Aufgaben, die sie unterstützen, und ihre Kompatibilität mit verschiedenen Betriebsmodi wie Inferenz, Validierung, Training und Export, gekennzeichnet durch ✅ Emojis für unterstützte Modi und ❌ Emojis für nicht unterstützte Modi.

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

Anpassen von SAM an MobileSAM

Da MobileSAM dieselbe Pipeline wie das Original SAM verwendet, haben wir das Pre-Processing, Post-Processing und alle anderen Schnittstellen des Originals übernommen. Daher können diejenigen, die derzeit das Original SAM verwenden, mit minimalem Aufwand auf MobileSAM umsteigen.

MobileSAM ist vergleichbar mit dem Original SAM und behält dieselbe Pipeline bei, bis auf eine Änderung des Bild-Encoders. Genauer gesagt, ersetzen wir den schwergewichtigen ViT-H Encoder (632M) durch einen kleineren Tiny-ViT (5M). Auf einer GPU arbeitet MobileSAM mit etwa 12 ms pro Bild: 8 ms für den Bildcodierer und 4 ms für den Maskendecodierer.

Die folgende Tabelle enthält einen Vergleich der ViT-basierten Bildkodierer:

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

Sowohl das Original SAM als auch MobileSAM verwenden denselben prompt-guided mask decoder:

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

Hier ist der Vergleich der gesamten Pipeline:

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

Die Leistung von MobileSAM und dem Original SAM wird anhand eines Punktes und eines Kastens als Aufforderung demonstriert.

Bild mit Punkt als Aufforderung

Bild mit Box als Aufforderung

Mit seiner überlegenen Leistung ist MobileSAM etwa 5 Mal kleiner und 7 Mal schneller als das aktuelle FastSAM. Weitere Details findest du auf der ProjektseiteMobileSAM .

Testen MobileSAM in Ultralytics

Genau wie das Original SAM bieten wir auf Ultralytics eine unkomplizierte Testmethode an, die Modi für Punkt- und Kastenaufforderungen beinhaltet.

Modell Download

Du kannst das Modell hier herunterladen.

Punkt Aufforderung

Beispiel

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

Box Aufforderung

Beispiel

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

Wir haben implementiert MobileSAM und SAM über dieselbe API. Weitere Informationen zur Nutzung findest du in der SAM Seite.

Zitate und Danksagungen

Wenn du MobileSAM für deine Forschungs- oder Entwicklungsarbeit nützlich findest, solltest du unser Papier 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}
}

FAQ

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

MobileSAM ist ein leichtgewichtiges, schnelles Bildsegmentierungsmodell, das für mobile Anwendungen entwickelt wurde. Es behält die gleiche Pipeline wie das Original SAM bei, ersetzt aber den schwergewichtigen ViT-H-Encoder (632M Parameter) durch einen kleineren Tiny-ViT-Encoder (5M Parameter). Diese Änderung führt dazu, dass MobileSAM ungefähr 5 Mal kleiner und 7 Mal schneller als das Original SAM ist. So arbeitet MobileSAM mit etwa 12 ms pro Bild, während das Original SAM 456 ms benötigt. Mehr über die Implementierung von MobileSAM in verschiedenen Projekten erfährst du hier.

Wie kann ich MobileSAM mit Ultralytics testen?

Das Testen von MobileSAM in Ultralytics kann mit einfachen Methoden durchgeführt werden. Du kannst Punkt- und Kastenaufforderungen verwenden, um Segmente vorherzusagen. Hier ist ein 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 Informationen findest du auch im Abschnitt Prüfung MobileSAM.

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

MobileSAM ist aufgrund seiner leichtgewichtigen Architektur und seiner schnellen Inferenzgeschwindigkeit ideal für mobile Anwendungen. Im Vergleich zum Original SAM ist MobileSAM etwa 5 Mal kleiner und 7 Mal schneller und eignet sich daher für Umgebungen, in denen die Rechenleistung begrenzt ist. Diese Effizienz stellt sicher, dass mobile Geräte die Bildsegmentierung in Echtzeit und ohne nennenswerte Latenzzeit durchführen können. Darüber hinaus sind die Modelle von MobileSAM, wie z. B. Inference, für die mobile Nutzung optimiert.

Wie wurde MobileSAM ausgebildet und ist der Ausbildungscode verfügbar?

MobileSAM wurde auf einem einzigen GPU mit einem 100k-Datensatz, also 1% der Originalbilder, in weniger als einem Tag trainiert. Der Trainingscode wird in Zukunft zur Verfügung gestellt, aber schon jetzt kannst du andere Aspekte von MobileSAM im MobileSAM GitHub-Repository erkunden. Dieses Repository enthält vortrainierte Gewichte und Implementierungsdetails für verschiedene Anwendungen.

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

MobileSAM wurde für eine schnelle und effiziente Bildsegmentierung in mobilen Umgebungen entwickelt. Die wichtigsten Anwendungsfälle sind:

  • Objekterkennung und -segmentierung in Echtzeit für mobile Anwendungen.
  • Bildverarbeitung mit niedriger Latenzzeit in Geräten mit begrenzten Rechenressourcen.
  • Integration in KI-gesteuerte mobile Apps für Aufgaben wie Augmented Reality (AR) und Echtzeit-Analysen.

Ausführlichere Anwendungsfälle und Leistungsvergleiche findest du im Abschnitt Anpassung von SAM an MobileSAM.



Erstellt am 2023-11-12, Aktualisiert am 2024-07-04
Autoren: glenn-jocher (13), ChaoningZhang (1), Laughing-q (1)

Kommentare