KI bei Meta, FAIR
Nikhila Ravi, Valentin Gabeur, Yuan-Ting Hu, Ronghang Hu, Chaitanya Ryali, Tengyu Ma, Haitham Khedr, Roman Rädle, Chloe Rolland, Laura Gustafson, Eric Mintun, Junting Pan, Kalyan Vasudev Alwala, Nicolas Carion, Chao-Yuan Wu, Ross Girshick, Piotr Dollár, Christoph Feichtenhofer
[ Paper
] [ Project
] [ Demo
] [ Dataset
] [ Blog
] [ BibTeX
]
Segment Anything Model 2 (SAM 2) ist ein grundlegendes Modell zur Lösung einer aufforderungsgerechten visuellen Segmentierung in Bildern und Videos. Wir erweitern SAM auf Video, indem wir Bilder als Video mit einem einzelnen Frame betrachten. Das Modelldesign ist eine einfache Transformatorarchitektur mit Streaming-Speicher für die Echtzeit-Videoverarbeitung. Wir bauen eine Model-in-the-Loop-Daten-Engine auf, die Modelle und Daten durch Benutzerinteraktion verbessert, um unseren SA-V-Datensatz zu sammeln, den bislang größten Videosegmentierungsdatensatz. SAM 2, das auf unseren Daten trainiert wurde, bietet eine starke Leistung in einem breiten Spektrum von Aufgaben und visuellen Bereichen.
30.09.2024 – SAM 2.1 Developer Suite (neue Prüfpunkte, Trainingscode, Webdemo) wird veröffentlicht
pip uninstall SAM-2
, rufen Sie den neuesten Code aus diesem Repo ab (mit git pull
) und installieren Sie das Repo dann gemäß der unten aufgeführten Installation neu.training/README.md
.demo/README.md
. SAM 2 muss vor der Verwendung zuerst installiert werden. Der Code erfordert python>=3.10
sowie torch>=2.3.1
und torchvision>=0.18.1
. Bitte befolgen Sie die Anweisungen hier, um sowohl PyTorch- als auch TorchVision-Abhängigkeiten zu installieren. Sie können SAM 2 auf einem GPU-Computer installieren, indem Sie Folgendes verwenden:
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .
Wenn Sie unter Windows installieren, wird dringend empfohlen, das Windows-Subsystem für Linux (WSL) mit Ubuntu zu verwenden.
Um den SAM 2-Prädiktor zu verwenden und die Beispiel-Notebooks auszuführen, sind jupyter
und matplotlib
erforderlich und können wie folgt installiert werden:
pip install -e " .[notebooks] "
Notiz:
pip
unter https://pytorch.org/ zu installieren. Wenn Sie in Ihrer aktuellen Umgebung eine PyTorch-Version niedriger als 2.3.1 haben, versucht der obige Installationsbefehl, sie mit pip
auf die neueste PyTorch-Version zu aktualisieren.nvcc
Compiler. Wenn es auf Ihrem Computer noch nicht verfügbar ist, installieren Sie bitte die CUDA-Toolkits mit einer Version, die Ihrer PyTorch-CUDA-Version entspricht.Failed to build the SAM 2 CUDA extension
angezeigt wird, können Sie diese ignorieren und weiterhin SAM 2 verwenden (einige Nachbearbeitungsfunktionen sind möglicherweise eingeschränkt, haben jedoch in den meisten Fällen keinen Einfluss auf die Ergebnisse). Bitte besuchen Sie INSTALL.md
für FAQs zu möglichen Problemen und Lösungen.
Zuerst müssen wir einen Modellprüfpunkt herunterladen. Alle Modellprüfpunkte können heruntergeladen werden, indem Sie Folgendes ausführen:
cd checkpoints &&
./download_ckpts.sh &&
cd ..
oder einzeln bei:
(Beachten Sie, dass es sich hierbei um die verbesserten Prüfpunkte handelt, die als SAM 2.1 bezeichnet werden; Einzelheiten finden Sie in der Modellbeschreibung.)
Dann kann SAM 2 in wenigen Zeilen wie folgt zur Bild- und Videovorhersage verwendet werden.
SAM 2 verfügt über alle Funktionen von SAM für statische Bilder und wir stellen Bildvorhersage-APIs bereit, die SAM für Bildanwendungsfälle sehr ähneln. Die SAM2ImagePredictor
-Klasse verfügt über eine einfache Schnittstelle für die Bildaufforderung.
import torch from sam2 . build_sam import build_sam2 from sam2 . sam2_image_predictor import SAM2ImagePredictor checkpoint = "./checkpoints/sam2.1_hiera_large.pt" model_cfg = "configs/sam2.1/sam2.1_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 > )
Weitere Informationen zu Anwendungsfällen für statische Bilder finden Sie in den Beispielen in image_predictor_example.ipynb (hier auch in Colab).
SAM 2 unterstützt ebenso wie SAM auch die automatische Maskengenerierung für Bilder. Informationen zur automatischen Maskengenerierung in Bildern finden Sie unter „automatic_mask_generator_example.ipynb“ (auch hier in Colab).
Für die aufforderungsgerechte Segmentierung und Nachverfolgung in Videos stellen wir einen Videoprädiktor mit APIs bereit, um beispielsweise Eingabeaufforderungen hinzuzufügen und Masklets im gesamten Video zu verbreiten. SAM 2 unterstützt Videoinferenz für mehrere Objekte und verwendet einen Inferenzstatus, um die Interaktionen in jedem Video zu verfolgen.
import torch from sam2 . build_sam import build_sam2_video_predictor checkpoint = "./checkpoints/sam2.1_hiera_large.pt" model_cfg = "configs/sam2.1/sam2.1_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_or_box ( state , < your_prompts > ): # propagate the prompts to get masklets throughout the video for frame_idx , object_ids , masks in predictor . propagate_in_video ( state ): ...
Weitere Informationen zum Hinzufügen von Klick- oder Box-Eingabeaufforderungen, zum Vornehmen von Verfeinerungen und zum Verfolgen mehrerer Objekte in Videos finden Sie in den Beispielen in video_predictor_example.ipynb (hier auch in Colab).
Alternativ können Modelle auch von Hugging Face geladen werden (erfordert pip install huggingface_hub
).
Zur Bildvorhersage:
import torch from sam2 . sam2_image_predictor import SAM2ImagePredictor predictor = SAM2ImagePredictor . from_pretrained ( "facebook/sam2-hiera-large" ) with torch . inference_mode (), torch . autocast ( "cuda" , dtype = torch . bfloat16 ): predictor . set_image ( < your_image > ) masks , _ , _ = predictor . predict ( < input_prompts > )
Für die Videovorhersage:
import torch from sam2 . sam2_video_predictor import SAM2VideoPredictor predictor = SAM2VideoPredictor . from_pretrained ( "facebook/sam2-hiera-large" ) 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_or_box ( state , < your_prompts > ): # propagate the prompts to get masklets throughout the video for frame_idx , object_ids , masks in predictor . propagate_in_video ( state ): ...
Die folgende Tabelle zeigt die verbesserten SAM 2.1-Kontrollpunkte, die am 29. September 2024 veröffentlicht wurden.
Modell | Größe (M) | Geschwindigkeit (FPS) | SA-V-Test (J&F) | MOSE-Wert (J&F) | LVOS v2 (J&F) |
---|---|---|---|---|---|
sam2.1_hiera_tiny (Konfiguration, Prüfpunkt) | 38.9 | 47.2 | 76,5 | 71,8 | 77,3 |
sam2.1_hiera_small (Konfiguration, Prüfpunkt) | 46 | 43,3 (53,0 zusammengestellt*) | 76,6 | 73,5 | 78,3 |
sam2.1_hiera_base_plus (Konfiguration, Prüfpunkt) | 80,8 | 34,8 (43,8 zusammengestellt*) | 78,2 | 73,7 | 78,2 |
sam2.1_hiera_large (Konfiguration, Prüfpunkt) | 224,4 | 24,2 (30,2 zusammengestellt*) | 79,5 | 74,6 | 80,6 |
Die bisherigen SAM 2-Checkpoints, die am 29. Juli 2024 veröffentlicht wurden, sind wie folgt zu finden:
Modell | Größe (M) | Geschwindigkeit (FPS) | SA-V-Test (J&F) | MOSE-Wert (J&F) | LVOS v2 (J&F) |
---|---|---|---|---|---|
sam2_hiera_tiny (Konfiguration, Prüfpunkt) | 38.9 | 47.2 | 75,0 | 70.9 | 75,3 |
sam2_hiera_small (Konfiguration, Prüfpunkt) | 46 | 43,3 (53,0 zusammengestellt*) | 74,9 | 71,5 | 76,4 |
sam2_hiera_base_plus (Konfiguration, Prüfpunkt) | 80,8 | 34,8 (43,8 zusammengestellt*) | 74,7 | 72,8 | 75,8 |
sam2_hiera_large (Konfiguration, Prüfpunkt) | 224,4 | 24,2 (30,2 zusammengestellt*) | 76,0 | 74,6 | 79,8 |
* Kompilieren Sie das Modell, indem Sie in der Konfiguration compile_image_encoder: True
festlegen.
Weitere Informationen finden Sie unter sav_dataset/README.md.
Sie können SAM 2 anhand benutzerdefinierter Datensätze aus Bildern, Videos oder beidem trainieren oder optimieren. Bitte lesen Sie die README-Datei für die Schulung, um zu erfahren, wie Sie beginnen können.
Wir haben den Frontend- und Backend-Code für die SAM 2-Webdemo veröffentlicht (eine lokal einsetzbare Version ähnlich wie https://sam2.metademolab.com/demo). Weitere Informationen finden Sie in der README-Datei zur Webdemo.
Die SAM 2-Modellprüfpunkte, der SAM 2-Democode (Front-End und Back-End) und der SAM 2-Trainingscode sind unter Apache 2.0 lizenziert, jedoch werden die im SAM 2-Democode verwendeten Inter Font und Noto Color Emoji unter verfügbar gemacht die SIL Open Font License, Version 1.1.
Siehe Beiträge und Verhaltenskodex.
Das SAM 2-Projekt wurde durch die Hilfe vieler Mitwirkender ermöglicht (alphabetisch):
Karen Bergan, Daniel Bolya, Alex Bosenberg, Kai Brown, Vispi Cassod, Christopher Chedeau, Ida Cheng, Luc Dahlin, Shoubhik Debnath, Rene Martinez Doehner, Grant Gardner, Sahir Gomez, Rishi Godugu, Baishan Guo, Caleb Ho, Andrew Huang, Somya Jain, Bob Kamma, Amanda Kallet, Jake Kinney, Alexander Kirillov, Shiva Koduvayur, Devansh Kukreja, Robert Kuo, Aohan Lin, Parth Malani, Jitendra Malik, Mallika Malhotra, Miguel Martin, Alexander Miller, Sasha Mitts, William Ngan, George Orlin, Joelle Pineau, Kate Saenko, Rodrick Shepard, Azita Shokrpour, David Soofian, Jonathan Torres, Jenny Truong, Sagar Vaze, Meng Wang, Claudette Ward, Pengchuan Zhang.
Code von Drittanbietern: Wir verwenden einen GPU-basierten Algorithmus für verbundene Komponenten, der von cc_torch
(mit seiner Lizenz in LICENSE_cctorch
) adaptiert wurde, als optionalen Nachbearbeitungsschritt für die Maskenvorhersagen.
Wenn Sie in Ihrer Recherche SAM 2 oder den SA-V-Datensatz verwenden, verwenden Sie bitte den folgenden BibTeX-Eintrag.
@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 arXiv:2408.00714 } ,
url = { https://arxiv.org/abs/2408.00714 } ,
year = { 2024 }
}