AI di Meta, ADIL
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) adalah model dasar untuk memecahkan segmentasi visual yang cepat dalam gambar dan video. Kami memperluas SAM ke video dengan menganggap gambar sebagai video dengan satu bingkai. Desain modelnya adalah arsitektur transformator sederhana dengan memori streaming untuk pemrosesan video waktu nyata. Kami membangun mesin data model-in-the-loop, yang meningkatkan model dan data melalui interaksi pengguna, untuk mengumpulkan kumpulan data SA-V kami , kumpulan data segmentasi video terbesar hingga saat ini. SAM 2 yang dilatih berdasarkan data kami memberikan kinerja yang kuat di berbagai tugas dan domain visual.
30/09/2024 -- SAM 2.1 Developer Suite (pos pemeriksaan baru, kode pelatihan, demo web) dirilis
pip uninstall SAM-2
, tarik kode terbaru dari repo ini (dengan git pull
), lalu instal ulang repo berikut Instalasi di bawah.training/README.md
tentang cara memulai.demo/README.md
untuk detailnya. SAM 2 perlu diinstal terlebih dahulu sebelum digunakan. Kode ini memerlukan python>=3.10
, serta torch>=2.3.1
dan torchvision>=0.18.1
. Silakan ikuti petunjuk di sini untuk menginstal dependensi PyTorch dan TorchVision. Anda dapat menginstal SAM 2 pada mesin GPU menggunakan:
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .
Jika Anda menginstal di Windows, sangat disarankan untuk menggunakan Subsistem Windows untuk Linux (WSL) dengan Ubuntu.
Untuk menggunakan prediktor SAM 2 dan menjalankan contoh notebook, diperlukan jupyter
dan matplotlib
dan dapat diinstal dengan:
pip install -e " .[notebooks] "
Catatan:
pip
berikut https://pytorch.org/. Jika Anda memiliki versi PyTorch yang lebih rendah dari 2.3.1 di lingkungan Anda saat ini, perintah instalasi di atas akan mencoba memutakhirkannya ke versi PyTorch terbaru menggunakan pip
.nvcc
. Jika belum tersedia di mesin Anda, silakan instal toolkit CUDA dengan versi yang cocok dengan versi PyTorch CUDA Anda.Failed to build the SAM 2 CUDA extension
selama instalasi, Anda dapat mengabaikannya dan tetap menggunakan SAM 2 (beberapa fungsi pasca-pemrosesan mungkin terbatas, tetapi dalam banyak kasus hal itu tidak memengaruhi hasil). Silakan lihat INSTALL.md
untuk FAQ tentang potensi masalah dan solusi.
Pertama, kita perlu mengunduh model checkpoint. Semua pos pemeriksaan model dapat diunduh dengan menjalankan:
cd checkpoints &&
./download_ckpts.sh &&
cd ..
atau secara individu dari:
(perhatikan bahwa ini adalah pos pemeriksaan yang ditingkatkan yang ditandai sebagai SAM 2.1; lihat Deskripsi Model untuk detailnya.)
Kemudian SAM 2 dapat digunakan pada beberapa baris sebagai berikut untuk prediksi gambar dan video.
SAM 2 memiliki semua kemampuan SAM pada gambar statis, dan kami menyediakan API prediksi gambar yang sangat mirip dengan SAM untuk kasus penggunaan gambar. Kelas SAM2ImagePredictor
memiliki antarmuka yang mudah untuk meminta gambar.
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 > )
Silakan lihat contoh di image_predictor_example.ipynb (juga di Colab di sini) untuk kasus penggunaan gambar statis.
SAM 2 juga mendukung pembuatan topeng otomatis pada gambar seperti SAM. Silakan lihat automatic_mask_generator_example.ipynb (juga di Colab di sini) untuk pembuatan mask otomatis dalam gambar.
Untuk segmentasi dan pelacakan yang dapat dilakukan dalam video, kami menyediakan prediktor video dengan API misalnya untuk menambahkan perintah dan menyebarkan masklet di seluruh video. SAM 2 mendukung inferensi video pada beberapa objek dan menggunakan status inferensi untuk melacak interaksi di setiap video.
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 ):
...
Silakan lihat contoh di video_predictor_example.ipynb (juga di Colab di sini) untuk mengetahui detail tentang cara menambahkan perintah klik atau kotak, melakukan penyempurnaan, dan melacak beberapa objek dalam video.
Alternatifnya, model juga dapat dimuat dari Hugging Face (memerlukan pip install huggingface_hub
).
Untuk prediksi gambar:
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 > )
Untuk prediksi video:
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 ):
...
Tabel di bawah menunjukkan peningkatan pos pemeriksaan SAM 2.1 yang dirilis pada 29 September 2024.
Model | Ukuran (M) | Kecepatan (FPS) | Tes SA-V (J&F) | MOSE val (J&F) | LVOS v2 (J&F) |
---|---|---|---|---|---|
sam2.1_hiera_tiny (konfigurasi, pos pemeriksaan) | 38.9 | 47.2 | 76.5 | 71.8 | 77.3 |
sam2.1_hiera_small (konfigurasi, pos pemeriksaan) | 46 | 43.3 (53.0 dikompilasi*) | 76.6 | 73.5 | 78.3 |
sam2.1_hiera_base_plus (konfigurasi, pos pemeriksaan) | 80.8 | 34.8 (43.8 dikompilasi*) | 78.2 | 73.7 | 78.2 |
sam2.1_hiera_large (konfigurasi, pos pemeriksaan) | 224.4 | 24.2 (30.2 dikompilasi*) | 79.5 | 74.6 | 80.6 |
Checkpoint SAM 2 sebelumnya yang dirilis pada 29 Juli 2024 dapat dilihat sebagai berikut:
Model | Ukuran (M) | Kecepatan (FPS) | Tes SA-V (J&F) | MOSE val (J&F) | LVOS v2 (J&F) |
---|---|---|---|---|---|
sam2_hiera_tiny (konfigurasi, pos pemeriksaan) | 38.9 | 47.2 | 75.0 | 70.9 | 75.3 |
sam2_hiera_kecil (konfigurasi, pos pemeriksaan) | 46 | 43.3 (53.0 dikompilasi*) | 74.9 | 71.5 | 76.4 |
sam2_hiera_base_plus (konfigurasi, pos pemeriksaan) | 80.8 | 34.8 (43.8 dikompilasi*) | 74.7 | 72.8 | 75.8 |
sam2_hiera_large (konfigurasi, pos pemeriksaan) | 224.4 | 24.2 (30.2 dikompilasi*) | 76.0 | 74.6 | 79.8 |
* Kompilasi model dengan mengatur compile_image_encoder: True
di konfigurasi.
Lihat sav_dataset/README.md untuk detailnya.
Anda dapat melatih atau menyempurnakan SAM 2 pada kumpulan data khusus berupa gambar, video, atau keduanya. Silakan periksa pelatihan README tentang cara memulai.
Kami telah merilis kode frontend + backend untuk demo web SAM 2 (versi yang dapat diterapkan secara lokal mirip dengan https://sam2.metademolab.com/demo). Silakan lihat demo web README untuk detailnya.
Pos pemeriksaan model SAM 2, kode demo SAM 2 (front-end dan back-end), dan kode pelatihan SAM 2 dilisensikan di bawah Apache 2.0, namun Inter Font dan Noto Color Emoji yang digunakan dalam kode demo SAM 2 tersedia di bawah Lisensi Font Terbuka SIL, versi 1.1.
Lihat berkontribusi dan kode etik.
Proyek SAM 2 dapat terselesaikan dengan bantuan banyak kontributor (berdasarkan abjad):
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, Daerah Claudette, Pengchuan Zhang.
Kode pihak ketiga: kami menggunakan algoritma komponen terhubung berbasis GPU yang diadaptasi dari cc_torch
(dengan lisensinya di LICENSE_cctorch
) sebagai langkah pasca-pemrosesan opsional untuk prediksi mask.
Jika Anda menggunakan dataset SAM 2 atau SA-V dalam penelitian Anda, silakan gunakan entri BibTeX berikut.
@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 }
}