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

Ключевые особенности#
Watch: How to Run Inference with Meta's SAM2 using Ultralytics | Step-by-Step Guide 🎉
Унифицированная архитектура модели#
SAM 2 объединяет возможности сегментации изображений и видео в одной модели. Такая унификация упрощает развертывание и обеспечивает стабильную производительность для различных типов медиаданных. Модель использует гибкий интерфейс на основе подсказок, позволяя пользователям указывать интересующие объекты с помощью различных типов подсказок, таких как точки, ограничивающие рамки (bboxes) или маски.
Производительность в реальном времени#
Модель достигает скорости инференса в реальном времени, обрабатывая примерно 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 для извлечения высокоуровневых признаков как из изображений, так и из видеокадров. Этот компонент отвечает за понимание визуального контента на каждом временном шаге.
- Энкодер подсказок: обрабатывает предоставленные пользователем подсказки (точки, рамки, маски) для направления процесса сегментации. Это позволяет SAM 2 адаптироваться к пользовательскому вводу и нацеливаться на конкретные объекты в сцене.
- Механизм памяти: включает энкодер памяти, банк памяти и модуль внимания памяти. Эти компоненты совместно сохраняют и используют информацию из прошлых кадров, позволяя модели поддерживать стабильное отслеживание объектов с течением времени.
- Декодер масок: генерирует финальные маски сегментации на основе закодированных признаков изображения и подсказок. В видео он также использует контекст памяти для обеспечения точного трекинга между кадрами.

Механизм памяти и обработка окклюзий#
Механизм памяти позволяет SAM 2 работать с временными зависимостями и окклюзиями в видеоданных. По мере движения и взаимодействия объектов SAM 2 записывает их признаки в банк памяти. Когда объект перекрывается (оказывается в окклюзии), модель может полагаться на эту память, чтобы предсказать его положение и внешний вид при повторном появлении. Голова окклюзии (occlusion head) специально обрабатывает сценарии, когда объекты не видны, предсказывая вероятность перекрытия объекта.
Разрешение неоднозначности многомасочных предсказаний#
В ситуациях с неопределенностью (например, перекрывающиеся объекты) 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, их предобученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как Инференс, Валидация, Обучение и Экспорт.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Training | Validation | Inference | Экспорт |
|---|---|---|---|---|---|---|
| SAM 2 tiny | sam2_t.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
| SAM 2 small | sam2_s.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
| SAM 2 base | sam2_b.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
| SAM 2 large | sam2_l.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 tiny | sam2.1_t.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 small | sam2.1_s.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 base | sam2.1_b.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
| SAM 2.1 large | sam2.1_l.pt | Instance Segmentation | ❌ | ❌ | ✅ | ❌ |
Примеры предсказаний 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 = {"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/точки/маски) не заданы.
Динамическая интерактивная сегментация и трекинг#
SAM2DynamicInteractivePredictor — это продвинутое расширение SAM2, не требующее дообучения, которое обеспечивает динамическое взаимодействие с несколькими кадрами и возможности непрерывного обучения (continual learning). Этот предиктор поддерживает обновление подсказок в реальном времени и управление памятью для улучшения производительности трекинга по последовательности изображений. По сравнению с оригинальным SAM2, SAM2DynamicInteractivePredictor перестраивает пайплайн инференса, чтобы извлечь максимум пользы из предобученных моделей SAM2 без необходимости дополнительного обучения.

Ключевые особенности#
Модель предлагает три важных улучшения:
- Динамическая интерактивность: в любой момент обработки видео добавляй новые подсказки для объединения или отслеживания новых экземпляров на последующих кадрах.
- Непрерывное обучение: добавляй новые подсказки для уже существующих экземпляров, чтобы со временем улучшать производительность модели.
- Независимая поддержка нескольких изображений: обрабатывай несколько независимых изображений (не обязательно из видеопоследовательности) с совместным использованием памяти и межмодельным трекингом объектов.
Ключевые возможности#
- Гибкость подсказок: принимает в качестве подсказок ограничивающие рамки (bboxes), точки и маски.
- Управление банком памяти: поддерживает динамический банк памяти для хранения состояний объектов между кадрами.
- Трекинг нескольких объектов: поддерживает одновременное отслеживание нескольких объектов с индивидуальными идентификаторами.
- Обновления в реальном времени: Позволяет добавлять новые подсказки во время инференса без повторной обработки предыдущих кадров
- Независимая обработка изображений: Обработка отдельных изображений с общим контекстом памяти для обеспечения согласованности объектов между изображениями
from ultralytics.models.sam import SAM2DynamicInteractivePredictor
# Create SAM2DynamicInteractivePredictor
overrides = {"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 и изначально поддерживает добавление/уточнение категорий с помощью всех подсказок в виде боксов/точек/масок, поддерживаемых SAM2. Он особенно полезен в сценариях, где объекты появляются или меняются со временем, например, при аннотировании видео или интерактивном редактировании.
Аргументы#
| Имя | Значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
max_obj_num | 3 | int | Заданное по умолчанию максимальное количество категорий |
update_memory | False | bool | Обновлять ли память новыми подсказками |
obj_ids | None | List[int] | Список идентификаторов объектов, соответствующих подсказкам |
Сценарии использования#
SAM2DynamicInteractivePredictor идеально подходит для:
- Рабочих процессов аннотирования видео, в которых новые объекты появляются в ходе последовательности
- Интерактивного редактирования видео, требующего добавления и уточнения объектов в реальном времени
- Систем видеонаблюдения с потребностью в динамическом отслеживании объектов
- Медицинской визуализации для отслеживания анатомических структур по временным рядам
- Автономных систем, требующих адаптивного обнаружения и отслеживания объектов
- Наборов данных из нескольких изображений для последовательной сегментации объектов на независимых изображениях
- Анализа коллекций изображений, где объекты необходимо отслеживать в разных сценах
- Междоменной сегментации с использованием памяти из разнообразных контекстов изображений
- Полуавтоматического аннотирования для эффективного создания наборов данных с минимальным вмешательством человека
Сравнение SAM и YOLO#
Здесь мы сравниваем модели Meta SAM 2, включая самый маленький вариант 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 с backbone 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, SAM 2, MobileSAM и SAM 3). |
device | str | '' | Вычислительное устройство (например, 'cuda:0', 'cpu' или '' для автоматического определения устройства). |
conf | float | 0.25 | Порог уверенности YOLO для фильтрации слабых обнаружений. |
iou | float | 0.45 | Порог IoU для NMS для фильтрации перекрывающихся рамок. |
imgsz | int | 640 | Размер входного изображения для изменения размера (должен быть кратен 32). |
max_det | int | 300 | Максимальное количество обнаружений на изображение для экономии памяти. |
classes | list[int] | None | Список индексов классов для обнаружения (например, [0, 1] для человека и велосипеда). |
output_dir | str | None | Директория сохранения аннотаций (по умолчанию: папка, соседняя с <data>_auto_annotate_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 за их вклад в сообщество разработчиков ИИ с помощью этой революционной модели и набора данных.
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.
Как SAM 2 справляется с окклюзиями и повторным появлением объектов при сегментации видео?#
SAM 2 включает сложный механизм памяти для управления временными зависимостями и окклюзиями в видеоданных. Механизм памяти состоит из:
- Кодировщик памяти и банк памяти: Сохраняет признаки из прошлых кадров.
- Модуль внимания к памяти: Использует сохраненную информацию для поддержания согласованного отслеживания объектов с течением времени.
- Голова окклюзии: Специально обрабатывает сценарии, когда объекты не видны, прогнозируя вероятность перекрытия объекта.
Этот механизм обеспечивает непрерывность даже тогда, когда объекты временно заслоняются или выходят из сцены и возвращаются в нее. Для получения более подробной информации обратись к разделу Механизм памяти и обработка окклюзий.
Как SAM 2 соотносится с другими моделями сегментации, такими как YOLO26?#
Модели SAM 2, такие как SAM2-t и SAM2-b от Meta, предлагают мощные возможности zero-shot сегментации, но они значительно крупнее и медленнее по сравнению с моделями YOLO. Например, YOLO26n-seg примерно в 24 раза меньше и более чем в 1145 раз быстрее модели SAM2-b на CPU. В то время как SAM 2 превосходно справляется с универсальными сценариями сегментации на основе подсказок и zero-shot, YOLO26 оптимизирован для скорости, эффективности и приложений реального времени с безнадзорочным (NMS-free) сквозным (end-to-end) инференсом, что делает его более подходящим для развертывания в средах с ограниченными ресурсами.