Mobiles Segment Irgendwas (MobileSAM)
Das MobileSAM Papier ist jetzt auf arXiv verfügbar.
Eine Demonstration von MobileSAM , die auf einem CPU läuft, kann über diesen Demo-Link aufgerufen werden. Die Leistung auf einem Mac i5 CPU beträgt etwa 3 Sekunden. Auf der Demo Hugging Face tragen die Schnittstelle und die leistungsschwächeren CPUs zu einer langsameren Reaktion bei, aber sie funktioniert weiterhin effektiv.
Beobachten: Inferenz mit MobileSAM und Ultralytics | Schritt-für-Schritt-Anleitung 🎉
MobileSAM wird in verschiedenen Projekten eingesetzt, darunter Grounding-SAM, AnyLabeling und Segment Anything in 3D.
MobileSAM wird auf einem 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
In dieser Tabelle werden die verfügbaren Modelle mit ihren spezifischen vortrainierten Gewichten, den von ihnen unterstützten Aufgaben und ihrer Kompatibilität mit verschiedenen Betriebsmodi wie Inferenz, Validierung, Training und Export aufgeführt, gekennzeichnet durch ✅ Emojis für unterstützte Modi und ❌ Emojis für nicht unterstützte Modi.
Modell Typ | Vorgefertigte Gewichte | Unterstützte Aufgaben | Inferenz | Validierung | Ausbildung | Exportieren |
---|---|---|---|---|---|---|
MobileSAM | mobile_sam.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
Anpassen von SAM an MobileSAM
Da MobileSAM die gleiche Pipeline wie das Original SAM verwendet, haben wir die Vorverarbeitung, die Nachverarbeitung und alle anderen Schnittstellen des Originals übernommen. Folglich können diejenigen, die derzeit das Original SAM verwenden, mit minimalem Aufwand zu MobileSAM wechseln.
MobileSAM hat eine vergleichbare Leistung wie das Original SAM und behält dieselbe Pipeline bei, abgesehen von einer Änderung des Bildkodierers. Insbesondere ersetzen wir den ursprünglichen, schwergewichtigen ViT-H-Encoder (632M) durch einen kleineren Tiny-ViT (5M). Auf einer einzigen 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:
Bild-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 Eingabeaufforderung demonstriert.
Mit seiner überragenden Leistung ist MobileSAM etwa 5 Mal kleiner und 7 Mal schneller als das aktuelle FastSAM. Weitere Einzelheiten sind auf der ProjektseiteMobileSAM zu finden.
Prüfung MobileSAM in Ultralytics
Genau wie das Original SAM bieten wir unter Ultralytics eine unkomplizierte Testmethode an, die sowohl Modi für Punkt- als auch für Kastenaufforderungen umfasst.
Modell Download
Sie können 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 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 mutiple 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]])
Wir haben umgesetzt MobileSAM
und SAM
unter Verwendung der gleichen API. Weitere Informationen zur Verwendung finden Sie in der SAM Seite.
Zitate und Danksagungen
Wenn Sie MobileSAM für Ihre Forschungs- oder Entwicklungsarbeit nützlich finden, sollten Sie unser Papier zitieren:
FAQ
Was ist MobileSAM und wie unterscheidet es sich von dem ursprünglichen Modell SAM ?
MobileSAM ist ein leichtgewichtiges, schnelles Bildsegmentierungsmodell, das für mobile Anwendungen entwickelt wurde. Es behält dieselbe 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 etwa 5 Mal kleiner und 7 Mal schneller als das Original SAM ist. Zum Beispiel arbeitet MobileSAM mit etwa 12 ms pro Bild, verglichen mit 456 ms beim Original SAM. Mehr über die Implementierung von MobileSAM in verschiedenen Projekten können Sie hier erfahren.
Wie kann ich MobileSAM mit Ultralytics testen?
Das Testen von MobileSAM in Ultralytics kann mit einfachen Methoden durchgeführt werden. Sie können 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 finden Sie auch im Abschnitt Testen 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 fünfmal kleiner und siebenmal schneller, was es für Umgebungen mit begrenzten Rechenressourcen geeignet macht. Diese Effizienz stellt sicher, dass mobile Geräte Bildsegmentierungen in Echtzeit und ohne signifikante Latenzzeit durchführen können. Darüber hinaus sind die Modelle von MobileSAM, wie z. B. Inference, für die mobile Leistung optimiert.
Wie wurde MobileSAM geschult, und ist der Schulungscode verfügbar?
MobileSAM wurde auf einem einzigen GPU mit einem 100k-Datensatz, d.h. 1% der Originalbilder, in weniger als einem Tag trainiert. Während der Trainingscode in Zukunft zur Verfügung gestellt wird, können Sie derzeit 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. Zu den wichtigsten Anwendungsfällen gehören:
- Objekterkennung und -segmentierung in Echtzeit für mobile Anwendungen.
- Bildverarbeitung mit geringer Latenzzeit in Geräten mit begrenzten Rechenressourcen.
- Integration in KI-gesteuerte mobile Anwendungen für Aufgaben wie Augmented Reality (AR) und Echtzeit-Analysen.
Ausführlichere Anwendungsfälle und Leistungsvergleiche finden Sie im Abschnitt " Anpassung von SAM an MobileSAM".