YOLO Vision 2026:

SAM 2: Segment Anything Model 2#

Эволюция SAM

SAM 2 развивает идеи оригинальной модели SAM, добавляя возможности сегментации видео. Информацию о сегментации концептов с подсказками (Promptable Concept Segmentation) на основе текстовых и визуальных примеров см. в разделе SAM 3.

Inference with Segment Anything 2 In Colab

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

SAM 2 на Ultralytics Platform

Модели SAM 2.1 обеспечивают работу функции умной разметки на Ultralytics Platform, позволяя выполнять кликовую сегментацию для быстрой разметки датасетов. Подробности см. в руководстве по разметке.

SAM 2 Example Results

Ключевые особенности#



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 Architecture Diagram

Механизм памяти и обработка окклюзий#

Механизм памяти позволяет 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&FJF
DAVIS 201782.579.885.2
YouTube-VOS81.278.983.5

Интерактивная сегментация#

В задачах интерактивной сегментации SAM 2 демонстрирует высокую эффективность и точность:

ДатасетNoC@90AUC
DAVIS Interactive1.540.872

Установка#

Чтобы установить SAM 2, используй следующую команду. Все модели SAM 2 будут автоматически загружены при первом использовании.

pip install ultralytics

Как использовать SAM 2: универсальность в сегментации изображений и видео#

В следующей таблице подробно описаны доступные модели SAM 2, их предобученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как Инференс, Валидация, Обучение и Экспорт.

Тип моделиПредобученные весаПоддерживаемые задачиTrainingValidationInferenceЭкспорт
SAM 2 tinysam2_t.ptInstance Segmentation
SAM 2 smallsam2_s.ptInstance Segmentation
SAM 2 basesam2_b.ptInstance Segmentation
SAM 2 largesam2_l.ptInstance Segmentation
SAM 2.1 tinysam2.1_t.ptInstance Segmentation
SAM 2.1 smallsam2.1_s.ptInstance Segmentation
SAM 2.1 basesam2.1_b.ptInstance Segmentation
SAM 2.1 largesam2.1_l.ptInstance 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 без необходимости дополнительного обучения.

SAM 2 Example Results

Ключевые особенности#

Модель предлагает три важных улучшения:

  1. Динамическая интерактивность: в любой момент обработки видео добавляй новые подсказки для объединения или отслеживания новых экземпляров на последующих кадрах.
  2. Непрерывное обучение: добавляй новые подсказки для уже существующих экземпляров, чтобы со временем улучшать производительность модели.
  3. Независимая поддержка нескольких изображений: обрабатывай несколько независимых изображений (не обязательно из видеопоследовательности) с совместным использованием памяти и межмодельным трекингом объектов.

Ключевые возможности#

  • Гибкость подсказок: принимает в качестве подсказок ограничивающие рамки (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_num3intЗаданное по умолчанию максимальное количество категорий
update_memoryFalseboolОбновлять ли память новыми подсказками
obj_idsNoneList[int]Список идентификаторов объектов, соответствующих подсказкам

Сценарии использования#

SAM2DynamicInteractivePredictor идеально подходит для:

  • Рабочих процессов аннотирования видео, в которых новые объекты появляются в ходе последовательности
  • Интерактивного редактирования видео, требующего добавления и уточнения объектов в реальном времени
  • Систем видеонаблюдения с потребностью в динамическом отслеживании объектов
  • Медицинской визуализации для отслеживания анатомических структур по временным рядам
  • Автономных систем, требующих адаптивного обнаружения и отслеживания объектов
  • Наборов данных из нескольких изображений для последовательной сегментации объектов на независимых изображениях
  • Анализа коллекций изображений, где объекты необходимо отслеживать в разных сценах
  • Междоменной сегментации с использованием памяти из разнообразных контекстов изображений
  • Полуавтоматического аннотирования для эффективного создания наборов данных с минимальным вмешательством человека

Сравнение SAM и YOLO#

Здесь мы сравниваем модели Meta SAM 2, включая самый маленький вариант SAM2-t, с моделями сегментации Ultralytics, включая YOLO26n-seg:

МодельРазмер
(МБ)
Параметры
(М)
Скорость (CPU)
(мс/из)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s с backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (в 11.0 раз меньше)3.4 (в 11.4 раза меньше)24.8 (в 945 раз быстрее)
Ultralytics YOLO11n-seg6.2 (в 12.6 раз меньше)2.9 (в 13.4 раза меньше)24.3 (в 964 раза быстрее)
Ultralytics YOLO26n-seg6.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")
АргументТипПо умолчаниюОписание
datastrобязательноПуть к директории, содержащей целевые изображения для аннотирования или сегментации.
det_modelstr'yolo26x.pt'Путь к модели обнаружения YOLO для начального обнаружения объектов.
sam_modelstr'sam_b.pt'Путь к модели SAM для сегментации (поддерживает веса SAM, SAM 2, MobileSAM и SAM 3).
devicestr''Вычислительное устройство (например, 'cuda:0', 'cpu' или '' для автоматического определения устройства).
conffloat0.25Порог уверенности YOLO для фильтрации слабых обнаружений.
ioufloat0.45Порог IoU для NMS для фильтрации перекрывающихся рамок.
imgszint640Размер входного изображения для изменения размера (должен быть кратен 32).
max_detint300Максимальное количество обнаружений на изображение для экономии памяти.
classeslist[int]NoneСписок индексов классов для обнаружения (например, [0, 1] для человека и велосипеда).
output_dirstrNoneДиректория сохранения аннотаций (по умолчанию: папка, соседняя с <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) инференсом, что делает его более подходящим для развертывания в средах с ограниченными ресурсами.

Комментарии