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

Основные особенности#
Смотри: Как запустить инференс с SAM2 от Meta с помощью Ultralytics | Пошаговое руководство 🎉
Унифицированная архитектура модели#
SAM 2 объединяет возможности сегментации изображений и видео в одной модели. Такая унификация упрощает развертывание и обеспечивает стабильную производительность при работе с разными типами медиа. Модель использует гибкий интерфейс на основе запросов, позволяя задавать интересующие объекты с помощью точек, ограничивающих рамок или масок.
Производительность в реальном времени#
Модель обеспечивает инференс в реальном времени, обрабатывая около 44 кадров в секунду. Поэтому SAM 2 подходит для приложений, которым нужна мгновенная обратная связь, например для видеомонтажа и дополненной реальности.
Zero-shot-генерализация#
SAM 2 может сегментировать объекты, с которыми раньше не сталкивалась, демонстрируя высокую способность к обобщению в режиме zero-shot. Это особенно полезно в разнообразных или меняющихся визуальных областях, где заранее заданные категории могут не охватывать все возможные объекты.
Интерактивное уточнение#
Ты можешь последовательно уточнять результаты сегментации, добавляя подсказки и точно контролируя итоговый результат. Такая интерактивность необходима для тонкой настройки результатов в таких задачах, как аннотирование видео или анализ медицинских изображений.
Расширенная обработка визуальных сложностей#
SAM 2 умеет справляться с распространёнными сложностями сегментации видео, такими как перекрытие объектов и их повторное появление. Механизм памяти отслеживает объекты между кадрами, обеспечивая непрерывность, даже когда объекты временно скрываются или покидают сцену, а затем возвращаются.
Чтобы подробнее узнать об архитектуре и возможностях SAM 2, ознакомься с исследовательской статьёй о SAM 2.
Производительность и технические характеристики#
SAM 2 задаёт новую планку в этой области и превосходит предыдущие модели по различным метрикам:
| Показатель | SAM 2 | Предыдущий SOTA |
|---|---|---|
| Интерактивная сегментация видео | Лучший результат | - |
| Требуется взаимодействий с человеком | В 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 |
|---|---|---|---|
| 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, их предварительно обученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как инференс, валидация, обучение и экспорт.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Обучение | Валидация | Инференс | Экспорт |
|---|---|---|---|---|---|---|
| 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
# Загрузить модель
model = SAM("sam2.1_b.pt")
# Показать информацию о модели (необязательно)
model.info()
# Выполнить инференс с подсказкой в виде bboxes
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Выполнить инференс с одной точкой
results = model(points=[900, 370], labels=[1])
# Выполнить инференс с несколькими точками
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Выполнить инференс с подсказкой в виде нескольких точек для каждого объекта
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Выполнить инференс с подсказкой в виде отрицательных точек
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])Сегментировать всё#
Сегментируй всё содержимое изображения или видео без специальных подсказок.
from ultralytics import SAM
# Загрузить модель
model = SAM("sam2.1_b.pt")
# Показать информацию о модели (необязательно)
model.info()
# Выполнить инференс
model("path/to/video.mp4")- В этом примере показано, как использовать SAM 2 для сегментации всего содержимого изображения или видео, если не заданы подсказки (bboxes/точки/маски).
Сегментация видео и отслеживание объектов#
Сегментируй всё содержимое видео с помощью специальных подсказок и отслеживай объекты.
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)
# Выполнить инференс с одной точкой
results = predictor(source="test.mp4", points=[920, 470], labels=[1])
# Выполнить инференс с несколькими точками
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Выполнить инференс с подсказкой в виде нескольких точек для каждого объекта
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Выполнить инференс с подсказкой в виде отрицательных точек
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])Динамическая интерактивная сегментация и отслеживание#
SAM2DynamicInteractivePredictor — это расширение SAM 2 без дополнительного обучения, которое поддерживает динамическое взаимодействие с несколькими кадрами и непрерывное обучение. Этот предиктор поддерживает обновление подсказок в реальном времени и управление памятью для повышения качества отслеживания в последовательности изображений. В отличие от исходной SAM 2, SAM2DynamicInteractivePredictor перестраивает процесс инференса, чтобы максимально эффективно использовать предварительно обученные модели SAM 2 без дополнительного обучения.

Основные особенности#
Это решение предлагает три важных улучшения:
- Динамическое взаимодействие: добавляй подсказки для объединения или отслеживания новых экземпляров в последующих кадрах в любой момент обработки видео
- Непрерывное обучение: добавляй подсказки для существующих экземпляров, чтобы со временем повысить производительность модели
- Поддержка независимых изображений: обрабатывай несколько независимых изображений (не обязательно из одной видеопоследовательности), используя общую память и отслеживая объекты между изображениями
Основные возможности#
- Гибкие подсказки: принимает в качестве подсказок ограничивающие рамки, точки и маски
- Управление банком памяти: поддерживает динамический банк памяти для хранения состояний объектов между кадрами
- Отслеживание нескольких объектов: позволяет одновременно отслеживать несколько объектов, каждому из которых присваивается собственный ID
- Обновления в реальном времени: позволяет добавлять подсказки во время инференса, не обрабатывая предыдущие кадры повторно
- Обработка отдельных изображений: обрабатывай отдельные изображения с общим контекстом памяти, чтобы обеспечивать согласованность объектов между изображениями
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)
# Задать категорию с помощью подсказки в виде рамки
predictor(source="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[0], update_memory=True)
# Найти этот конкретный объект на новом изображении
results = predictor(source="image2.jpg")
# Добавить новую категорию с новым ID объекта
results = predictor(
source="image4.jpg",
bboxes=[[300, 300, 400, 400]], # Новый объект
obj_ids=[1], # Новый ID объекта
update_memory=True, # Добавить в память
)
# Выполнить инференс
results = predictor(source="image5.jpg")
# Добавить уточняющие промпты в ту же категорию, чтобы повысить точность
# Это помогает, когда внешний вид объекта значительно меняется
results = predictor(
source="image6.jpg",
points=[[150, 150]], # Точка уточнения
labels=[1], # Положительная точка
obj_ids=[1], # Тот же ID объекта
update_memory=True, # Обновить память новыми данными
)
# Выполнить инференс на новом изображении
results = predictor(source="image7.jpg")SAM2DynamicInteractivePredictor предназначен для работы с моделями SAM 2 и поддерживает добавление категорий и их уточнение с помощью всех промптов с ограничивающей рамкой, точкой и маской, которые SAM 2 поддерживает изначально. Это особенно полезно в сценариях, где объекты появляются или меняются со временем, например при аннотировании видео или интерактивном редактировании.
Аргументы#
| Название | Значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
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:
| Модель | Размер (МБ) | Параметры (M) | Скорость (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
# Профилировать 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)
# Профилирование FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Профилировать модели YOLO (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, nms=False) # Голова YOLO26 без NMS; ничего не делает для YOLOv8/YOLO11
model = YOLO(onnx_path)
model(ASSETS)Автоматическое аннотирование: эффективное создание наборов данных#
Автоматическое аннотирование — это мощная функция SAM 2, позволяющая быстро и точно создавать наборы данных для сегментации с помощью предварительно обученных моделей. Эта возможность особенно полезна для создания больших и качественных наборов данных без значительных усилий по ручной разметке.
Как автоматически аннотировать данные с помощью SAM 2#
Смотри: Автоматическая разметка с моделью Meta Segment Anything 2 с помощью Ultralytics | Разметка данных
Чтобы автоматически аннотировать набор данных с помощью 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 для подавления немаксимумов, чтобы отфильтровать перекрывающиеся рамки. |
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 может терять объекты из виду при обработке длинных последовательностей или значительном изменении ракурса.
- Путаница между объектами: иногда модель может путать похожие объекты, особенно в переполненных сценах.
- Эффективность при работе с несколькими объектами: эффективность сегментации снижается при одновременной обработке нескольких объектов из-за отсутствия взаимодействия между ними.
- Точность детализации Accuracy: модель может упускать мелкие детали, особенно у быстро движущихся объектов. Дополнительные промпты могут частично решить эту проблему, но плавность во времени не гарантируется.
Цитирование и благодарности#
Если 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) от Meta, — это передовой инструмент для комплексной сегментации объектов как на изображениях, так и в видео. Единая архитектура модели с поддержкой промптов позволяет ей эффективно обрабатывать сложные визуальные данные в реальном времени и обобщать знания в режиме zero-shot. SAM 2 предлагает несколько улучшений по сравнению с оригинальной SAM, включая:
- Единая архитектура модели: объединяет возможности сегментации изображений и видео в одной модели.
- Работа в реальном времени: обрабатывает около 44 кадров в секунду и подходит для приложений, требующих немедленной обратной связи.
- Обобщение в режиме zero-shot: сегментирует объекты, с которыми модель раньше не сталкивалась, что полезно в различных визуальных областях.
- Интерактивное уточнение: позволяет итеративно уточнять результаты сегментации с помощью дополнительных промптов.
- Расширенная обработка визуальных сложностей: справляется с типичными задачами сегментации видео, например с перекрытием объектов и их повторным появлением.
Подробнее об архитектуре и возможностях SAM 2 читай в исследовательской статье о SAM 2.
SAM 2 можно использовать для сегментации видео в реальном времени благодаря интерфейсу с поддержкой промптов и возможностям инференса в реальном времени. Вот простой пример:
Сегментация с помощью подсказокИспользуй подсказки, чтобы сегментировать конкретные объекты на изображениях или видео.
from ultralytics import SAM # Загрузить модель model = SAM("sam2_b.pt") # Показать информацию о модели (необязательно) model.info() # Сегментация с промптом в виде ограничивающей рамки results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200]) # Сегментация с промптом в виде точки results = model("path/to/image.jpg", points=[150, 150], labels=[1])Подробные инструкции смотри в разделе Как использовать SAM 2.
SAM 2 обучается на наборе данных SA-V — одном из крупнейших и наиболее разнообразных доступных наборов данных для сегментации видео. В набор данных SA-V входят:
- Более 51 000 видео: снятых в 47 странах, что позволяет охватить широкий спектр сценариев из реального мира.
- Более 600 000 аннотаций масок: подробные пространственно-временные аннотации масок, называемые «масклетами», охватывают целые объекты и их части.
- Масштаб набора данных: в нем в 4.5 раза больше видео и в 53 раза больше аннотаций, чем в крупнейших предыдущих наборах данных, что обеспечивает беспрецедентное разнообразие и сложность.
Этот обширный набор данных позволяет SAM 2 показывать превосходные результаты на основных бенчмарках сегментации видео и повышает ее способность обобщать знания в режиме zero-shot. Подробнее смотри в разделе Набор данных SA-V.
В SAM 2 предусмотрен сложный механизм памяти для обработки временных зависимостей и перекрытий в видеоданных. Механизм памяти состоит из следующих компонентов:
- Кодировщик памяти и банк памяти: сохраняют признаки из предыдущих кадров.
- Модуль внимания к памяти: использует сохраненную информацию, чтобы последовательно отслеживать объекты с течением времени.
- Голова обработки перекрытий: специально обрабатывает ситуации, когда объекты не видны, и прогнозирует вероятность перекрытия объекта.
Этот механизм обеспечивает непрерывность отслеживания, даже когда объекты временно скрываются, покидают сцену или возвращаются в нее. Подробнее смотри в разделе Механизм памяти и обработка перекрытий.
Модели SAM 2, такие как SAM2-t и SAM2-b от Meta, обеспечивают мощную сегментацию в режиме zero-shot, но значительно превосходят модели YOLO по размеру и уступают им в скорости. Например, YOLO26n-seg примерно в 24 раза меньше и более чем в 1145 раз быстрее, чем SAM2-b на CPU. SAM 2 отлично подходит для универсальной сегментации на основе промптов и в режиме zero-shot, а YOLO26 оптимизирована для скорости, эффективности и приложений реального времени. Благодаря сквозному инференсу без NMS YOLO26 лучше подходит для развертывания в условиях ограниченных ресурсов.