Interactive Segmentation
Интерактивная сегментация преобразует пользовательские щелчки, рамки или наброски в маски объектов и уточняет их по корректирующим щелчкам — от GrabCut до SAM от Meta.
Интерактивная сегментация создаёт попиксельно точную маску объекта по нескольким подсказкам человека, например щелчкам, ограничивающей рамке или штрихам, а затем уточняет маску по мере добавления исправлений. Положительный щелчок отмечает точку, принадлежащую объекту, а отрицательный — точку, которая ему не принадлежит. Поэтому после каждого этапа пользователю достаточно указать на самую большую оставшуюся ошибку. Метод не зависит от класса: модель сегментирует всё, на что указывает пользователь, включая объекты, которых она не видела во время обучения. Благодаря этому метод широко применяют для разметки данных, редактирования фотографий и выделения структур на медицинских снимках. Это разновидность работы с участием человека в задаче сегментации изображений.
Как работает цикл уточнения щелчками#
Модель получает изображение и все щелчки, сделанные к этому моменту; многие модели также получают предыдущую маску, а затем предсказывают новую маску. Цикл повторяется, пока результат не станет достаточно хорошим:
Бенчмарки имитируют действия такого пользователя: каждый новый щелчок приходится на центр самой крупной области ошибки, а оценка — это число щелчков, необходимых для достижения пересечения по объединению с эталонной разметкой на уровне 85% или 90%. Результат указывается как NoC@85 и NoC@90 на таких наборах данных, как GrabCut, Berkeley и DAVIS.
Пакет Ultralytics запускает модели SAM от Meta с точечными подсказками: метка 1 обозначает положительный щелчок, а 0 — отрицательный:
from ultralytics import SAM
# Meta's SAM 2.1 base model, run through the Ultralytics package
model = SAM("sam2.1_b.pt")
image = "https://ultralytics.com/images/bus.jpg"
# Round 1: a single positive click on the pedestrian's dark coat
results = model(image, points=[[[250, 620]]], labels=[[1]])
print(f"1 click: {int(results[0].masks.data.sum())} mask pixels")
# Round 2: add a positive click on the pedestrian's jeans and a negative click on the bus
results = model(image, points=[[[250, 620], [290, 760], [420, 560]]], labels=[[1, 1, 0]])
print(f"3 clicks: {int(results[0].masks.data.sum())} mask pixels")
results[0].save(filename="interactive_mask.jpg")После одного щелчка выводится 32 598 пикселей маски, а после трёх — 33 120. Значит, одного щелчка по пальто уже достаточно, чтобы выбрать почти всего пешехода, а дополнительные щелчки уточняют маску примерно на 500 пикселей. Ultralytics Platform выполняет тот же цикл в своём редакторе разметки: в режиме Smart щелчок за пределами текущей маски SAM добавляет область, а щелчок внутри неё вычитает область. Готовая маска сохраняется как многоугольник, ограничивающая рамка или ориентированная рамка в соответствии с задачей набора данных.
От Graph Cuts к моделям с подсказками#
Ранние инструменты напрямую оптимизировали границы. Intelligent Scissors (1995) привязывал обводку к выраженным границам, а GrabCut, опубликованный Microsoft Research в 2004 году и включённый в OpenCV, сегментирует объект внутри нарисованной пользователем рамки: итеративно подбирает цветовые модели переднего и заднего планов и решает задачу разреза графа. С 2016 года методы глубокого обучения кодируют щелчки в виде дополнительных входных каналов рядом с изображением и обучаются строить маску с помощью свёрточной нейронной сети. В более поздних моделях для её уточнения также используется предыдущая маска.
Выпущенная в 2023 году модель Segment Anything Model (SAM) от Meta разделила обработку так, чтобы взаимодействие происходило почти мгновенно: большая визуальная трансформерная сеть один раз кодирует изображение, а лёгкие кодировщик подсказок и декодер масок превращают каждый новый набор щелчков в маску примерно за 50 миллисекунд. SAM также обучали с использованием собственного интерактивного цикла: при создании набора данных SA-1B аннотаторы щелчками выделяли объекты с помощью последовательных версий модели, и среднее время на маску сократилось с 34 до 14 секунд. SAM 2 переносит работу со щелчками на видео, распространяя маску по кадрам, а SAM 3 добавляет сегментацию по текстовым концепциям, находя все экземпляры, соответствующие короткой текстовой фразе.
Интерактивная и автоматическая сегментация#
Модели сегментации экземпляров автоматически сегментируют фиксированный набор обученных классов без участия человека. Такой подход подходит для производственных конвейеров, которые должны обрабатывать каждый кадр. Интерактивная сегментация заменяет автоматизацию гибкостью; именно так часто создают обучающие маски для подобных моделей — нередко в цикле активного обучения, который отправляет аннотаторам изображения, в которых модель наименее уверена. Визуальное подсказывание — это общий подход к управлению моделью компьютерного зрения с помощью точек, рамок или примеров изображений, а интерактивная сегментация — его итеративная форма, создающая маски.
Примеры применения в реальных условиях#
- Разметка наборов данных: Вместо того чтобы обводить сотни вершин полигона, аннотаторы выделяют объекты несколькими щелчками. При использовании SAM аннотаторам требовалось 14 секунд на маску — в 6,5 раза быстрее, чем при ручной разметке масок COCO.
- Медицинская визуализация: Радиологи выделяют опухоли и органы на снимках КТ и МРТ с помощью рамок и корректирующих щелчков. MedSAM адаптировала SAM для медицины, дообучив её на 1 570 263 парах медицинских изображений и масок, охватывающих 10 методов визуализации.










