SAM 2: Segment Anything Model 2
SAM 2, преемник модели Meta Segment Anything Model (SAM), — это передовой инструмент для всесторонней сегментации объектов на изображениях и видео. Он эффективно обрабатывает сложные визуальные данные благодаря унифицированной архитектуре с поддержкой подсказок, что обеспечивает обработку в реальном времени и zero-shot обобщение.
Модели SAM 2.1 обеспечивают работу функции умной разметки на Ultralytics Platform, позволяя выполнять сегментацию по клику для быстрой разметки датасетов. Подробности см. в руководстве по разметке.

Основные характеристики
Watch: How to Run Inference with Meta's SAM2 using Ultralytics | Step-by-Step Guide 🎉
Унифицированная архитектура модели
SAM 2 объединяет возможности сегментации изображений и видео в одной модели. Эта унификация упрощает развертывание и обеспечивает стабильную производительность для различных типов медиа. Модель использует гибкий интерфейс на основе подсказок, позволяя тебе указывать интересующие объекты с помощью различных типов промптов: точек, ограничивающих рамок (bbox) или масок.
Производительность в реальном времени
Модель достигает скорости инференса в реальном времени, обрабатывая примерно 44 кадра в секунду. Это делает SAM 2 подходящим решением для задач, требующих мгновенной обратной связи, таких как видеомонтаж и дополненная реальность.
Zero-Shot обобщение
SAM 2 может сегментировать объекты, которые никогда раньше не встречал, демонстрируя сильные способности к zero-shot обобщению. Это особенно полезно в разнообразных или меняющихся визуальных средах, где предопределенные категории могут не охватывать все возможные объекты.
Интерактивное уточнение
Ты можешь итеративно уточнять результаты сегментации, предоставляя дополнительные подсказки, что дает точный контроль над результатом. Эта интерактивность важна для доводки результатов в таких задачах, как видеоразметка или медицинская визуализация.
Продвинутая обработка визуальных сложностей
SAM 2 включает механизмы для управления типичными проблемами сегментации видео, такими как окклюзия (перекрытие) объектов и их повторное появление. Модель использует сложный механизм памяти для отслеживания объектов между кадрами, обеспечивая непрерывность, даже если объекты временно скрыты или покидают сцену и возвращаются в нее.
Чтобы лучше понять архитектуру и возможности SAM 2, изучи научную статью о SAM 2.
Производительность и технические детали
SAM 2 устанавливает новый стандарт в этой области, превосходя предыдущие модели по ряду метрик:
| Метрика | SAM 2 | Предыдущее SOTA |
|---|---|---|
| Интерактивная сегментация видео | Лучший | - |
| Требуемые действия человека | в 3 раза меньше | Базовый уровень |
| Точность сегментации изображений | Улучшено | SAM |
| Скорость инференса | в 6 раз быстрее | SAM |
Архитектура модели
Основные компоненты
- Кодировщик изображений и видео: использует архитектуру на базе Transformer для извлечения высокоуровневых признаков как из изображений, так и из кадров видео. Этот компонент отвечает за понимание визуального контента на каждом временном шаге.
- Кодировщик подсказок (Prompt Encoder): обрабатывает предоставленные тобой подсказки (точки, рамки, маски) для управления процессом сегментации. Это позволяет SAM 2 адаптироваться к твоим данным и фокусироваться на конкретных объектах в кадре.
- Механизм памяти: включает кодировщик памяти, банк памяти и модуль внимания к памяти. Эти компоненты совместно хранят и используют информацию из прошлых кадров, позволяя модели поддерживать последовательное отслеживание объектов во времени.
- Декодировщик масок (Mask Decoder): генерирует итоговые маски сегментации на основе закодированных признаков изображения и подсказок. При работе с видео он также использует контекст памяти для обеспечения точного отслеживания между кадрами.

Механизм памяти и обработка окклюзий
Механизм памяти позволяет SAM 2 обрабатывать временные зависимости и окклюзии в видеоданных. Когда объекты движутся и взаимодействуют, SAM 2 записывает их признаки в банк памяти. Когда объект перекрывается, модель может полагаться на эту память, чтобы предсказать его положение и вид при повторном появлении. Голова окклюзии специально обрабатывает сценарии, где объекты не видны, предсказывая вероятность того, что объект скрыт.
Разрешение неоднозначности при использовании нескольких масок
В ситуациях с неоднозначностью (например, при перекрытии объектов) SAM 2 может генерировать несколько вариантов масок. Эта функция критически важна для точного представления сложных сцен, где одна маска может недостаточно полно описывать все нюансы.
Датасет SA-V
Датасет SA-V, разработанный для обучения SAM 2, является одним из крупнейших и наиболее разнообразных датасетов для сегментации видео. Он включает в себя:
- 51 000+ видео: сняты в 47 странах, обеспечивая широкий спектр реальных сценариев.
- 600 000+ аннотаций масок: детальные пространственно-временные аннотации масок, называемые "masklets", охватывающие целые объекты и их части.
- Масштаб датасета: содержит в 4,5 раза больше видео и в 53 раза больше аннотаций, чем крупнейшие предыдущие датасеты, обеспечивая беспрецедентное разнообразие и сложность.
Бенчмарки
Сегментация объектов на видео
SAM 2 продемонстрировал превосходную производительность на основных бенчмарках по сегментации видео:
| Датасет | J&F | J | F |
|---|---|---|---|
| DAVIS 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 будут автоматически загружены при первом использовании.
pip install ultralyticsКак использовать SAM 2: универсальность в сегментации изображений и видео
В следующей таблице представлены доступные модели SAM 2, их предобученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как Inference, Validation, Training и Export.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Логический вывод | Валидация | Обучение | Экспорт (Export) |
|---|---|---|---|---|---|---|
| SAM 2 tiny | sam2_t.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2 small | sam2_s.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2 base | sam2_b.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2 large | sam2_l.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 tiny | sam2.1_t.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 small | sam2.1_s.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 base | sam2.1_b.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 large | 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 import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference
model("path/to/video.mp4")Сегментировать видео и отслеживать объекты
Сегментируй весь контент видео с использованием специальных подсказок и отслеживай объекты.
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 можно использовать для сегментации всего содержимого изображения или видео, если подсказки (bbox/точки/маски) не предоставлены.
Динамическая интерактивная сегментация и отслеживание
SAM2DynamicInteractivePredictor — это передовое расширение SAM2, не требующее обучения, которое позволяет динамически взаимодействовать с несколькими кадрами и обеспечивает возможности непрерывного обучения. Этот предиктер поддерживает обновление промптов в реальном времени и управление памятью для повышения производительности отслеживания в последовательности изображений. По сравнению с оригинальным SAM2, SAM2DynamicInteractivePredictor перестраивает процесс вывода, чтобы максимально эффективно использовать предобученные модели SAM2 без необходимости в дополнительном обучении.

Основные характеристики
Он предлагает три существенных улучшения:
- Динамическое взаимодействие: добавляй новые промпты для объединения/отслеживания новых экземпляров в последующих кадрах в любой момент обработки видео
- Непрерывное обучение: добавляй новые промпты для существующих экземпляров, чтобы улучшать работу модели с течением времени
- Независимая поддержка нескольких изображений: обрабатывай несколько независимых изображений (не обязательно из видеопоследовательности) с общим использованием памяти и отслеживанием объектов между изображениями
Основные возможности
- Гибкость промптов: принимает BBox, точки и маски в качестве промптов
- Управление банком памяти: поддерживает динамический банк памяти для хранения состояний объектов между кадрами
- Многообъектное отслеживание: поддерживает отслеживание нескольких объектов одновременно с индивидуальными ID объектов
- Обновления в реальном времени: позволяет добавлять новые промпты во время вывода без необходимости повторной обработки предыдущих кадров
- Независимая обработка изображений: обрабатывай отдельные изображения с общим контекстом памяти для согласованности объектов между изображениями
from ultralytics.models.sam import SAM2DynamicInteractivePredictor
# Create SAM2DynamicInteractivePredictor
overrides = dict(conf=0.01, task="segment", mode="predict", imgsz=1024, model="sam2_t.pt", save=False)
predictor = SAM2DynamicInteractivePredictor(overrides=overrides, max_obj_num=10)
# Define a category by box prompt
predictor(source="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[0], update_memory=True)
# Detect this particular object in a new image
results = predictor(source="image2.jpg")
# Add new category with a new object ID
results = predictor(
source="image4.jpg",
bboxes=[[300, 300, 400, 400]], # New object
obj_ids=[1], # New object ID
update_memory=True, # Add to memory
)
# Perform inference
results = predictor(source="image5.jpg")
# Add refinement prompts to the same category to boost performance
# This helps when object appearance changes significantly
results = predictor(
source="image6.jpg",
points=[[150, 150]], # Refinement point
labels=[1], # Positive point
obj_ids=[1], # Same object ID
update_memory=True, # Update memory with new information
)
# Perform inference on new image
results = predictor(source="image7.jpg")SAM2DynamicInteractivePredictor разработан для работы с моделями SAM2 и поддерживает добавление/уточнение категорий с помощью всех промптов типа box/point/mask, которые изначально поддерживает SAM2. Это особенно полезно в сценариях, где объекты появляются или меняются со временем, например, при аннотировании видео или задачах интерактивного редактирования.
Аргументы
| Имя | Значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
max_obj_num | 3 | int | Предустановленное максимальное количество категорий |
update_memory | False | bool | Обновлять ли память при появлении новых промптов |
obj_ids | None | List[int] | Список ID объектов, соответствующих промптам |
Варианты использования
SAM2DynamicInteractivePredictor идеально подходит для:
- Рабочих процессов аннотирования видео, где новые объекты появляются в ходе последовательности
- Интерактивного редактирования видео, требующего добавления и уточнения объектов в реальном времени
- Приложений для наблюдения, требующих динамического отслеживания объектов
- Медицинской визуализации для отслеживания анатомических структур во временных рядах
- Автономных систем, требующих адаптивного обнаружения и отслеживания объектов
- Наборов данных из нескольких изображений для согласованной сегментации объектов на независимых изображениях
- Анализа коллекций изображений, где объекты нужно отслеживать на разных сценах
- Кросс-доменной сегментации, использующей память из разных контекстов изображений
- Полуавтоматического аннотирования для эффективного создания датасетов с минимальным ручным вмешательством
Сравнение SAM с YOLO
Здесь мы сравниваем модели SAM 2 от Meta, включая самый маленький вариант SAM2-t, с моделями сегментации Ultralytics, включая YOLO26n-seg:
| Модель | Размер (МБ) | Параметры (М) | Скорость (CPU) (мс/из) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s с бэкбоном YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (в 11.0 раз меньше) | 3.4 (в 11.4 раз меньше) | 24.8 (в 945 раз быстрее) |
| Ultralytics YOLO11n-seg | 6.2 (в 12.6 раз меньше) | 2.9 (в 13.4 раз меньше) | 24.3 (в 964 раз быстрее) |
| Ultralytics YOLO26n-seg | 6.7 (в 11.7 раз меньше) | 2.7 (в 14.4 раз меньше) | 25.2 (в 930 раз быстрее) |
Это сравнение демонстрирует существенные различия в размерах моделей и скорости между вариантами SAM и моделями сегментации YOLO. В то время как SAM предоставляет уникальные возможности автоматической сегментации, модели YOLO, особенно YOLOv8n-seg, YOLO11n-seg и YOLO26n-seg, значительно меньше, быстрее и вычислительно эффективнее.
Скорость SAM измерялась с помощью PyTorch, скорость YOLO — с помощью ONNX Runtime. Тесты проводились на Apple M4 Air 2025 года с 16 ГБ оперативной памяти с использованием torch==2.10.0, ultralytics==8.4.31 и onnxruntime==1.24.4. Чтобы воспроизвести этот тест:
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 (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
model = YOLO(file_name)
model.info()
onnx_path = model.export(format="onnx", dynamic=True)
model = YOLO(onnx_path)
model(ASSETS)Автоматическое аннотирование: эффективное создание наборов данных
Автоматическое аннотирование — это мощная функция SAM 2, позволяющая пользователям быстро и точно генерировать датасеты сегментации с помощью предобученных моделей. Эта возможность особенно полезна для создания больших и качественных наборов данных без значительных ручных усилий.
Как выполнять автоаннотирование с помощью SAM 2
Watch: Auto Annotation with Meta's Segment Anything 2 Model using Ultralytics | Data Labeling
Чтобы автоматически аннотировать свой датасет с помощью SAM 2, следуй этому примеру:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam2_b.pt")| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
data | str | обязательно | Путь к директории, содержащей целевые изображения для аннотирования или сегментации. |
det_model | str | 'yolo26x.pt' | Путь к модели обнаружения YOLO для первоначального обнаружения объектов. |
sam_model | str | 'sam_b.pt' | Путь к модели SAM для сегментации (поддерживает варианты SAM, SAM2 и модели MobileSAM). |
device | str | '' | Вычислительное устройство (например, 'cuda:0', 'cpu' или '' для автоматического обнаружения устройства). |
conf | float | 0.25 | Порог достоверности обнаружения YOLO для фильтрации слабых детекций. |
iou | float | 0.45 | Порог IoU для NMS (Non-Maximum Suppression), чтобы отфильтровать перекрывающиеся рамки. |
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 за их вклад в сообщество AI благодаря этой революционной модели и набору данных.
Часто задаваемые вопросы (FAQ)
Что такое SAM 2 и чем он лучше оригинальной Segment Anything Model (SAM)?
SAM 2, преемник Segment Anything Model (SAM) от Meta, — это передовой инструмент, предназначенный для комплексной сегментации объектов как на изображениях, так и на видео. Он превосходно справляется с обработкой сложных визуальных данных благодаря единой архитектуре модели, поддерживающей промпты, работу в реальном времени и zero-shot обобщение. SAM 2 предлагает несколько улучшений по сравнению с оригинальным SAM, в том числе:
- Единая архитектура модели: объединяет возможности сегментации изображений и видео в одной модели.
- Производительность в реальном времени: обрабатывает около 44 кадров в секунду, что делает его пригодным для приложений, требующих мгновенной обратной связи.
- Zero-shot обобщение: сегментирует объекты, которые никогда раньше не встречал, что полезно в различных визуальных областях.
- Интерактивное уточнение: позволяет пользователям итеративно уточнять результаты сегментации, предоставляя дополнительные промпты.
- Расширенная обработка визуальных сложностей: справляется с общими проблемами сегментации видео, такими как окклюзия объектов и их повторное появление.
Для получения подробной информации об архитектуре и возможностях 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+ аннотаций масок: детальные пространственно-временные аннотации масок, называемые "masklets", охватывающие целые объекты и их части.
- Масштаб датасета: содержит в 4.5 раза больше видео и в 53 раза больше аннотаций, чем предыдущие крупнейшие наборы данных, предлагая беспрецедентное разнообразие и сложность.
Этот обширный набор данных позволяет SAM 2 достигать превосходных результатов в основных бенчмарках сегментации видео и улучшает его возможности zero-shot обобщения. Для получения дополнительной информации см. раздел SA-V Dataset.
Как SAM 2 справляется с окклюзиями и повторным появлением объектов при сегментации видео?
SAM 2 включает сложный механизм памяти для управления временными зависимостями и окклюзиями в видеоданных. Механизм памяти состоит из:
- Кодировщик памяти и банк памяти: сохраняет признаки из прошлых кадров.
- Модуль внимания к памяти: использует сохраненную информацию для поддержания последовательного отслеживания объектов во времени.
- Occlusion Head: специально обрабатывает сценарии, где объекты не видны, предсказывая вероятность перекрытия объекта.
Этот механизм обеспечивает непрерывность, даже если объекты временно перекрыты или выходят из кадра и возвращаются обратно. Подробнее см. в разделе Механизм памяти и обработка окклюзии.
Как SAM 2 соотносится с другими моделями сегментации, например YOLO26?
Модели SAM 2, такие как Meta SAM2-t и SAM2-b, обладают мощными возможностями zero-shot сегментации, но они значительно крупнее и медленнее по сравнению с моделями YOLO. Например, YOLO26n-seg примерно в 24 раза меньше и более чем в 1145 раз быстрее, чем SAM2-b на CPU. В то время как SAM 2 превосходит в универсальных сценариях сегментации на основе промптов и zero-shot, YOLO26 оптимизирован для скорости, эффективности и работы в реальном времени с выводом end-to-end без NMS, что делает его более подходящим для развертывания в средах с ограниченными ресурсами.