Zum Inhalt springen

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.

SAM 2 Beispielergebnisse

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.

SAM 2 Architektur-Diagramm

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.

pip install ultralytics

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.

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4")
# Run inference with a SAM 2 model
yolo predict model=sam2.1_b.pt source=path/to/video.mp4

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

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
Argument Typ Standard Beschreibung
data str required Path to directory containing target images/videos for annotation or segmentation.
det_model str "yolo11x.pt" YOLO detection model path for initial object detection.
sam_model str "sam2_b.pt" SAM2 model path for segmentation (supports t/s/b/l variants and SAM2.1) and mobile_sam models.
device str "" Computation device (e.g., 'cuda:0', 'cpu', or '' for automatic device detection).
conf float 0.25 YOLO detection confidence threshold for filtering weak detections.
iou float 0.45 IoU threshold for Non-Maximum Suppression to filter overlapping boxes.
imgsz int 640 Input size for resizing images (must be multiple of 32).
max_det int 300 Maximum number of detections per image for memory efficiency.
classes list[int] None List of class indices to detect (e.g., [0, 1] for person & bicycle).
output_dir str None Save directory for annotations (defaults to './labels' relative to data path).

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.

📅 Erstellt vor 5 Monaten ✏ Aktualisiert vor 19 Tagen

Kommentare