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

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

Механизм памяти и обработка перекрытий#
Механизм памяти позволяет 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, их предобученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как вывод, валидация, обучение и экспорт.
| Тип модели | Предварительно обученные веса | Поддерживаемые задачи | Обучение | Валидация | Вывод | Экспорт |
|---|---|---|---|---|---|---|
| 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 = {"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 — это продвинутое расширение SAM 2 без обучения, которое обеспечивает динамическое взаимодействие с несколькими кадрами и возможности непрерывного обучения. Этот предиктор поддерживает обновление подсказок в реальном времени и управление памятью для улучшения качества трекинга в последовательности изображений. По сравнению с исходным SAM 2, SAM2DynamicInteractivePredictor перестраивает процесс инференса, чтобы наилучшим образом использовать предобученные модели SAM 2 без необходимости дополнительного обучения.

Ключевые особенности#
Он предлагает три существенных улучшения:
- Динамическое взаимодействие: добавляй новые подсказки для объединения или отслеживания новых экземпляров в последующих кадрах в любой момент обработки видео
- Непрерывное обучение: добавляй новые подсказки для существующих экземпляров, чтобы со временем повышать производительность модели
- Поддержка независимых изображений: обрабатывай несколько независимых изображений (не обязательно из одной видеопоследовательности) с совместным использованием памяти и отслеживанием объектов между изображениями
Основные возможности#
- Гибкость подсказок: принимает ограничивающие рамки, точки и маски в качестве подсказок
- Управление банком памяти: поддерживает динамический банк памяти для хранения состояний объектов между кадрами
- Отслеживание нескольких объектов: поддерживает одновременное отслеживание нескольких объектов с индивидуальными идентификаторами объектов
- Обновления в реальном времени: позволяет добавлять новые подсказки во время инференса без повторной обработки предыдущих кадров
- Независимая обработка изображений: обрабатывает отдельные изображения с общим контекстом памяти для согласованности объектов между изображениями
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 разработан для работы с моделями SAM 2 и поддерживает добавление и уточнение категорий со всеми box, point, and mask prompts, которые SAM 2 поддерживает изначально. Он особенно полезен в сценариях, где объекты появляются или меняются со временем, например в задачах разметки видео или интерактивного редактирования.
Аргументы#
| Название | Значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
max_obj_num | 3 | int | Предустановленное максимальное количество категорий |
update_memory | False | bool | Обновлять ли память с помощью новых подсказок |
obj_ids | None | List[int] | Список идентификаторов объектов, соответствующих подсказкам |
Варианты использования#
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, nms=False) # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
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 для подавления немаксимумов, используемый для фильтрации перекрывающихся рамок. |
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, преемник модели сегментации всего (SAM) от Meta, — это передовой инструмент для комплексной сегментации объектов на изображениях и видео. Он эффективно работает со сложными визуальными данными благодаря унифицированной архитектуре модели с поддержкой подсказок, которая обеспечивает обработку в реальном времени и обобщение в режиме zero-shot. SAM 2 предлагает несколько улучшений по сравнению с исходной SAM, включая:
- Унифицированная архитектура модели: объединяет возможности сегментации изображений и видео в одной модели.
- Производительность в реальном времени: обрабатывает примерно 44 кадра в секунду, что делает модель подходящей для приложений, требующих немедленной обратной связи.
- Обобщение в режиме zero-shot: сегментирует объекты, с которыми модель никогда раньше не сталкивалась, что полезно в разнообразных визуальных областях.
- Интерактивное уточнение: позволяет итеративно уточнять результаты сегментации с помощью дополнительных подсказок.
- Расширенная обработка визуальных сложностей: справляется с распространенными проблемами сегментации видео, такими как перекрытие и повторное появление объектов.
Подробнее об архитектуре и возможностях 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 обучается на наборе данных SA-V — одном из крупнейших и наиболее разнообразных доступных наборов данных для сегментации видео. Набор данных SA-V включает:
- Более 51 000 видео: снятых в 47 странах, что обеспечивает широкий спектр реальных сценариев.
- Более 600 000 аннотаций масок: подробные пространственно-временные аннотации масок, называемые «masklets», охватывающие целые объекты и их части.
- Масштаб набора данных: содержит в 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, поэтому лучше подходит для развертывания в средах с ограниченными ресурсами.