SAM 2.1
Мы только что добавили поддержку более точной модели SAM2.1. Пожалуйста, попробуйте!
SAM 2: Сегмент Разное Модель 2
SAM 2, преемник Segment Anything Model (SAM) от Meta, - это передовой инструмент, предназначенный для комплексной сегментации объектов на изображениях и видео. Он отлично справляется со сложными визуальными данными благодаря унифицированной архитектуре модели с возможностью подсказок, которая поддерживает обработку в реальном времени и обобщение с нулевого снимка.
Основные характеристики
Смотреть: Как выполнить вывод с помощью Meta's SAM2 , используя Ultralytics | Пошаговое руководство 🎉
Архитектура унифицированной модели
SAM 2 объединяет возможности сегментации изображений и видео в одной модели. Такая унификация упрощает развертывание и обеспечивает согласованную производительность для различных типов медиа. В модели используется гибкий интерфейс на основе подсказок, позволяющий пользователям указывать интересующие их объекты с помощью различных типов подсказок, таких как точки, ограничительные рамки или маски.
Производительность в реальном времени
Модель достигает скорости вывода в реальном времени, обрабатывая около 44 кадров в секунду. Это делает SAM 2 подходящим для приложений, требующих немедленной обратной связи, таких как редактирование видео и дополненная реальность.
Обобщение нулевого выстрела
SAM 2 может сегментировать объекты, с которыми он никогда раньше не сталкивался, демонстрируя сильное обобщение с нулевого снимка. Это особенно полезно в разнообразных или развивающихся визуальных областях, где заранее определенные категории могут не охватывать все возможные объекты.
Интерактивная доработка
Пользователи могут итеративно уточнять результаты сегментации, вводя дополнительные подсказки, что позволяет точно контролировать результат. Такая интерактивность необходима для тонкой настройки результатов в таких приложениях, как аннотирование видео или медицинская визуализация.
Усовершенствованная работа с визуальными проблемами
SAM 2 включает в себя механизмы для решения общих проблем сегментации видео, таких как окклюзия и повторное появление объектов. Он использует сложный механизм памяти для отслеживания объектов в разных кадрах, обеспечивая непрерывность даже при временном затемнении объектов или их выходе и повторном появлении в сцене.
Для более глубокого понимания архитектуры и возможностей SAM 2 изучите исследовательский документSAM 2.
Производительность и технические характеристики
SAM 2 устанавливает новую планку в этой области, превосходя предыдущие модели по различным показателям:
Метрика | SAM 2 | Предыдущая СОТА |
---|---|---|
Сегментация интерактивного видео | Лучшее | - |
Требуется взаимодействие с людьми | В 3 раза меньше | Базовый уровень |
Точность сегментации изображений | Улучшенный | SAM |
Скорость вывода | В 6 раз быстрее | SAM |
Архитектура модели
Основные компоненты
- Кодировщик изображений и видео: Использует архитектуру на основе трансформаторов для извлечения высокоуровневых характеристик из изображений и видеокадров. Этот компонент отвечает за понимание визуального содержимого на каждом временном интервале.
- Кодировщик подсказок: Обрабатывает предоставленные пользователем подсказки (точки, рамки, маски) для управления задачей сегментации. Это позволяет SAM 2 адаптироваться к пользовательскому вводу и нацеливаться на конкретные объекты в сцене.
- Механизм памяти: включает в себя кодировщик памяти, банк памяти и модуль внимания к памяти. Эти компоненты совместно хранят и используют информацию из прошлых кадров, что позволяет модели поддерживать последовательное отслеживание объекта во времени.
- Декодер масок: Генерирует окончательные маски сегментации на основе закодированных характеристик изображения и подсказок. В видео он также использует контекст памяти для обеспечения точного отслеживания по кадрам.
Механизм памяти и работа с окклюзиями
Механизм памяти позволяет SAM 2 справляться с временными зависимостями и окклюзиями в видеоданных. Когда объекты перемещаются и взаимодействуют, SAM 2 записывает их характеристики в банк памяти. Когда объект оказывается заслоненным, модель может опираться на эту память, чтобы предсказать его положение и внешний вид при повторном появлении. Окклюзионная головка специально обрабатывает сценарии, в которых объекты не видны, предсказывая вероятность того, что объект будет закрыт.
Многозадачное разрешение неоднозначности
В ситуациях с неоднозначностью (например, перекрывающиеся объекты) SAM 2 может генерировать несколько прогнозов маски. Эта функция очень важна для точного отображения сложных сцен, где одна маска может недостаточно полно описывать нюансы сцены.
Набор данных SA-V
Набор данных SA-V, созданный для обучения SAM 2, является одним из самых больших и разнообразных наборов данных для сегментации видео. Он включает в себя:
- 51 000+ видеороликов: Снятые в 47 странах, они представляют широкий спектр реальных сценариев.
- 600 000+ аннотаций масок: Подробные пространственно-временные аннотации к маскам, называемые "масклетами", охватывающие целые объекты и их части.
- Масштабность набора данных: В нем в 4,5 раза больше видео и в 53 раза больше аннотаций, чем в предыдущих крупнейших наборах данных, что обеспечивает беспрецедентное разнообразие и сложность.
Бенчмарки
Сегментация видеообъектов
SAM 2 продемонстрировал превосходную производительность в основных бенчмарках сегментации видео:
Набор данных | J&F | J | F |
---|---|---|---|
ДЭВИС 2017 | 82.5 | 79.8 | 85.2 |
YouTube-VOS | 81.2 | 78.9 | 83.5 |
Интерактивное сегментирование
В задачах интерактивной сегментации SAM 2 демонстрирует значительную эффективность и точность:
Набор данных | NoC@90 | AUC |
---|---|---|
DAVIS Interactive | 1.54 | 0.872 |
Установка
Чтобы установить SAM 2, выполните следующую команду. Все модели SAM 2 автоматически загрузятся при первом использовании.
Как использовать SAM 2: универсальность в сегментации изображений и видео
В следующей таблице подробно описаны доступные модели SAM 2, их предварительно обученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как "Вывод", "Проверка", "Обучение" и "Экспорт".
Тип модели | Предварительно обученные веса | Поддерживаемые задачи | Заключение | Валидация | Обучение | Экспорт |
---|---|---|---|---|---|---|
SAM 2 крошечных | sam2_t.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2 маленьких | sam2_s.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2 база | sam2_b.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2 больших | sam2_l.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 крошечный | sam2.1_t.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 маленький | sam2.1_s.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 база | sam2.1_b.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 большой | sam2.1_l.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
SAM 2 Примеры прогнозирования
SAM 2 может использоваться в широком спектре задач, включая редактирование видео в реальном времени, медицинскую визуализацию и автономные системы. Его способность сегментировать как статические, так и динамические визуальные данные делает его универсальным инструментом для исследователей и разработчиков.
Сегмент с подсказками
Сегмент с подсказками
Используйте подсказки для выделения определенных объектов на изображениях или видео.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Run inference with single point
results = model(points=[900, 370], labels=[1])
# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Сегмент Все
Сегмент Все
Сегментируйте весь контент изображения или видео без особых подсказок.
Сегментируйте видео и отслеживайте объекты
Сегментное видео
Сегментируйте весь видеоконтент с помощью специальных подсказок и объектов отслеживания.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=[1])
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
- Этот пример демонстрирует, как SAM 2 можно использовать для сегментирования всего содержимого изображения или видео, если не предоставлять никаких подсказок (bboxes/points/masks).
Сравнение SAM 2 с YOLO
Здесь мы сравниваем модели SAM 2 от Meta, включая самый маленький вариант SAM2, с самой маленькой моделью сегментации от Ultralytics - YOLO11n-seg:
Модель | Размер (МБ) |
Параметры (M) |
Скорость (CPU) (мс/им) |
---|---|---|---|
Мета SAM-b | 375 | 93.7 | 49401 |
Мета SAM2-b | 162 | 80.8 | 31901 |
Мета SAM2-t | 78.1 | 38.9 | 25997 |
MobileSAM | 40.7 | 10.1 | 25381 |
FastSAM смагистралью YOLOv8 | 23.7 | 11.8 | 55.9 |
Ultralytics YOLOv8n-seg | 6,7 (11,7x меньше) | 3,4 (на 11,4 меньше) | 24,5 (в 1061 раз быстрее) |
Ultralytics YOLO11n-seg | 5,9 (13,2x меньше) | 2,9 (13,4x меньше) | 30.1 (864x быстрее) |
Это сравнение демонстрирует существенные различия в размерах и скорости работы моделей между вариантами SAM и моделями сегментации YOLO . Хотя SAM предоставляет уникальные возможности автоматической сегментации, модели YOLO , в частности YOLOv8n и YOLO11n-seg, значительно меньше, быстрее и эффективнее с вычислительной точки зрения.
Тесты проводились на Apple M4 Pro 2025 года с 24 ГБ оперативной памяти с использованием torch==2.6.0
и ultralytics==8.3.90
. Чтобы воспроизвести этот тест:
Пример
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
model = SAM(file)
model.info()
model(ASSETS)
# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Profile YOLO models
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
model = YOLO(file_name)
model.info()
model(ASSETS)
Автоаннотация: Эффективное создание наборов данных
Автоаннотирование - мощная функция SAM 2, позволяющая пользователям быстро и точно генерировать наборы данных сегментации, используя предварительно обученные модели. Эта возможность особенно полезна для создания больших высококачественных наборов данных без больших ручных усилий.
Как сделать автоматическую аннотацию с помощью SAM 2
Смотреть: Автоматическая аннотация с помощью модели Meta's Segment Anything 2 с использованием Ultralytics | Маркировка данных
Чтобы выполнить автоаннотирование набора данных с помощью SAM 2, следуйте приведенному ниже примеру:
Пример автоматической аннотации
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
data |
str |
требуется | Путь к каталогу, содержащему целевые изображения для аннотации или сегментации. |
det_model |
str |
'yolo11x.pt' |
YOLO траектория модели обнаружения для первоначального обнаружения объекта. |
sam_model |
str |
'sam_b.pt' |
Путь модели SAM для сегментации (поддерживает модели SAM, SAM2 и mobile_sam). |
device |
str |
'' |
Вычислительное устройство (например, 'cuda:0', 'cpu' или '' для автоматического определения устройства). |
conf |
float |
0.25 |
YOLO порог достоверности обнаружения для фильтрации слабых обнаружений. |
iou |
float |
0.45 |
Порог IoU для не максимального подавления для фильтрации перекрывающихся ящиков. |
imgsz |
int |
640 |
Входной размер для изменения размера изображений (должен быть кратен 32). |
max_det |
int |
300 |
Максимальное количество обнаружений на одно изображение для экономии памяти. |
classes |
list[int] |
None |
Список индексов классов для обнаружения (например, [0, 1] для человека и велосипеда). |
output_dir |
str |
None |
Каталог сохранения аннотаций (по умолчанию './labels' относительно пути к данным). |
Эта функция способствует быстрому созданию высококачественных наборов данных сегментации, идеально подходящих для исследователей и разработчиков, стремящихся ускорить реализацию своих проектов.
Ограничения
Несмотря на все свои достоинства, SAM 2 имеет определенные ограничения:
- Стабильность отслеживания: SAM 2 может потерять слежение за объектами во время длительных последовательностей или значительных изменений точки зрения.
- Путаница объектов: Модель может иногда путать похожие объекты, особенно в многолюдных сценах.
- Эффективность при работе с несколькими объектами: Эффективность сегментации снижается при одновременной обработке нескольких объектов из-за отсутствия межобъектной связи.
- Точность деталей: Может упустить мелкие детали, особенно на быстро движущихся объектах. Дополнительные подсказки могут частично решить эту проблему, но временная плавность не гарантируется.
Цитаты и благодарности
Если сайт SAM 2 является важной частью вашего исследования или разработки, пожалуйста, процитируйте его, используя следующую ссылку:
@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},
year={2024}
}
Мы выражаем благодарность компании Meta AI за ее вклад в сообщество ИИ благодаря этой новаторской модели и набору данных.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Что такое SAM 2 и чем она лучше оригинальной модели Segment Anything Model (SAM)?
SAM 2, преемник Segment Anything Model (SAM) от Meta, - это передовой инструмент, предназначенный для комплексной сегментации объектов на изображениях и видео. Он отлично справляется со сложными визуальными данными благодаря унифицированной архитектуре модели с возможностью подсказок, которая поддерживает обработку в реальном времени и обобщение с нулевого снимка. SAM 2 предлагает несколько улучшений по сравнению с оригинальной версией SAM, включая:
- Архитектура унифицированной модели: Объединяет возможности сегментации изображений и видео в единую модель.
- Производительность в режиме реального времени: Обрабатывает примерно 44 кадра в секунду, что делает его подходящим для приложений, требующих немедленной обратной связи.
- Обобщение с нулевого снимка: Сегментирует объекты, с которыми ранее не сталкивался, что полезно в различных визуальных областях.
- Интерактивное уточнение: Позволяет пользователям итеративно уточнять результаты сегментации, предоставляя дополнительные подсказки.
- Усовершенствованная обработка визуальных проблем: Справляется с такими распространенными проблемами сегментации видео, как окклюзия и повторное появление объектов.
Более подробную информацию об архитектуре и возможностях SAM 2 можно найти в исследовательском документеSAM 2.
Как использовать SAM 2 для сегментации видео в реальном времени?
SAM 2 можно использовать для сегментации видео в реальном времени, используя его подсказываемый интерфейс и возможности вывода в реальном времени. Вот базовый пример:
Сегмент с подсказками
Используйте подсказки для выделения определенных объектов на изображениях или видео.
from ultralytics import SAM
# Load a model
model = SAM("sam2_b.pt")
# Display model information (optional)
model.info()
# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])
Более подробная информация об использовании приведена в разделе "Как использовать SAM 2".
Какие наборы данных используются для обучения SAM 2 и как они повышают его производительность?
SAM 2 обучен на наборе данных SA-V, одном из самых больших и разнообразных наборов данных для сегментации видео. Набор данных SA-V включает:
- 51 000+ видеороликов: Снятые в 47 странах, они представляют широкий спектр реальных сценариев.
- 600 000+ аннотаций масок: Подробные пространственно-временные аннотации к маскам, называемые "масклетами", охватывающие целые объекты и их части.
- Масштабность набора данных: В 4,5 раза больше видео и в 53 раза больше аннотаций, чем в предыдущих крупнейших наборах данных, что обеспечивает беспрецедентное разнообразие и сложность.
Этот обширный набор данных позволяет SAM 2 достичь превосходной производительности в основных бенчмарках сегментации видео и расширяет возможности обобщения с нулевого снимка. Дополнительную информацию см. в разделе " Набор данных SA-V ".
Как SAM 2 справляется с окклюзиями и повторным появлением объектов при сегментации видео?
SAM 2 включает в себя сложный механизм памяти для управления временными зависимостями и окклюзиями в видеоданных. Механизм памяти состоит из:
- Кодировщик памяти и банк памяти: Хранит функции из прошлых кадров.
- Модуль внимания к памяти: Использует сохраненную информацию для поддержания последовательного отслеживания объекта в течение времени.
- Occlusion Head: специально для сценариев, в которых объекты не видны, прогнозируя вероятность того, что объект будет закрыт.
Этот механизм обеспечивает непрерывность, даже когда объекты временно заслоняются или выходят и снова входят в сцену. Более подробную информацию см. в разделе "Механизм памяти и обработка окклюзии ".
Чем SAM 2 отличается от других моделей сегментации, таких как YOLO11?
Модели SAM 2, такие как SAM2 и SAM2 компании Meta, предлагают мощные возможности сегментации с нулевого снимка, но они значительно больше и медленнее моделей YOLO11 . Например, YOLO11n-seg примерно в 13 раз меньше и более чем в 860 раз быстрее, чем SAM2. В то время как SAM 2 отлично подходит для универсальных сценариев сегментации, основанных на подсказках и нулевых снимках, YOLO11 оптимизирован для скорости, эффективности и приложений реального времени, что делает его более подходящим для развертывания в средах с ограниченными ресурсами.