Website-Suche

SAM 2: Metas Next-Gen-Modell für die Video- und Bildsegmentierung


Einführung

Die Ära ist angebrochen, in der Ihr Telefon oder Computer dank Technologien wie YOLO und SAM die Objekte eines Bildes verstehen kann.

Das Segment Anything Model (SAM) von Meta kann Objekte in Bildern sofort identifizieren und trennen, ohne dass ein Training für bestimmte Bilder erforderlich ist. Es ist wie ein digitaler Zauberer, der jedes Objekt in einem Bild mit nur einer Bewegung seines virtuellen Zauberstabs verstehen kann. Nach der erfolgreichen Veröffentlichung von Lama 3.1 kündigte Meta am 29. Juli SAM 2 an, ein einheitliches Modell für die Echtzeit-Objektsegmentierung in Bildern und Videos, das eine Leistung auf dem neuesten Stand der Technik erreicht hat.

SAM 2 bietet zahlreiche reale Anwendungen. Die Ausgaben können beispielsweise in generative Videomodelle integriert werden, um innovative Videoeffekte zu erzeugen und neue kreative Möglichkeiten zu erschließen. Darüber hinaus kann SAM 2 die Tools zur visuellen Datenanmerkung verbessern und so die Entwicklung fortschrittlicherer Computer-Vision-Systeme beschleunigen.

SAM 2 umfasst eine Aufgabe, ein Modell und Daten (Bildquelle)

Was ist Bildsegmentierung in SAM?

Segment Anything (SAM) führt eine Bildsegmentierungsaufgabe ein, bei der eine Segmentierungsmaske aus einer Eingabeaufforderung generiert wird, beispielsweise einem Begrenzungsrahmen oder einem Punkt, der das interessierende Objekt angibt. SAM basiert auf dem SA-1B-Datensatz und unterstützt Zero-Shot-Segmentierung mit flexibler Eingabeaufforderung, sodass es für verschiedene Anwendungen geeignet ist. Jüngste Fortschritte haben die Qualität und Effizienz von SAM verbessert. HQ-SAM verbessert die Ausgabequalität mithilfe eines High-Quality-Ausgabetokens und Training mit feinkörnigen Masken. Zu den Bemühungen, die Effizienz für einen breiteren Einsatz in der Praxis zu steigern, gehören EfficientSAM, MobileSAM und FastSAM. Der Erfolg von SAM hat zu seiner Anwendung in Bereichen wie medizinische Bildgebung, Fernerkundung, Bewegungssegmentierung und Erkennung getarnter Objekte geführt.

Verwendeter Datensatz

Viele Datensätze wurden entwickelt, um die Aufgabe der Videoobjektsegmentierung (VOS) zu unterstützen. Frühe Datensätze verfügen über hochwertige Anmerkungen, sind jedoch zu klein für das Training von Deep-Learning-Modellen. YouTube-VOS, der erste groß angelegte VOS-Datensatz, deckt 94 Objektkategorien in 4.000 Videos ab. Als sich die Algorithmen verbesserten und die Benchmark-Leistung ein Plateau erreichte, erhöhten die Forscher den Schwierigkeitsgrad der VOS-Aufgabe, indem sie sich auf Verdeckungen, lange Videos, extreme Transformationen sowie Objekt- und Szenenvielfalt konzentrierten. Aktuellen Videosegmentierungsdatensätzen fehlt die erforderliche Breite, um „alles in Videos zu segmentieren“, da ihre Anmerkungen normalerweise ganze Objekte innerhalb bestimmter Klassen wie Personen, Fahrzeuge und Tiere abdecken. Im Gegensatz dazu konzentriert sich der kürzlich eingeführte SA-V-Datensatz nicht nur auf ganze Objekte, sondern auch weitgehend auf Objektteile, die über eine Größenordnung mehr Masken enthalten. Der erfasste SA-V-Datensatz umfasst 50,9.000 Videos mit 642,6.000 Masklets.

Beispielvideos aus dem SA-V-Datensatz mit Masklets (Bildquelle)

Modellarchitektur

Das Modell erweitert SAM, um sowohl mit Videos als auch mit Bildern zu arbeiten. SAM 2 kann Punkt-, Box- und Maskeneingaben für einzelne Bilder verwenden, um die räumliche Ausdehnung des zu segmentierenden Objekts im gesamten Video zu definieren. Bei der Verarbeitung von Bildern funktioniert das Modell ähnlich wie SAM. Ein leichter, aufforderungsfähiger Maskendecoder nutzt die Einbettung eines Frames und alle Aufforderungen, um eine Segmentierungsmaske zu generieren. Eingabeaufforderungen können iterativ hinzugefügt werden, um die Masken zu verfeinern.

Im Gegensatz zu SAM wird die vom SAM 2-Decoder verwendete Frame-Einbettung nicht direkt vom Bild-Encoder übernommen. Stattdessen basiert es auf Erinnerungen an vergangene Vorhersagen und Aufforderungen aus früheren Frames, einschließlich solcher aus „zukünftigen“ Frames im Verhältnis zum aktuellen. Der Speicher-Encoder erstellt diese Speicher basierend auf der aktuellen Vorhersage und speichert sie für die zukünftige Verwendung in einer Speicherbank. Die Speicheraufmerksamkeitsoperation nutzt die Einbettung pro Bild vom Bildkodierer und konditioniert sie in der Speicherbank, um eine Einbettung zu erzeugen, die an den Maskendekodierer übergeben wird.

SAM 2-Architektur. In jedem Frame basiert die Segmentierungsvorhersage auf der aktuellen Eingabeaufforderung und allen zuvor beobachteten Erinnerungen. Videos werden im Streaming-Verfahren verarbeitet, wobei die Bilder einzeln vom Bildencoder analysiert werden, der Querverweise auf Erinnerungen des Zielobjekts aus früheren Bildern erstellt. Der Maskendecoder, der auch Eingabeaufforderungen nutzen kann, sagt die Segmentierungsmaske für den Frame voraus. Schließlich transformiert ein Speicher-Encoder die Vorhersage- und Bild-Encoder-Einbettungen (in der Abbildung nicht dargestellt) zur Verwendung in zukünftigen Frames. (Bildquelle)

Hier ist eine vereinfachte Erklärung der verschiedenen Komponenten und Prozesse im Bild:

Bildkodierer

  • Zweck: Der Bildencoder verarbeitet jedes Videobild, um Feature-Einbettungen zu erstellen, bei denen es sich im Wesentlichen um komprimierte Darstellungen der visuellen Informationen in jedem Bild handelt.
  • Wie es funktioniert: Es wird nur einmal für das gesamte Video ausgeführt und ist daher effizient. MAE und Hiera extrahieren Features auf unterschiedlichen Detailebenen, um eine genaue Segmentierung zu unterstützen.

Erinnerung Aufmerksamkeit

  • Zweck: Die Aufmerksamkeit des Speichers hilft dem Modell, Informationen aus vorherigen Frames und allen neuen Eingabeaufforderungen zu nutzen, um die Segmentierung des aktuellen Frames zu verbessern.
  • Wie es funktioniert: Es verwendet eine Reihe von Transformatorblöcken, um die Merkmale des aktuellen Frames zu verarbeiten, sie mit Erinnerungen an vergangene Frames zu vergleichen und die Segmentierung basierend auf beiden zu aktualisieren. Dies hilft bei der Bewältigung komplexer Szenarien, in denen sich Objekte im Laufe der Zeit bewegen oder verändern können.

Prompt-Encoder und Maskendecoder

  • Prompt-Encoder: Ähnlich wie bei SAM benötigt er Eingabeaufforderungen (wie Klicks oder Kästchen), um zu definieren, welcher Teil des Frames segmentiert werden soll. Mithilfe dieser Eingabeaufforderungen wird die Segmentierung verfeinert.
  • Masken-Decoder: Er arbeitet mit dem Prompt-Encoder zusammen, um genaue Masken zu generieren. Wenn eine Eingabeaufforderung unklar ist, werden mehrere mögliche Masken vorhergesagt und basierend auf der Überlappung mit dem Objekt die beste ausgewählt.

Speicher-Encoder und Speicherbank

  • Memory Encoder: Diese Komponente erstellt Erinnerungen an vergangene Frames, indem sie Informationen aus vorherigen Masken und dem aktuellen Frame zusammenfasst und kombiniert. Dies hilft dem Modell, sich Informationen von früher im Video zu merken und zu verwenden.
  • Speicherbank: Sie speichert Erinnerungen an vergangene Frames und Eingabeaufforderungen. Dazu gehören eine Warteschlange aktueller Frames und Eingabeaufforderungen sowie Objektinformationen auf hoher Ebene. Es hilft dem Modell, Objektänderungen und -bewegungen im Laufe der Zeit zu verfolgen.

Ausbildung

  • Zweck: Das Modell wird für die Bewältigung interaktiver Eingabeaufforderungen und Segmentierungsaufgaben mithilfe von Bildern und Videos trainiert.
  • Wie es funktioniert: Während des Trainings lernt das Modell, Segmentierungsmasken vorherzusagen, indem es mit Bildsequenzen interagiert. Es erhält Eingabeaufforderungen wie Ground-Truth-Masken, Klicks oder Begrenzungsrahmen, um seine Vorhersagen zu steuern. Dadurch kann das Modell besser auf verschiedene Arten von Eingaben reagieren und seine Segmentierungsgenauigkeit verbessern.

Insgesamt ist das Modell darauf ausgelegt, lange Videos effizient zu verarbeiten, sich Informationen aus vergangenen Frames zu merken und Objekte anhand interaktiver Eingabeaufforderungen präzise zu segmentieren.

SAM 2 Leistung

SAM 2 Objektsegmentierung

SAM-Vergleich mit SAM 2

SAM 2 übertrifft frühere Methoden bei der interaktiven Videosegmentierung deutlich, erzielt über 17 Zero-Shot-Videodatensätze überlegene Ergebnisse und erfordert etwa dreimal weniger menschliche Interaktionen. Es übertrifft SAM in seiner Zero-Shot-Benchmark-Suite, indem es sechsmal schneller ist und sich in etablierten Benchmarks zur Videoobjektsegmentierung wie DAVIS, MOSE, LVOS und YouTube-VOS auszeichnet. Mit Echtzeit-Inferenz bei etwa 44 Bildern pro Sekunde ist SAM 2 8,4-mal schneller als die manuelle Annotation pro Bild mit SAM.

Wie installiere ich SAM 2?

# Clone the repo
!git clone https://github.com/facebookresearch/segment-anything-2.git
Move to the folder
cd segment-anything-2
Install the necessary requirements
!pip install -e .

Um den SAM 2-Prädiktor zu verwenden und die Beispielnotebooks auszuführen, sind jupyter und matplotlib erforderlich und können wie folgt installiert werden:

pip install -e ".[demo]"

Laden Sie die Checkpoints herunter

cd checkpoints
./download_ckpts.sh

Wie verwende ich SAM 2?

Bildvorhersage

SAM 2 kann für statische Bilder zur Segmentierung von Objekten verwendet werden. SAM 2 bietet für diese Anwendungsfälle ähnliche Bildvorhersage-APIs wie SAM. Die SAM2ImagePredictor-Klasse bietet eine benutzerfreundliche Schnittstelle für die Bildaufforderung.

import torch
from sam2.build_sam import build_sam2
from sam2.sam2_image_predictor import SAM2ImagePredictor

checkpoint = "./checkpoints/sam2_hiera_large.pt"
model_cfg = "sam2_hiera_l.yaml"
predictor = SAM2ImagePredictor(build_sam2(model_cfg, checkpoint))

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    predictor.set_image(<your_image>)
    masks, _, _ = predictor.predict(<input_prompts>)

Videovorhersage

SAM 2 unterstützt auch die Videovorhersage für mehrere Objekte und verwendet außerdem einen Inferenzstatus, um die Interaktionen in jedem Video zu verfolgen.

import torch
from sam2.build_sam import build_sam2_video_predictor

checkpoint = "./checkpoints/sam2_hiera_large.pt"
model_cfg = "sam2_hiera_l.yaml"
predictor = build_sam2_video_predictor(model_cfg, checkpoint)

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    state = predictor.init_state(<your_video>)

    # add new prompts and instantly get the output on the same frame
    frame_idx, object_ids, masks = predictor.add_new_points(state, <your prompts>):

    # propagate the prompts to get masklets throughout the video
    for frame_idx, object_ids, masks in predictor.propagate_in_video(state):
        ...

0:00

/0:07

Im Video haben wir SAM 2 verwendet, um die Kaffeetasse zu segmentieren

Zusammenfassung

  • SAM 2-Übersicht: SAM 2 baut auf SAM auf und erweitert dessen Funktionen von Bildern auf Videos. Es verwendet Eingabeaufforderungen wie Klicks, Begrenzungsrahmen oder Masken, um Objektgrenzen in jedem Frame zu definieren. Ein leichter Maskendecoder verarbeitet diese Eingabeaufforderungen und generiert Segmentierungsmasken für jeden Frame.
  • Videoverarbeitung: In Videos wendet SAM 2 die anfängliche Maskenvorhersage auf alle Frames an, um ein Masklet zu erstellen. Es ermöglicht eine iterative Verfeinerung durch das Hinzufügen von Eingabeaufforderungen zu nachfolgenden Frames.
  • Speichermechanismus: Für die Videosegmentierung verwendet SAM 2 einen Speicherencoder, eine Speicherbank und ein Speicheraufmerksamkeitsmodul. Der Speicher-Encoder speichert Frame-Informationen und Benutzerinteraktionen und ermöglicht so genaue Vorhersagen über Frames hinweg. Die Speicherbank speichert Daten aus vorherigen und angeforderten Frames, die das Speicher-Aufmerksamkeitsmodul verwendet, um Vorhersagen zu verfeinern.
  • Streaming-Architektur: SAM 2 verarbeitet Frames einzeln im Streaming-Modus und ist somit effizient für lange Videos und Echtzeitanwendungen wie Robotik. Es nutzt das Memory-Attention-Modul, um vergangene Frame-Daten in aktuelle Vorhersagen zu integrieren.
  • Umgang mit Mehrdeutigkeiten: SAM 2 behebt Mehrdeutigkeiten, indem bei unklaren Eingabeaufforderungen mehrere Masken generiert werden. Wenn die Mehrdeutigkeit durch Eingabeaufforderungen nicht behoben werden kann, wählt das Modell die Maske mit der höchsten Konfidenz für die weitere Verwendung im gesamten Video aus.

SAM 2-Einschränkungen

  • Leistung und Verbesserung: Während SAM 2 bei der Segmentierung von Objekten in Bildern und kurzen Videos eine gute Leistung erbringt, kann seine Leistung insbesondere in anspruchsvollen Szenarien verbessert werden.
  • Herausforderungen beim Tracking: SAM 2 kann mit drastischen Änderungen der Kameraperspektiven, langen Verdeckungen, überfüllten Szenen oder langen Videos zu kämpfen haben. Um diesem Problem zu begegnen, ist das Modell interaktiv konzipiert, sodass Benutzer die Verfolgung manuell korrigieren können, indem sie auf einen beliebigen Frame klicken, um das Zielobjekt wiederherzustellen.
  • Objektverwechslung: Wenn das Zielobjekt nur in einem Frame angegeben ist, kann SAM 2 es mit ähnlichen Objekten verwechseln. Durch zusätzliche Eingabeaufforderungen zur Verfeinerung in zukünftigen Frames können diese Probleme behoben werden, sodass sichergestellt wird, dass im gesamten Video das richtige Masklet beibehalten wird.
  • Segmentierung mehrerer Objekte: Obwohl SAM 2 mehrere Objekte gleichzeitig segmentieren kann, nimmt seine Effizienz erheblich ab, da jedes Objekt separat verarbeitet wird und nur gemeinsame Einbettungen pro Frame verwendet werden. Die Einbeziehung eines gemeinsamen Kontexts auf Objektebene könnte die Effizienz verbessern.
  • Sich schnell bewegende Objekte: Bei komplexen, sich schnell bewegenden Objekten kann SAM 2 feine Details übersehen, was zu instabilen Vorhersagen über Frames hinweg führt, wie am Beispiel eines Radfahrers gezeigt. Durch das Hinzufügen von Eingabeaufforderungen kann dies zwar teilweise behoben werden, den Vorhersagen mangelt es jedoch möglicherweise immer noch an zeitlicher Glätte, da das Modell nicht für Schwankungen zwischen Frames bestraft wird.
  • Datenanmerkung und Automatisierung: Trotz der Fortschritte bei der automatischen Masklet-Generierung mit SAM 2 werden immer noch menschliche Annotatoren benötigt, um die Qualität zu überprüfen und Frames zu identifizieren, die einer Korrektur bedürfen. Zukünftige Verbesserungen könnten den Datenanmerkungsprozess weiter automatisieren, um die Effizienz zu steigern.

Referenzen

  • Alles auf Github segmentieren
  • SAM 2: Segment Anything Model 2
  • SAM 2: Alles in Bildern und Videos segmentieren Original-Forschungspapier
  • Wir stellen vor: SAM 2: Die nächste Generation des Meta Segment Anything-Modells für Videos und Bilder

Verwandte Artikel: