Ultralytics YOLO27:

SAM 2: модель сегментации чего угодно 2#

Эволюция SAM

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

Inference with Segment Anything 2 In Colab

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

SAM 2 на платформе Ultralytics

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

Примеры результатов SAM 2

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



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 записывает их признаки в банк памяти. Когда объект перекрывается, модель может использовать эту память, чтобы предсказать его положение и вид при повторном появлении. Специальная голова перекрытий обрабатывает ситуации, в которых объекты не видны, и предсказывает вероятность перекрытия объекта.

Разрешение неоднозначности нескольких масок#

В неоднозначных ситуациях (например, при перекрывающихся объектах) 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, их предобученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как вывод, валидация, обучение и экспорт.

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

Примеры результатов SAM 2

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

Он предлагает три существенных улучшения:

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

Основные возможности#

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

Варианты использования#

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

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

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

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

МодельРазмер
(МБ)
Параметры
(млн)
Скорость (CPU)
(мс/изобр.)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s с бэкбоном 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, 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")
АргументТипПо умолчаниюОписание
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 для подавления немаксимумов, используемый для фильтрации перекрывающихся рамок.
imgszint640Размер входных данных для изменения размера изображений (должен быть кратен 32).
max_detint300Максимальное количество обнаружений на изображение для эффективного использования памяти.
classeslist[int]NoneСписок индексов классов для обнаружения (например, [0, 1] для человека и велосипеда).
output_dirstrNoneКаталог для сохранения аннотаций (по умолчанию: соседний каталог <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, поэтому лучше подходит для развертывания в средах с ограниченными ресурсами.

Комментарии