Фаза 04 · урок 24
SAM 3 и сегментация с открытым словарём
Цель урока: SAM 2023 года был моделью только с визуальными запросами: вы щёлкаете по точке или рисуете рамку, и она возвращает маску. Для задачи «покажи мне все апельсины на этой фотографии» нужен был детектор (Grounding DINO), создающий рамки, а…
Текущий релиз AlexBred.com: первые 100 уроков русскоязычной программы.
Содержание урока
- Цели обучения
- Проблема
- Концепция
- Три поколения
- Сегментация концептов по запросу
- Ключевые компоненты архитектуры
- Обучение в масштабе
- SAM 3.1 Object Multiplex
- Когда Grounded SAM всё ещё важен в 2026 году
- YOLO-World и SAM 3
- Эффективность SAM-MI
- Формат вывода трёх моделей
- Соберите
- Шаг 1: Построение запроса
- Шаг 2: Вспомогательные функции постобработки
- Шаг 3: Унифицированный интерфейс сегментации с открытым словарём
- Шаг 4: Использование SAM 3 через Hugging Face (справка)
- Шаг 5: Измерьте, что Grounded SAM 2 давал бесплатно
- Используйте
- Поставьте в продакшен
- Упражнения
- Ключевые термины
- Дополнительные материалы
Дайте модели текстовый запрос и изображение — и получите маски для каждого подходящего объекта. В SAM 3 это выполняется за один прямой проход.
Тип: Используйте + соберите Языки: Python Предварительные требования: Фаза 4, урок 07 (U-Net), фаза 4, урок 08 (Mask R-CNN), фаза 4, урок 18 (CLIP) Время: ~60 минут
Цели обучения
- Различать SAM (только визуальные запросы), Grounded SAM / SAM 2 (детектор + SAM) и SAM 3 (нативные текстовые запросы через Promptable Concept Segmentation)
- Объяснять архитектуру SAM 3: общий backbone + детектор изображений + видеотрекер на основе памяти + голова присутствия + развязанная конструкция детектора и трекера
- Использовать интеграцию SAM 3 в Hugging Face
transformersдля обнаружения, сегментации и отслеживания видео по текстовому запросу - Выбирать между SAM 3, Grounded SAM 2, YOLO-World и SAM-MI с учётом задержки, сложности концепта и целевой среды развёртывания
Проблема
SAM 2023 года был моделью только с визуальными запросами: вы щёлкаете по точке или рисуете рамку, и она возвращает маску. Для задачи «покажи мне все апельсины на этой фотографии» нужен был детектор (Grounding DINO), создающий рамки, а затем SAM, сегментирующий каждый объект. Grounded SAM превратил это в конвейер, но он оставался каскадом из двух замороженных моделей с неизбежным накоплением ошибок.
SAM 3 (Meta, ноябрь 2025 года, ICLR 2026) объединил этот каскад. Он принимает в качестве запроса короткую именную группу или образец изображения и возвращает все подходящие маски и идентификаторы экземпляров за один прямой проход. Это называется Promptable Concept Segmentation (PCS) — сегментацией концептов по запросу. В сочетании с обновлением Object Multiplex от марта 2026 года (SAM 3.1) модель эффективно отслеживает в видео множество экземпляров одного и того же концепта.
Этот урок посвящён структурному сдвигу, который это представляет. Двумерная сегментация, обнаружение и связывание текста с изображением объединились в одной модели. Производственный вопрос теперь звучит не «какой конвейер мне собрать», а «какая модель с запросами обработает мой сценарий от начала до конца».
Концепция
Три поколения
Сегментация концептов по запросу
«Запрос-концепт» — это короткая именная группа ("yellow school bus", "striped red umbrella", "hand holding a mug") или образец изображения. Модель возвращает маски сегментации для каждого экземпляра изображения, соответствующего концепту, а также уникальный идентификатор экземпляра для каждого совпадения.
От классического SAM с визуальными запросами это отличается по трём направлениям:
- Не нужны отдельные запросы для каждого экземпляра: один текстовый запрос возвращает все совпадения.
- Открытый словарь: концептом может быть всё, что можно описать естественным языком.
- Модель возвращает несколько экземпляров сразу, а не одну маску на запрос.
Ключевые компоненты архитектуры
- Общий backbone — одно ViT обрабатывает изображение. И голова детектора, и трекер на основе памяти читают его представления.
- Голова присутствия — предсказывает, присутствует ли вообще концепт в изображении. Она отделяет вопрос «есть ли это здесь?» от вопроса «где это?». Это снижает число ложноположительных результатов для отсутствующих концептов.
- Развязанные детектор и трекер — обнаружение на уровне изображения и отслеживание на уровне видео имеют отдельные головы, поэтому не мешают друг другу.
- Банк памяти — хранит признаки каждого экземпляра между кадрами для отслеживания в видео (тот же механизм, который применял SAM 2).
Обучение в масштабе
SAM 3 обучали на 4 миллионах уникальных концептов, созданных механизмом сбора данных, который итеративно размечает и исправляет данные с помощью ИИ и проверки людьми. Новый бенчмарк SA-CO содержит 270 тысяч уникальных концептов — в 50 раз больше прежних бенчмарков. На SA-CO SAM 3 достигает 75–80% человеческого результата и вдвое превосходит существующие системы в PCS для изображений и видео.
SAM 3.1 Object Multiplex
Обновление марта 2026 года: Object Multiplex вводит механизм общей памяти для совместного отслеживания множества экземпляров одного концепта одновременно. Раньше отслеживание N экземпляров означало N отдельных банков памяти. Multiplex сводит это к одной общей памяти с запросами для каждого экземпляра. Результат — существенно более быстрое отслеживание нескольких объектов без потери точности.
Когда Grounded SAM всё ещё важен в 2026 году
- Когда нужен конкретный заменяемый детектор с открытым словарём (DINO-X, Florence-2).
- Когда лицензия SAM 3 (с ограниченным доступом на HF) оказывается препятствием.
- Когда нужно больше контроля над порогом детектора, чем предоставляет SAM 3.
- Для исследовательской работы или абляций компонента детектора.
Модульные конвейеры всё ещё имеют своё место. Но для большинства производственных задач SAM 3 — более простой ответ.
YOLO-World и SAM 3
- YOLO-World — только детектор с открытым словарём (без масок). Работает в реальном времени. Лучше всего, когда нужны рамки с высокой частотой кадров.
- SAM 3 — полная сегментация и отслеживание. Медленнее, но даёт более богатый результат.
Практическое разделение: YOLO-World — для быстрых конвейеров только с обнаружением (навигация роботов, оперативные панели), SAM 3 — для всего, что требует масок или отслеживания.
Эффективность SAM-MI
SAM-MI (2025–2026) устраняет узкое место декодера SAM. Ключевые идеи:
- Разреженные точечные запросы — использует несколько удачно выбранных точек вместо плотных запросов; уменьшает число вызовов декодера на 96%.
- Поверхностная агрегация масок — объединяет грубые предсказания масок в одну более чёткую маску.
- Развязанная инъекция масок — декодер получает заранее вычисленные признаки масок вместо повторного запуска.
Результат: примерно 1,6-кратное ускорение относительно Grounded-SAM на бенчмарках с открытым словарём.
Формат вывода трёх моделей
Все они возвращают одну и ту же общую структуру (рамки + метки + оценки + маски + ID), что полезно: вашему последующему конвейеру не приходится ветвиться в зависимости от запущенной модели.
Соберите
Шаг 1: Построение запроса
Соберите вспомогательную функцию, которая превращает пользовательское предложение в список запросов-концептов для SAM 3. Это граница, на которой «то, что ввёл пользователь» встречается с «тем, что потребляет модель».
def split_concepts(sentence):
"""
Heuristic splitter for multi-concept prompts.
Returns list of short noun phrases.
"""
for sep in [",", ";", "and", "or", "&"]:
if sep in sentence:
parts = [p.strip() for p in sentence.replace("and ", ",").split(",")]
return [p for p in parts if p]
return [sentence.strip()]
print(split_concepts("cats, dogs and balloons"))
SAM 3 принимает один концепт на прямой проход; для запросов с несколькими концептами перебирайте их в цикле или объединяйте в пакет.
Шаг 2: Вспомогательные функции постобработки
Преобразуйте сырые выходы SAM 3 в чистый список обнаружений, соответствующий контракту конвейера из урока 16 фазы 4.
from dataclasses import dataclass
from typing import List
@dataclass
class ConceptDetection:
concept: str
instance_id: int
box: tuple # (x1, y1, x2, y2)
score: float
mask_rle: str # run-length encoded
def rle_encode(binary_mask):
flat = binary_mask.flatten().astype("uint8")
runs = []
prev, count = flat[0], 0
for v in flat:
if v == prev:
count += 1
else:
runs.append((int(prev), count))
prev, count = v, 1
runs.append((int(prev), count))
return ";".join(f"{v}x{c}" for v, c in runs)
RLE сохраняет небольшой размер полезной нагрузки ответа даже для множества масок высокого разрешения. Этот же формат подходит для SAM 2, SAM 3 и Grounded SAM 2.
Шаг 3: Унифицированный интерфейс сегментации с открытым словарём
Скройте любой имеющийся бэкенд (SAM 3, Grounded SAM 2, YOLO-World + SAM 2) за единым методом. Последующий код не меняется при смене бэкенда.
from abc import ABC, abstractmethod
import numpy as np
class OpenVocabSeg(ABC):
@abstractmethod
def detect(self, image: np.ndarray, concept: str) -> List[ConceptDetection]:
...
class StubOpenVocabSeg(OpenVocabSeg):
"""
Deterministic stub used for pipeline testing when real models are not loaded.
"""
def detect(self, image, concept):
h, w = image.shape[:2]
return [
ConceptDetection(
concept=concept,
instance_id=0,
box=(w * 0.2, h * 0.3, w * 0.5, h * 0.8),
score=0.89,
mask_rle="0x100;1x50;0x200",
),
ConceptDetection(
concept=concept,
instance_id=1,
box=(w * 0.55, h * 0.25, w * 0.85, h * 0.75),
score=0.74,
mask_rle="0x80;1x40;0x220",
),
]
Настоящий подкласс SAM3OpenVocabSeg оборачивал бы transformers.Sam3Model и Sam3Processor.
Шаг 4: Использование SAM 3 через Hugging Face (справка)
Для фактической модели используется интеграция transformers:
from transformers import Sam3Processor, Sam3Model
import torch
processor = Sam3Processor.from_pretrained("facebook/sam3")
model = Sam3Model.from_pretrained("facebook/sam3").eval()
inputs = processor(images=pil_image, return_tensors="pt")
inputs = processor.set_text_prompt(inputs, "yellow school bus")
with torch.no_grad():
outputs = model(**inputs)
masks = processor.post_process_masks(
outputs.masks, inputs.original_sizes, inputs.reshaped_input_sizes
)
boxes = outputs.boxes
scores = outputs.scores
Один запрос — все совпадения возвращаются одним вызовом.
Шаг 5: Измерьте, что Grounded SAM 2 давал бесплатно
Честный бенчмарк: что происходит, когда в реальном конвейере Grounded SAM 2 заменяется на SAM 3?
- Задержка: SAM 3 экономит один прямой проход (без отдельного детектора), но сама модель тяжелее; обычно итоговая задержка не меняется либо немного уменьшается.
- Точность: SAM 3 существенно лучше справляется с редкими или композиционными концептами (
"striped red umbrella"). Для обычных концептов из одного слова результаты похожи. - Гибкость: Grounded SAM 2 позволяет заменять детекторы (DINO-X, Florence-2, Grounding DINO 1.5); SAM 3 монолитен.
Вывод: SAM 3 — вариант по умолчанию для сегментации с открытым словарём в 2026 году. Grounded SAM 2 по-прежнему подходит, когда важны гибкость выбора детектора или другие условия лицензии.
Используйте
Сценарии производственного развёртывания:
- Аннотирование в реальном времени — SAM 3 + функция CVAT label-as-text-prompt. Разметчики выбирают имя метки; SAM 3 предварительно размечает каждый подходящий экземпляр. Затем они проверяют и исправляют результат.
- Видеоаналитика — SAM 3.1 Object Multiplex для отслеживания множества объектов; подавайте кадры в трекер на основе памяти.
- Робототехника — SAM 3 для манипуляций с открытым словарём («возьми красную чашку»); работает как примитив планирования.
- Медицинская визуализация — SAM 3, дообученный на медицинских концептах; требуется запрос доступа на HF.
Ultralytics оборачивает SAM 3 в своём Python-пакете:
from ultralytics import SAM
model = SAM("sam3.pt")
results = model(image_path, prompts="yellow school bus")
Тот же интерфейс, что у YOLO и SAM 2.
Поставьте в продакшен
Этот урок создаёт:
outputs/prompt-open-vocab-stack-picker.md— запрос, выбирающий SAM 3 / Grounded SAM 2 / YOLO-World / SAM-MI с учётом задержки, сложности концепта и лицензирования.outputs/skill-concept-prompt-designer.md— навык, превращающий высказывания пользователя в корректные запросы-концепты SAM 3 (разбиение, устранение неоднозначности, запасные варианты).
Упражнения
- (Легко) Запустите SAM 3 на 10 изображениях с выбранными вами запросами-концептами. Сравните его с SAM 2 + Grounding DINO 1.5 на тех же изображениях. Сообщите, какие концепты пропустила каждая модель.
- (Средне) Постройте поверх SAM 3 интерфейс «щёлкните, чтобы включить / щёлкните, чтобы исключить»: текстовый запрос возвращает кандидатов-экземпляров; пользователь отмечает щелчком те, которые следует считать положительными. Выведите итоговый набор концептов как JSON.
- (Сложно) Дообучите SAM 3 на пользовательском наборе концептов (например, пяти типах электронных компонентов), имея по 20 размеченных изображений каждого. Сравните с SAM 3 без обучения на том же тестовом наборе; измерьте улучшение IoU масок.
Ключевые термины
| Термин | Как обычно говорят | Что это на самом деле означает |
|---|---|---|
| Сегментация с открытым словарём | «Сегментировать по тексту» | Создавать маски объектов, описанных естественным языком, а не фиксированным набором меток |
| PCS | «Promptable Concept Segmentation» | Основная задача SAM 3: по именной группе или образцу изображения сегментировать все подходящие экземпляры |
| Запрос-концепт | «Текстовый ввод» | Короткая именная группа или образец изображения; не полное предложение |
| Голова присутствия | «Есть ли это здесь?» | Модуль SAM 3, определяющий, существует ли концепт на изображении до локализации |
| SA-CO | «Бенчмарк SAM 3» | Бенчмарк сегментации с открытым словарём на 270 тысячах концептов; в 50 раз больше прежних бенчмарков открытого словаря |
| Object Multiplex | «Обновление SAM 3.1» | Многообъектное отслеживание с общей памятью; быстрое совместное отслеживание множества экземпляров |
| Grounded SAM 2 | «Модульный конвейер» | Каскад детектора и SAM 2; всё ещё актуален, когда важна замена детектора |
| SAM-MI | «Эффективный вариант SAM» | Mask Injection, дающий 1,6-кратное ускорение относительно Grounded-SAM |
Дополнительные материалы
- SAM 3: Segment Anything with Concepts (arXiv 2511.16719)
- SAM 3.1 Object Multiplex (Meta AI, март 2026 года)
- Страница модели SAM 3 на Hugging Face
- Учебник Grounded SAM 2 (PyImageSearch)
- Документация Ultralytics по SAM 3
- SAM3-I: Instruction-aware SAM (arXiv 2512.04585)
Источник: SAM 3 & Open-Vocabulary Segmentation 04.23 — Диффузионные трансформеры и Rectified Flow · Фаза 04 — Компьютерное зрение · 04.25 — Модели «зрение—язык» · Полный каталог