الذكاء الاصطناعي في ميتا، فير
نيكيلا رافي، فالنتين جابور، يوان تينغ هو، رونغهانج هو، تشيتانيا ريالي، تينجيو ما، هيثم خضر، رومان رادل، كلوي رولاند، لورا جوستافسون، إريك مينتون، جونتنج بان، كاليان فاسوديف الوالا، نيكولاس كاريون، تشاو يوان وو، روس جيرشيك، بيوتر دولار، كريستوف فيشتنهوفر
[ Paper
] [ Project
] [ Demo
] [ Dataset
] [ Blog
] [ BibTeX
]
يُعد نموذج Segment Anything Model 2 (SAM 2) نموذجًا أساسيًا لحل التجزئة المرئية السريعة في الصور ومقاطع الفيديو. نقوم بتوسيع SAM إلى الفيديو من خلال اعتبار الصور فيديو بإطار واحد. تصميم النموذج عبارة عن بنية محولات بسيطة مع ذاكرة متدفقة لمعالجة الفيديو في الوقت الفعلي. نحن نبني محرك بيانات نموذج داخل الحلقة، والذي يعمل على تحسين النموذج والبيانات من خلال تفاعل المستخدم، لجمع مجموعة بيانات SA-V الخاصة بنا ، وهي أكبر مجموعة بيانات لتجزئة الفيديو حتى الآن. يوفر SAM 2، الذي تم تدريبه على بياناتنا، أداءً قويًا عبر مجموعة واسعة من المهام والمجالات المرئية.
30/09/2024 - تم إصدار مجموعة مطوري SAM 2.1 (نقاط فحص جديدة، كود تدريب، عرض توضيحي على الويب)
pip uninstall SAM-2
، وسحب أحدث رمز من هذا الريبو (باستخدام git pull
)، ثم إعادة تثبيت الريبو بعد التثبيت أدناه.training/README.md
حول كيفية البدء.demo/README.md
للحصول على التفاصيل. يجب تثبيت SAM 2 أولاً قبل الاستخدام. يتطلب الكود python>=3.10
وكذلك torch>=2.3.1
و torchvision>=0.18.1
. برجاء اتباع التعليمات الواردة هنا لتثبيت تبعيات PyTorch وTorchVision. يمكنك تثبيت SAM 2 على جهاز GPU باستخدام:
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .
إذا كنت تقوم بالتثبيت على Windows، فمن المستحسن بشدة استخدام نظام Windows الفرعي لنظام التشغيل Linux (WSL) مع Ubuntu.
لاستخدام توقع SAM 2 وتشغيل نماذج دفاتر الملاحظات، يلزم وجود jupyter
و matplotlib
ويمكن تثبيتهما عن طريق:
pip install -e " .[notebooks] "
ملحوظة:
pip
التالية https://pytorch.org/. إذا كان لديك إصدار PyTorch أقل من 2.3.1 في بيئتك الحالية، فسيحاول أمر التثبيت أعلاه ترقيته إلى أحدث إصدار من PyTorch باستخدام pip
.nvcc
. إذا لم يكن متوفرًا بالفعل على جهازك، فيرجى تثبيت مجموعة أدوات CUDA بإصدار يطابق إصدار PyTorch CUDA الخاص بك.Failed to build the SAM 2 CUDA extension
أثناء التثبيت، فيمكنك تجاهلها والاستمرار في استخدام SAM 2 (قد تكون بعض وظائف ما بعد المعالجة محدودة، ولكنها لا تؤثر على النتائج في معظم الحالات). الرجاء مراجعة INSTALL.md
للاطلاع على الأسئلة الشائعة حول المشكلات والحلول المحتملة.
أولاً، نحتاج إلى تنزيل نقطة تفتيش نموذجية. يمكن تنزيل كافة نقاط التفتيش النموذجية عن طريق تشغيل:
cd checkpoints &&
./download_ckpts.sh &&
cd ..
أو بشكل فردي من:
(لاحظ أن هذه هي نقاط التفتيش المحسنة المشار إليها باسم SAM 2.1؛ راجع وصف النموذج للحصول على التفاصيل.)
ومن ثم يمكن استخدام SAM 2 في بضعة أسطر كما يلي للتنبؤ بالصور والفيديو.
يتمتع SAM 2 بجميع إمكانيات SAM على الصور الثابتة، ونحن نقدم واجهات برمجة التطبيقات للتنبؤ بالصور التي تشبه SAM إلى حد كبير في حالات استخدام الصور. تتمتع فئة SAM2ImagePredictor
بواجهة سهلة للمطالبة بالصور.
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 > )
يرجى الرجوع إلى الأمثلة الموجودة في image_predictor_example.ipynb (أيضًا في Colab هنا) للتعرف على حالات استخدام الصور الثابتة.
يدعم SAM 2 أيضًا إنشاء القناع التلقائي على الصور تمامًا مثل SAM. يرجى الاطلاع على Automatic_mask_generator_example.ipynb (أيضًا في Colab هنا) لإنشاء القناع تلقائيًا في الصور.
لتجزئة مقاطع الفيديو وتتبعها بشكل سريع، نوفر أداة تنبؤ بالفيديو مع واجهات برمجة التطبيقات على سبيل المثال لإضافة المطالبات ونشر الأقنعة عبر الفيديو. يدعم SAM 2 استنتاج الفيديو على كائنات متعددة ويستخدم حالة الاستدلال لتتبع التفاعلات في كل فيديو.
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 ): ...
يرجى الرجوع إلى الأمثلة في video_predictor_example.ipynb (أيضًا في Colab هنا) للحصول على تفاصيل حول كيفية إضافة مطالبات النقر أو المربع وإجراء التحسينات وتتبع كائنات متعددة في مقاطع الفيديو.
وبدلاً من ذلك، يمكن أيضًا تحميل النماذج من Hugging Face (يتطلب pip install huggingface_hub
).
للتنبؤ بالصور:
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 > )
للتنبؤ بالفيديو:
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 ): ...
يوضح الجدول أدناه نقاط فحص SAM 2.1 المحسنة التي تم إصدارها في 29 سبتمبر 2024.
نموذج | الحجم (م) | السرعة (FPS) | اختبار SA-V (J&F) | موس فال (J&F) | LVOS الإصدار 2 (J&F) |
---|---|---|---|---|---|
sam2.1_hiera_tiny (التكوين، نقطة التفتيش) | 38.9 | 47.2 | 76.5 | 71.8 | 77.3 |
sam2.1_hiera_small (التكوين، نقطة التفتيش) | 46 | 43.3 (53.0 مجمعة*) | 76.6 | 73.5 | 78.3 |
sam2.1_hiera_base_plus (التكوين، نقطة التفتيش) | 80.8 | 34.8 (43.8 مجمعة*) | 78.2 | 73.7 | 78.2 |
sam2.1_hiera_large (التكوين، نقطة التفتيش) | 224.4 | 24.2 (30.2 مجمعة*) | 79.5 | 74.6 | 80.6 |
يمكن العثور على نقاط تفتيش SAM 2 السابقة التي تم إصدارها في 29 يوليو 2024 على النحو التالي:
نموذج | الحجم (م) | السرعة (FPS) | اختبار SA-V (J&F) | موس فال (J&F) | LVOS الإصدار 2 (J&F) |
---|---|---|---|---|---|
sam2_hiera_tiny (التكوين، نقطة التفتيش) | 38.9 | 47.2 | 75.0 | 70.9 | 75.3 |
sam2_hiera_small (التكوين، نقطة التفتيش) | 46 | 43.3 (53.0 مجمعة*) | 74.9 | 71.5 | 76.4 |
sam2_hiera_base_plus (التكوين، نقطة التفتيش) | 80.8 | 34.8 (43.8 مجمعة*) | 74.7 | 72.8 | 75.8 |
sam2_hiera_large (التكوين، نقطة التفتيش) | 224.4 | 24.2 (30.2 مجمعة*) | 76.0 | 74.6 | 79.8 |
* قم بتجميع النموذج عن طريق إعداد compile_image_encoder: True
في التكوين.
راجع sav_dataset/README.md للحصول على التفاصيل.
يمكنك تدريب SAM 2 أو تحسينه على مجموعات بيانات مخصصة من الصور أو مقاطع الفيديو أو كليهما. يرجى التحقق من الملف التمهيدي للتدريب حول كيفية البدء.
لقد أصدرنا كود الواجهة الأمامية + الخلفية للعرض التوضيحي للويب SAM 2 (إصدار قابل للنشر محليًا يشبه https://sam2.metademolab.com/demo). يرجى الاطلاع على التمهيد التجريبي على الويب للحصول على التفاصيل.
تم ترخيص نقاط فحص نموذج SAM 2، والرمز التجريبي SAM 2 (الواجهة الأمامية والخلفية)، ورمز تدريب SAM 2 بموجب Apache 2.0، ومع ذلك، يتم توفير Inter Font وNoto Color Emoji المستخدم في الرمز التجريبي SAM 2 تحت ترخيص SIL Open Font، الإصدار 1.1.
انظر المساهمة ومدونة قواعد السلوك.
أصبح مشروع SAM 2 ممكنًا بمساعدة العديد من المساهمين (أبجديًا):
كارين بيرغان، دانييل بوليا، أليكس بوسنبرغ، كاي براون، فيسبي كاسود، كريستوفر شيدو، إيدا تشينج، لوك داهلين، شوبيك دبناث، رينيه مارتينيز دوهنر، جرانت جاردنر، ساهر جوميز، ريشي جودوجو، بايشان جو، كاليب هو، أندرو هوانج، سوميا. جاين، بوب كاما، أماندا كاليت، جيك كيني، ألكسندر كيريلوف، شيفا كودوفايور، ديفانش كوكريجا، روبرت كو، أوهان لين، بارث مالاني، جيتندرا مالك، ماليكا مالهوترا، ميغيل مارتن، ألكسندر ميلر، ساشا ميتس، ويليام نجان، جورج أورلين، جويل بينو، كيت ساينكو، رودريك شيبرد، أزيتا شكربور، ديفيد سفيان، جوناثان توريس، جيني ترونج، ساجار فاز، منغ وانغ، كلوديت وارد، بينجتشوان تشانغ.
رمز الطرف الثالث: نستخدم خوارزمية مكون متصل قائمة على وحدة معالجة الرسومات (GPU) مقتبسة من cc_torch
(مع ترخيصها في LICENSE_cctorch
) كخطوة اختيارية بعد المعالجة لتنبؤات القناع.
إذا كنت تستخدم SAM 2 أو مجموعة بيانات SA-V في بحثك، فيرجى استخدام إدخال BibTeX التالي.
@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 }
}