SAM 2.1
Wir haben gerade das genauere Modell SAM2.1 unterstützt. Bitte probieren Sie es aus!
SAM 2: Segment Beliebiges Modell 2
SAM 2, der Nachfolger von Metas Segment Anything Model (SAM), ist ein hochmodernes Tool für die umfassende Segmentierung von Objekten in Bildern und Videos. Es zeichnet sich bei der Verarbeitung komplexer visueller Daten durch eine einheitliche, abrufbare Modellarchitektur aus, die Echtzeitverarbeitung und Zero-Shot-Generalisierung unterstützt.
Wesentliche Merkmale
Beobachten: Inferenz mit Metas SAM2 unter Ultralytics | Schritt-für-Schritt-Anleitung 🎉
Einheitliche Modellarchitektur
SAM 2 vereint die Fähigkeiten der Bild- und Videosegmentierung in einem einzigen Modell. Diese Vereinheitlichung vereinfacht die Bereitstellung und ermöglicht eine konsistente Leistung über verschiedene Medientypen hinweg. Es nutzt eine flexible, auf Eingabeaufforderungen basierende Schnittstelle, die es den Benutzern ermöglicht, Objekte von Interesse durch verschiedene Eingabeaufforderungstypen wie Punkte, Begrenzungsrahmen oder Masken anzugeben.
Leistung in Echtzeit
Das Modell erreicht eine Echtzeit-Inferenzgeschwindigkeit und verarbeitet etwa 44 Bilder pro Sekunde. Damit eignet sich SAM 2 für Anwendungen, die ein unmittelbares Feedback erfordern, wie z. B. Videobearbeitung und Augmented Reality.
Null-Schuss-Verallgemeinerung
SAM 2 ist in der Lage, Objekte zu segmentieren, denen es noch nie zuvor begegnet ist, und zeigt damit eine starke Generalisierung bei Nullschüssen. Dies ist besonders nützlich in vielfältigen oder sich entwickelnden visuellen Bereichen, in denen vordefinierte Kategorien möglicherweise nicht alle möglichen Objekte abdecken.
Interaktive Verfeinerung
Die Benutzer können die Segmentierungsergebnisse iterativ verfeinern, indem sie zusätzliche Eingabeaufforderungen geben, was eine genaue Kontrolle über die Ausgabe ermöglicht. Diese Interaktivität ist für die Feinabstimmung der Ergebnisse bei Anwendungen wie Videoanmerkungen oder medizinischer Bildgebung unerlässlich.
Fortgeschrittener Umgang mit visuellen Herausforderungen
SAM 2 enthält Mechanismen zur Bewältigung gängiger Probleme bei der Videosegmentierung, wie z. B. das Verdecken und Wiederauftauchen von Objekten. Es verwendet einen ausgeklügelten Speichermechanismus, um Objekte über Frames hinweg zu verfolgen und die Kontinuität zu gewährleisten, selbst wenn Objekte vorübergehend verdeckt sind oder die Szene verlassen und wieder betreten.
Für ein tieferes Verständnis der Architektur und der Funktionen von SAM 2 lesen Sie bitte das ForschungspapierSAM 2.
Leistung und technische Details
SAM 2 setzt neue Maßstäbe in diesem Bereich und übertrifft frühere Modelle bei verschiedenen Kriterien:
Metrisch | SAM 2 | Vorherige SOTA |
---|---|---|
Interaktive Video-Segmentierung | Am besten | - |
Menschliche Interaktionen erforderlich | 3x weniger | Basislinie |
Bildsegmentierungsgenauigkeit | Verbessert | SAM |
Inferenzgeschwindigkeit | 6x schneller | SAM |
Modell der Architektur
Kernkomponenten
- Bild- und Video-Encoder: Verwendet eine auf Transformer basierende Architektur zur Extraktion von High-Level-Merkmalen aus Bildern und Videoframes. Diese Komponente ist für das Verständnis des visuellen Inhalts in jedem Zeitschritt verantwortlich.
- Prompt-Encoder: Verarbeitet vom Benutzer bereitgestellte Eingabeaufforderungen (Punkte, Boxen, Masken), um die Segmentierungsaufgabe zu steuern. Dadurch kann sich SAM 2 an die Benutzereingaben anpassen und bestimmte Objekte innerhalb einer Szene anvisieren.
- Speichermechanismus: Umfasst einen Speicherkodierer, eine Speicherbank und ein Speicheraufmerksamkeitsmodul. Diese Komponenten speichern und nutzen gemeinsam Informationen aus vergangenen Bildern, so dass das Modell eine konsistente Objektverfolgung über die Zeit hinweg beibehalten kann.
- Masken-Decoder: Generiert die endgültigen Segmentierungsmasken auf der Grundlage der kodierten Bildmerkmale und Aufforderungen. Bei Videos wird auch der Speicherkontext verwendet, um eine genaue Verfolgung über mehrere Bilder hinweg zu gewährleisten.
Speichermechanismus und Okklusionsbehandlung
Der Speichermechanismus ermöglicht es SAM 2, zeitliche Abhängigkeiten und Verdeckungen in Videodaten zu verarbeiten. Wenn sich Objekte bewegen und interagieren, zeichnet SAM 2 ihre Merkmale in einer Speicherbank auf. Wenn ein Objekt verdeckt wird, kann sich das Modell auf diesen Speicher verlassen, um seine Position und sein Aussehen vorherzusagen, wenn es wieder auftaucht. Der Okklusionskopf behandelt speziell Szenarien, in denen Objekte nicht sichtbar sind, und sagt die Wahrscheinlichkeit voraus, dass ein Objekt verdeckt ist.
Multi-Mask Ambiguity Resolution
In Situationen mit Mehrdeutigkeit (z. B. bei sich überlappenden Objekten) kann SAM 2 mehrere Maskenvorhersagen erstellen. Diese Funktion ist entscheidend für die genaue Darstellung komplexer Szenen, in denen eine einzige Maske die Nuancen der Szene möglicherweise nicht ausreichend beschreibt.
SA-V-Datensatz
Der SA-V-Datensatz, der für das Training von SAM 2 entwickelt wurde, ist einer der größten und vielfältigsten verfügbaren Datensätze für die Videosegmentierung. Er umfasst:
- Über 51.000 Videos: Aufgenommen in 47 Ländern, die eine breite Palette von Szenarien aus der Praxis bieten.
- Über 600.000 Masken-Anmerkungen: Detaillierte räumlich-zeitliche Maskenanmerkungen, so genannte "Masklets", für ganze Objekte und Teile.
- Umfang des Datensatzes: Er enthält 4,5-mal mehr Videos und 53-mal mehr Anmerkungen als die bisher größten Datensätze und bietet eine noch nie dagewesene Vielfalt und Komplexität.
Benchmarks
Segmentierung von Videoobjekten
SAM 2 hat bei den wichtigsten Benchmarks für die Videosegmentierung eine überragende Leistung gezeigt:
Datensatz | J&F | J | F |
---|---|---|---|
DAVIS 2017 | 82.5 | 79.8 | 85.2 |
YouTube-VOS | 81.2 | 78.9 | 83.5 |
Interaktive Segmentierung
Bei interaktiven Segmentierungsaufgaben zeigt SAM 2 eine hohe Effizienz und Genauigkeit:
Datensatz | NoC@90 | AUC |
---|---|---|
DAVIS Interaktiv | 1.54 | 0.872 |
Einrichtung
Um SAM 2 zu installieren, verwenden Sie den folgenden Befehl. Alle SAM 2 Modelle werden bei der ersten Verwendung automatisch heruntergeladen.
Verwendung von SAM 2: Vielseitigkeit bei der Bild- und Videosegmentierung
Die folgende Tabelle zeigt die verfügbaren SAM 2 Modelle, ihre vortrainierten Gewichte, unterstützte Aufgaben und die Kompatibilität mit verschiedenen Betriebsmodi wie Inferenz, Validierung, Training und Export.
Modell Typ | Vorgefertigte Gewichte | Unterstützte Aufgaben | Inferenz | Validierung | Ausbildung | Exportieren |
---|---|---|---|---|---|---|
SAM 2 winzig | sam2_t.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2 kleine | sam2_s.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2 Basis | sam2_b.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2 groß | sam2_l.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 klein | sam2.1_t.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 klein | sam2.1_s.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 Basis | sam2.1_b.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 groß | sam2.1_l.pt | Instanz-Segmentierung | ✅ | ❌ | ❌ | ❌ |
SAM 2 Beispiele für Vorhersagen
SAM 2 kann für ein breites Spektrum von Aufgaben eingesetzt werden, darunter Videobearbeitung in Echtzeit, medizinische Bildgebung und autonome Systeme. Seine Fähigkeit, sowohl statische als auch dynamische visuelle Daten zu segmentieren, macht es zu einem vielseitigen Werkzeug für Forscher und Entwickler.
Segment mit Prompts
Segment mit Prompts
Verwenden Sie Eingabeaufforderungen, um bestimmte Objekte in Bildern oder Videos zu segmentieren.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Run inference with single point
results = model(points=[900, 370], labels=[1])
# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Segment Alles
Segment Alles
Segmentieren Sie den gesamten Bild- oder Videoinhalt ohne spezifische Aufforderungen.
Video segmentieren und Objekte verfolgen
Segment Video
Segmentieren Sie den gesamten Videoinhalt mit spezifischen Aufforderungen und Spurobjekten.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=1)
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
- Dieses Beispiel zeigt, wie SAM 2 verwendet werden kann, um den gesamten Inhalt eines Bildes oder Videos zu segmentieren, wenn keine Eingabeaufforderungen (bboxes/points/masks) vorhanden sind.
SAM 2 Vergleich gegen YOLOv8
Hier vergleichen wir das kleinste Modell von Meta SAM 2, SAM2-t, mit dem kleinsten Segmentierungsmodell von Ultralytics , YOLOv8n-seg:
Modell | Größe (MB) |
Parameter (M) |
Geschwindigkeit (CPU) (ms/im) |
---|---|---|---|
Meta SAM-b | 375 | 93.7 | 161440 |
Meta SAM2-b | 162 | 80.8 | 121923 |
Meta SAM2-t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM-s mit YOLOv8 backbone | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-seg | 6,7 (11,7x kleiner) | 3,4 (11,4x weniger) | 79,5 (1071x schneller) |
Dieser Vergleich zeigt die Größenunterschiede zwischen den einzelnen Modellen in Bezug auf Größe und Geschwindigkeit. Während SAM einzigartige Möglichkeiten für die automatische Segmentierung bietet, ist es kein direkter Konkurrent für YOLOv8 Segmentmodelle, die kleiner, schneller und effizienter sind.
Die Tests laufen auf einem 2023 Apple M2 Macbook mit 16 GB RAM und torch==2.3.1
und ultralytics==8.3.82
. Um diesen Test 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 YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model(ASSETS)
Auto-Beschriftung: Effiziente Erstellung von Datensätzen
Die automatische Beschriftung ist eine leistungsstarke Funktion von SAM 2, die es den Benutzern ermöglicht, Segmentierungsdatensätze schnell und genau zu erstellen, indem sie vorab trainierte Modelle nutzt. Diese Funktion ist besonders nützlich für die Erstellung großer, hochwertiger Datensätze ohne großen manuellen Aufwand.
Automatisch annotieren mit SAM 2
Beobachten: Automatische Beschriftung mit Metas Segment Anything 2 Modell unter Ultralytics | Data Labeling
Folgen Sie diesem Beispiel, um Ihren Datensatz mit SAM 2 automatisch zu annotieren:
Beispiel für eine automatische Annotation
Argument | Typ | Beschreibung | Standard |
---|---|---|---|
data |
str |
Pfad zu einem Ordner mit Bildern, die mit Anmerkungen versehen werden sollen. | |
det_model |
str , fakultativ |
Vorgeprüftes Erkennungsmodell YOLO . Standardwert ist 'yolo11x.pt'. | 'yolo11x.pt' |
sam_model |
str , fakultativ |
Vorgeprüftes SAM 2 Segmentierungsmodell. Standardeinstellung ist 'sam2_b.pt'. | 'sam2_b.pt' |
device |
str , fakultativ |
Gerät, auf dem die Modelle ausgeführt werden sollen. Standardmäßig wird eine leere Zeichenkette verwendet (CPU oder GPU, falls verfügbar). | |
conf |
float , fakultativ |
Konfidenzschwelle für das Erkennungsmodell; Standardwert ist 0,25. | 0.25 |
iou |
float , fakultativ |
IoU-Schwellenwert für das Filtern von überlappenden Boxen in den Erkennungsergebnissen; Standardwert ist 0,45. | 0.45 |
imgsz |
int , fakultativ |
Eingabe der Größe des Bildes; Standardwert ist 640. | 640 |
max_det |
int , fakultativ |
Begrenzt die Erkennungen pro Bild, um den Output in dichten Szenen zu kontrollieren. | 300 |
classes |
list , fakultativ |
Filtert Vorhersagen auf die angegebenen Klassen-IDs und gibt nur relevante Erkennungen zurück. | None |
output_dir |
str , None , fakultativ |
Verzeichnis zum Speichern der kommentierten Ergebnisse. Standardmäßig wird ein Ordner "labels" im selben Verzeichnis wie "data" verwendet. | None |
Diese Funktion erleichtert die schnelle Erstellung qualitativ hochwertiger Segmentierungsdatensätze, ideal für Forscher und Entwickler, die ihre Projekte beschleunigen wollen.
Beschränkungen
Trotz seiner Stärken weist SAM 2 gewisse Einschränkungen auf:
- Verfolgungsstabilität: SAM 2 kann die Verfolgung von Objekten bei längeren Sequenzen oder erheblichen Blickwinkeländerungen verlieren.
- Objektverwirrung: Das Modell kann manchmal ähnlich aussehende Objekte verwechseln, insbesondere in belebten Szenen.
- Effizienz bei mehreren Objekten: Die Segmentierungseffizienz nimmt ab, wenn mehrere Objekte gleichzeitig verarbeitet werden, da die Kommunikation zwischen den Objekten fehlt.
- Detailgenauigkeit: Möglicherweise werden feine Details übersehen, insbesondere bei sich schnell bewegenden Objekten. Zusätzliche Eingabeaufforderungen können dieses Problem teilweise beheben, aber die zeitliche Glätte ist nicht garantiert.
Zitate und Danksagungen
Wenn SAM 2 ein wesentlicher Bestandteil Ihrer Forschungs- oder Entwicklungsarbeit ist, zitieren Sie es bitte unter Verwendung der folgenden Quellenangabe:
@article{ravi2024sam2,
title={SAM 2: Segment Anything in Images and Videos},
author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
journal={arXiv preprint},
year={2024}
}
Wir danken Meta AI für ihren Beitrag zur KI-Gemeinschaft mit diesem bahnbrechenden Modell und Datensatz.
FAQ
Was ist SAM 2 und wie verbessert es das ursprüngliche Segment Anything Model (SAM)?
SAM 2, der Nachfolger von Metas Segment Anything Model (SAM), ist ein hochmodernes Tool für die umfassende Segmentierung von Objekten in Bildern und Videos. Es zeichnet sich bei der Verarbeitung komplexer visueller Daten durch eine einheitliche, abrufbare Modellarchitektur aus, die Echtzeitverarbeitung und Zero-Shot-Generalisierung unterstützt. SAM 2 bietet mehrere Verbesserungen gegenüber dem Original SAM, darunter:
- Vereinheitlichte Modellarchitektur: Kombiniert Bild- und Videosegmentierungsfunktionen in einem einzigen Modell.
- Leistung in Echtzeit: Verarbeitet ca. 44 Bilder pro Sekunde und ist damit für Anwendungen geeignet, die ein sofortiges Feedback erfordern.
- Null-Schuss-Generalisierung: Segmentiert Objekte, denen es noch nie zuvor begegnet ist, nützlich in verschiedenen visuellen Bereichen.
- Interaktive Verfeinerung: Ermöglicht es den Benutzern, die Segmentierungsergebnisse iterativ zu verfeinern, indem sie zusätzliche Aufforderungen erhalten.
- Fortgeschrittener Umgang mit visuellen Herausforderungen: Bewältigt gängige Herausforderungen bei der Videosegmentierung wie Objektverdeckung und Wiederauftauchen.
Weitere Einzelheiten über die Architektur und die Funktionen von SAM 2 finden Sie im ForschungspapierSAM 2.
Wie kann ich SAM 2 für die Echtzeit-Videosegmentierung verwenden?
SAM 2 kann für die Echtzeit-Videosegmentierung eingesetzt werden, indem die prompte Schnittstelle und die Echtzeit-Inferenzfunktionen genutzt werden. Hier ist ein einfaches Beispiel:
Segment mit Prompts
Verwenden Sie Eingabeaufforderungen, um bestimmte Objekte in Bildern oder Videos zu segmentieren.
from ultralytics import SAM
# Load a model
model = SAM("sam2_b.pt")
# Display model information (optional)
model.info()
# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])
Ausführlichere Informationen zur Verwendung finden Sie im Abschnitt "Verwendung von SAM 2".
Welche Datensätze werden für das Training von SAM 2 verwendet, und wie verbessern sie die Leistung?
SAM 2 wurde mit dem SA-V-Datensatz trainiert, einem der größten und vielfältigsten verfügbaren Datensätze zur Videosegmentierung. Der SA-V-Datensatz umfasst:
- Über 51.000 Videos: Aufgenommen in 47 Ländern, die eine breite Palette von Szenarien aus der Praxis bieten.
- Über 600.000 Masken-Anmerkungen: Detaillierte räumlich-zeitliche Maskenanmerkungen, so genannte "Masklets", für ganze Objekte und Teile.
- Umfang des Datensatzes: Enthält 4,5-mal mehr Videos und 53-mal mehr Anmerkungen als die bisher größten Datensätze und bietet eine noch nie dagewesene Vielfalt und Komplexität.
Dank dieses umfangreichen Datensatzes erreicht SAM 2 eine überragende Leistung bei den wichtigsten Videosegmentierungs-Benchmarks und verbessert seine Fähigkeiten zur Zero-Shot-Generalisierung. Weitere Informationen finden Sie im Abschnitt SA-V-Datensatz.
Wie geht SAM 2 mit Verdeckungen und dem Wiederauftauchen von Objekten bei der Segmentierung von Videos um?
SAM 2 enthält einen ausgeklügelten Speichermechanismus zur Verwaltung zeitlicher Abhängigkeiten und Verdeckungen in Videodaten. Der Speichermechanismus besteht aus:
- Speicher-Encoder und Speicherbank: Speichert Merkmale aus vergangenen Bildern.
- Gedächtnis-Aufmerksamkeitsmodul: Verwendet gespeicherte Informationen, um die Objektverfolgung über einen längeren Zeitraum aufrechtzuerhalten.
- Occlusion Head: Speziell für Szenarien, in denen Objekte nicht sichtbar sind, wird die Wahrscheinlichkeit vorhergesagt, dass ein Objekt verdeckt ist.
Dieser Mechanismus gewährleistet die Kontinuität, auch wenn Objekte vorübergehend verdeckt werden oder die Szene verlassen und wieder betreten. Weitere Einzelheiten finden Sie im Abschnitt " Speichermechanismus und Handhabung von Okklusion ".
Wie schneidet SAM 2 im Vergleich zu anderen Segmentierungsmodellen wie YOLOv8 ab?
SAM 2 und Ultralytics YOLOv8 dienen unterschiedlichen Zwecken und sind in verschiedenen Bereichen hervorragend. Während SAM 2 für eine umfassende Objektsegmentierung mit erweiterten Funktionen wie Zero-Shot-Generalisierung und Echtzeitleistung konzipiert ist, wurde YOLOv8 für Geschwindigkeit und Effizienz bei der Objekterkennung und -segmentierung optimiert. Hier ist ein Vergleich:
Modell | Größe (MB) |
Parameter (M) |
Geschwindigkeit (CPU) (ms/im) |
---|---|---|---|
Meta SAM-b | 375 | 93.7 | 161440 |
Meta SAM2-b | 162 | 80.8 | 121923 |
Meta SAM2-t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM-s mit YOLOv8 backbone | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-seg | 6,7 (11,7x kleiner) | 3,4 (11,4x weniger) | 79,5 (1071x schneller) |
Weitere Einzelheiten finden Sie im Abschnitt SAM 2 im Vergleich zu YOLOv8.