ИИ в Meta, FAIR
Никхила Рави, Валентин Габер, Юань-Тин Ху, Ронханг Ху, Чайтанья Рьяли, Тенгю Ма, Хайтам Хедр, Роман Рэдле, Хлоя Роллан, Лаура Густафсон, Эрик Минтун, Юнтинг Пан, Калян Васудев Алвала, Николас Карион, Чао-Юань Ву, Росс Гиршик, Петр Доллар, Кристоф Файхтенхофер
[ Paper
] [ Project
] [ Demo
] [ Dataset
] [ Blog
] [ BibTeX
]
Segment Anything Model 2 (SAM 2) — это базовая модель для решения быстрой визуальной сегментации изображений и видео. Мы расширяем SAM на видео, рассматривая изображения как видео с одним кадром. Конструкция модели представляет собой простую архитектуру преобразователя с потоковой памятью для обработки видео в реальном времени. Мы создаем механизм обработки данных «модель в цикле», который улучшает модель и данные посредством взаимодействия с пользователем, чтобы собрать наш набор данных SA-V , крупнейший на сегодняшний день набор данных сегментации видео. SAM 2, обученный на наших данных, обеспечивает высокую производительность в широком спектре задач и визуальных областей.
30.09.2024 — Выпущен SAM 2.1 Developer Suite (новые контрольные точки, обучающий код, веб-демо).
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 на компьютер с графическим процессором, используя:
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 для статических изображений, и мы предоставляем API-интерфейсы прогнозирования изображений, которые очень похожи на 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. См. auto_mask_generator_example.ipynb (также в Colab здесь) для автоматической генерации маски в изображениях.
Для быстрой сегментации и отслеживания видео мы предоставляем предсказатель видео с API-интерфейсами, например, для добавления подсказок и распространения маскилетов по всему видео. 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 г.
Модель | Размер (М) | Скорость (кадров в секунду) | Тест SA-V (J&F) | МОСЕ вал (J&F) | ЛВОС v2 (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 г., можно найти следующим образом:
Модель | Размер (М) | Скорость (кадров в секунду) | Тест SA-V (J&F) | МОСЕ вал (J&F) | ЛВОС v2 (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 на пользовательских наборах данных изображений, видео или того и другого. Пожалуйста, ознакомьтесь с обучающим README, чтобы узнать, как начать.
Мы выпустили код внешнего и внутреннего интерфейса для веб-демоверсии SAM 2 (версия для локального развертывания, аналогичная https://sam2.metademolab.com/demo). Подробности смотрите в веб-демо README.
Контрольные точки модели SAM 2, демонстрационный код SAM 2 (внешний и внутренний) и обучающий код SAM 2 лицензируются на условиях Apache 2.0, однако смайлики Inter Font и Noto Color, используемые в демонстрационном коде SAM 2, доступны на условиях Лицензия на открытые шрифты SIL, версия 1.1.
См. вклад и кодекс поведения.
Проект SAM 2 стал возможен благодаря помощи многих участников (в алфавитном порядке):
Карен Берган, Дэниэл Боля, Алекс Бозенберг, Кай Браун, Виспи Кассод, Кристофер Шедо, Ида Ченг, Люк Далин, Шубхик Дебнат, Рене Мартинес Дёнер, Грант Гарднер, Сахир Гомес, Риши Годугу, Байшань Го, Калеб Хо, Эндрю Хуанг, Сомья Джайн, Боб Камма, Аманда Каллет, Джейк Кинни, Александр Кириллов, Шива Кодувайюр, Деванш Кукреджа, Роберт Куо, Аохан Лин, Парт Малани, Джитендра Малик, Маллика Малхотра, Мигель Мартин, Александр Миллер, Саша Миттс, Уильям Нган, Джордж Орлин, Жоэль Пино, Кейт Саенко, Родрик Шепард, Азита Шокрпур, Дэвид Суфян, Джонатан Торрес, Дженни Труонг, Сагар Вазе, Мэн Ван, Клодетт Уорд, Пэнчуань Чжан.
Сторонний код: мы используем алгоритм связанных компонентов на основе графического процессора, адаптированный из 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 }
}