Маски сегментации: точность до пикселя
Разметка данныхМаска показывает модели не просто где объект, а какие именно пиксели ему принадлежат. Разбираем, как маски хранятся, где возникают ошибки на краях и почему из 3D-рендера они получаются точнее, чем при ручной обводке.

Что такое маска и чем она отличается от рамки
Маска сегментации, это изображение того же размера, что и исходное, в котором каждому пикселю присвоено значение. В простейшем бинарном случае 1 означает «пиксель принадлежит объекту», а 0 «не принадлежит». В многоклассовой маске значения кодируют классы: 0 фон, 1 дорога, 2 автомобиль и так далее. В инстанс-маске каждому экземпляру объекта присваивается собственный номер, и два одинаковых предмета рядом различимы.
Рамка даёт приблизительное положение, маска даёт форму. Для круглого объекта площадь рамки примерно на 27 процентов больше площади самого объекта, а для диагональной палки или провода рамка почти полностью состоит из фона. Если вам нужно измерить площадь дефекта, обрезать объект от фона, посчитать долю покрытия поверхности или показать роботу точку захвата, без масок не обойтись. В обзоре видов разметки мы сравнивали типы аннотаций, а здесь сосредоточимся именно на масках.
Три вида масок
Семантические маски
Каждому пикселю присваивается класс, а экземпляры не различаются. Две машины, стоящие вплотную, сливаются в одну область класса «машина». Достаточно для задач типа «где дорога», «какая доля поля занята посевами», «какие участки поверхности повреждены». Подробнее о различии подходов в статье про семантическую и инстанс-сегментацию.
Инстанс-маски
Для каждого экземпляра хранится своя бинарная маска либо общая карта с уникальными номерами. Необходимы, когда нужно считать, измерять или отслеживать отдельные объекты: детали на конвейере, плоды на ветке, товары на полке.
Паноптические маски
Объединяют оба подхода: «неисчисляемые» области вроде неба, дороги и травы получают только класс, а «исчисляемые» объекты вроде людей и автомобилей получают класс и номер экземпляра. Это самый богатый вид разметки и самый дорогой при ручной подготовке.
Как маски хранятся
Существует несколько способов записи, у каждого свои плюсы.
- Растровое изображение (PNG). Значение пикселя, это номер класса или экземпляра. Удобно для семантических масок. Важно сохранять без потерь: JPEG размывает границы и порождает посторонние значения.
- Полигоны. Контур записывается списком вершин. Компактно, хорошо подходит для ручной разметки, но теряет мелкие детали и отверстия, если не использовать вложенные контуры.
- RLE (кодирование длин серий). Маска записывается как последовательность «столько-то пикселей нулей, столько-то единиц». Формат популярен в COCO для плотных групп и экономит место при больших однородных областях.
- Многоканальные массивы. Для каждой маски отдельный слой. Удобно в обучении, но занимает много памяти при десятках экземпляров на кадре.
Сравнение форматов хранения аннотаций целиком вынесено в статью про форматы аннотаций.
Где возникают ошибки на границах
Идеальной границы не существует: на краю объекта пиксель обычно частично покрыт объектом, частично фоном. Как с ним поступить, вопрос соглашения, и у него есть последствия.
- Смешанные пиксели. Если пиксель покрыт на 50 процентов, относится ли он к объекту? Большинство инструментов используют порог 50 процентов, но при ручной разметке решение остаётся за человеком, и граница «гуляет» на пиксель-два.
- Лесенка. Бинарная маска при масштабировании даёт зубчатые края. Лучше хранить маску в высоком разрешении и уменьшать вместе с изображением, а не растягивать готовую.
- Сдвиг при ресайзе. Если изображение уменьшено с одним способом интерполяции, а маска с другим, граница смещается. Для масок с классами всегда применяйте интерполяцию по ближайшему соседу, иначе между классами 1 и 3 появится «класс 2».
- Тонкие структуры. Провода, волосы, листья и антенны занимают меньше пикселя по ширине. На уменьшенном изображении они исчезают или превращаются в штрихпунктир.
- Прозрачные и полупрозрачные объекты. Стекло, пластик, дым. Что относить к объекту: оправу или то, что видно сквозь стекло? Нужно правило.
Ручная обводка добавляет собственные погрешности: дрожание руки, усталость, различие в интерпретации. Даже опытные разметчики расходятся по границе на 2-4 пикселя на стандартных изображениях, а эксперименты показывают, что попиксельная согласованность между двумя людьми редко превышает 90-95 процентов IoU для сложных форм.
Почему рендер даёт более точные маски
В 3D-сцене каждая поверхность принадлежит конкретному объекту, а рендер умеет выдавать так называемые ID-карты (object index, cryptomatte): для каждого пикселя известно, какой объект виден в нём. Это даёт ряд преимуществ.
- Точность. Нет человеческой погрешности. Граница определяется геометрией и разрешением рендера.
- Субпиксельные данные. Рендер знает покрытие пикселя объектом в долях, а значит можно получить мягкую маску (альфа-канал) и собственноручно выбрать порог.
- Корректная обработка перекрытий. Видимая часть и полная форма объекта доступны одновременно. Можно вычислить долю видимости и отфильтровать кадры, где она слишком мала.
- Тонкие и прозрачные объекты. Для стекла и тонких деталей можно рендерить маски отдельными проходами и принимать решение, что считать объектом.
- Согласованность. Маски идеально совпадают с картой глубины, рамками и ключевыми точками, поскольку все они вычислены из одной геометрии.
При этом остаётся ответственность за детали: рендер выдаёт то, что просили. Если окклюзию сглаживают шумоподавителем или применяют размытие движения, маски нужно считать с учётом этих эффектов либо хранить отдельно «чистую» версию. Этот вопрос мы подробно разбирали в статье про виртуальную камеру.
Практические рекомендации по работе с масками
Для заказчика
Заранее определите, нужна ли вам видимая маска или полная (amodal), какие классы объединяются, как обрабатывать полупрозрачные материалы, и какой минимальный размер объекта разметки допустим. Эти четыре решения закрывают большую часть спорных ситуаций.
Для обучения
Перед запуском проверьте: число уникальных значений в масках совпадает с числом классов; фон имеет значение 0 или специально выбранный индекс игнорирования; размеры масок совпадают с размерами изображений; маски не содержат лишних значений от интерполяции. Эти проверки занимают несколько строк кода и спасают от странных потерь и нулевой точности.
Типичная настройка потерь для сегментации учитывает дисбаланс классов: фон обычно занимает 90 процентов и более, и модель может научиться «рисовать всё фоном». Помогают взвешенные функции потерь и метрики по классам вместо общей точности по пикселям.
Сводная таблица
| Тип маски | Что хранит | Когда нужен | Стоимость вручную |
|---|---|---|---|
| Бинарная | объект или фон | один класс, вырезание объекта | средняя |
| Семантическая | класс каждого пикселя | карты местности, покрытия | высокая |
| Инстанс | отдельная маска на экземпляр | подсчёт, измерения, захват | очень высокая |
| Паноптическая | класс плюс номер экземпляра | автономный транспорт, роботы | максимальная |
| Альфа-маска | степень покрытия пикселя | вырезание с мягкими краями | чаще всего автоматически |
Метрики качества масок
Для оценки совпадения двух масок используют IoU (пересечение над объединением) и коэффициент Дайса. Для набора классов считают mIoU, среднее по классам. Подробности по метрикам в статье о метриках детекции применимы и здесь, с поправкой на то, что считаем площади пикселей, а не рамок. Дополнительно полезен boundary IoU или метрика расстояния между границами, она чувствительна именно к краям, которые обычный IoU маскирует крупной площадью внутри объекта.
Если ваша задача критична к границе, например измерение зазоров или площади дефектов, оценивайте модель по метрике границы, а не только по общему IoU.
Мини-чек-лист перед сдачей масок
Перед передачей датасета на обучение мы проверяем пять вещей: размеры масок совпадают с изображениями; все значения принадлежат списку классов; ни одна маска не пуста без причины; наложение на изображение на случайной выборке выглядит естественно; экземпляры не имеют дубликатов.
Итог
Маска, это самая информативная из массовых аннотаций, и одновременно самая чувствительная к мелочам: интерполяции, формату, правилам для краёв. Ручная разметка масок остаётся дорогой и нестабильной, особенно на больших объёмах, тогда как рендер даёт точные маски на каждом кадре практически без дополнительных затрат. В этом и состоит одно из сильных преимуществ синтетических датасетов, особенно на объёмах от нескольких тысяч изображений.
Хотите посмотреть маски на своём объекте? Напишите на [email protected], мы подготовим тестовый датасет с масками, рамками и картами глубины. Подробности на странице услуг по разметке.
Нужен датасет под вашу задачу?
Подготовим тестовую партию изображений с разметкой, чтобы вы могли проверить подход на своей модели. Напишите на [email protected] или оставьте заявку.
Читайте также
Разметка данныхКонтроль качества разметки
Ошибки в разметке незаметно съедают качество модели: она честно учится на неверных ответах. Рассказываем, как выстроить многоуровневый контроль, какие метрики считать и как находить ошибочные метки уже после разметки.
Разметка данныхВиды разметки изображений: обзор
От выбора вида разметки зависит и стоимость датасета, и то, чему в итоге научится модель. Разбираем основные виды аннотаций, их плюсы и ограничения и даём простую схему выбора.
Разметка данныхФорматы аннотаций: COCO, YOLO, Pascal VOC и другие
Формат аннотаций кажется технической мелочью, пока обучение не падает с ошибкой или рамки не съезжают на пол-кадра. Объясняем, как устроены популярные форматы, чем отличаются и как безопасно конвертировать.