Instance Segmentation
Экземплярная сегментация обводит каждый объект на изображении отдельной пиксельной маской, поэтому соприкасающиеся объекты одного класса остаются раздельными. Модели, метрики и код.
Сегментация экземпляров — это задача компьютерного зрения, которая находит каждый объект на изображении, определяет его класс и обводит его отдельной маской на уровне пикселей. Она объединяет анализ каждого объекта, характерный для детекции объектов, с точностью до пикселя, характерной для сегментации изображений: детектор рисует прямоугольную ограничивающую рамку, которая захватывает и фон, а модель сегментации экземпляров точно отмечает пиксели, принадлежащие каждому объекту. Два человека, стоящие плечом к плечу, образуют две отдельные маски с двумя метками — это позволяет подсчитывать, измерять и вырезать отдельные объекты.
Сегментация экземпляров, семантическая и паноптическая сегментация#
Сегментация экземпляров — одна из трёх задач сегментации, которые различаются тем, что означает метка:
- Семантическая сегментация: Присваивает класс каждому пикселю и объединяет все объекты этого класса в одну область, поэтому три припаркованные машины становятся одной областью «машина». Она также размечает фоновые области, например дорогу и небо.
- Сегментация экземпляров: Назначает каждому объекту, который можно посчитать, отдельную маску и идентификатор. Поэтому три машины становятся машиной 1, машиной 2 и машиной 3. Пиксели, не относящиеся ни к одному обнаруженному объекту, остаются без метки.
- Паноптическая сегментация: Присваивает класс каждому пикселю, а объектам, которые можно посчитать, — также идентификатор экземпляра, объединяя оба представления в одном результате.
Модели с поддержкой запросов, такие как Segment Anything Model (SAM) от Meta, выполняют интерактивную сегментацию: они возвращают маску объекта, на который указывает щелчок, рамка или текстовый запрос, без фиксированного списка классов.
Как работают модели сегментации экземпляров#
Двухэтапные модели сначала выполняют детекцию, а затем сегментацию. Mask R-CNN — эталонная архитектура, появившаяся в 2017 году. Она предлагает регионы-кандидаты, классифицирует и уточняет каждую рамку, а затем предсказывает небольшую маску 28×28 внутри каждой рамки с помощью отдельной ветви масок.
Одноэтапные модели предсказывают рамки и маски за один проход, что подходит для инференса в реальном времени. YOLACT предложила архитектуру с прототипами, которая используется и в моделях сегментации YOLO: сеть предсказывает общий для всего изображения набор масок-прототипов и короткий вектор коэффициентов маски для каждого обнаруженного объекта. Маска объекта представляет собой взвешенную коэффициентами сумму прототипов, обрезанную по его рамке и преобразованную в бинарную маску пороговой обработкой.
Модели на основе Transformer, например Mask2Former, используют третий подход: они предсказывают фиксированный набор запросов масок и применяют одну архитектуру для семантической сегментации, сегментации экземпляров и паноптической сегментации.
Маски, многоугольники и метрики#
Обучающие метки обычно представляют собой многоугольники, обведённые вокруг каждого объекта. Их сохраняют в таких форматах, как JSON COCO или текстовые файлы YOLO, где для каждого объекта указаны идентификатор класса и список нормализованных вершин. При инференсе модели выводят каждый экземпляр в виде бинарной маски, которую можно преобразовать обратно в контур многоугольника для сохранения или отрисовки. Точность оценивают по масочной средней точности (mAP): её вычисляют так же, как mAP для рамок, но пересечение над объединением (IoU) измеряют между предсказанными масками и масками эталонной разметки. Обводить многоугольником каждый объект гораздо дольше, чем рисовать рамку, поэтому модели с поддержкой запросов, такие как SAM, широко используют, чтобы создать черновую маску одним щелчком, которую затем исправляет аннотатор.
Модели сегментации Ultralytics YOLO26, обозначенные суффиксом -seg, используют архитектуру с прототипами: 32 прототипа и 32 коэффициента для каждой детекции. Для каждого экземпляра они возвращают класс, рамку, маску и контур многоугольника:
from ultralytics import YOLO
# Load a YOLO26 instance segmentation model pretrained on the 80 COCO classes
model = YOLO("yolo26n-seg.pt")
# Segment every object instance in the image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Each instance has its own class and mask outline, even when classes repeat
for class_id, polygon in zip(result.boxes.cls.int().tolist(), result.masks.xy):
print(f"{result.names[class_id]}: outline with {len(polygon)} points")
result.save(filename="instance_segmentation.jpg")Каждый обнаруженный человек выводится отдельной строкой со своим контуром, а на сохранённом изображении маска каждого экземпляра окрашена отдельно. Чтобы размечать собственные данные и обучать модель, смотри как самостоятельно обучить YOLO26 для сегментации экземпляров или урок Ultralytics Academy «Разметка и обучение сегментации экземпляров».
Примеры применения в реальных условиях#
Маски экземпляров важны везде, где решение зависит от точной формы или количества отдельных объектов:
- Роботизированный захват: Роботу, который выбирает детали из заполненного контейнера, нужен точный контур каждой детали, чтобы выбрать точку захвата, не задевая соседние детали.
- Клеточная биология: Системы обработки микроскопических изображений сегментируют отдельные клетки и ядра, включая соприкасающиеся, чтобы подсчитывать их и измерять размеры и форму.
- Сельское хозяйство: Роботы для сбора урожая и системы оценки урожайности отделяют отдельные плоды в густых кронах, чтобы подсчитывать их и оценивать размер по площади маски.
- Отслеживание объектов на видео: Объединение масок экземпляров с трекером позволяет отслеживать точный силуэт каждого объекта от кадра к кадру.
- Автономные транспортные средства: Наборы данных для вождения, например Cityscapes, содержат метки уровня экземпляров для восьми классов людей и транспортных средств, благодаря чему модели восприятия могут различать каждого пешехода в толпе.










