Syntidata
Главная / Блог / Разметка данных / Правила разметки ограничивающих рамок

Правила разметки ограничивающих рамок

Разметка данных

Рамки кажутся простейшей разметкой, но именно несогласованность правил делает датасет шумным: один разметчик рисует вплотную, другой с запасом. Собрали правила, которые мы используем сами и рекомендуем заказчикам.

Правила разметки ограничивающих рамок

Почему правила важнее инструмента

Если попросить десять человек обвести один и тот же предмет рамкой, получится десять немного разных прямоугольников. Различия в пару пикселей кажутся мелочью, но для детектора это шум в целевой переменной. Модель пытается выучить среднее, а метрики вроде IoU при пороге 0,75 и выше начинают зависеть от случайных предпочтений разметчика. Для мелких объектов, где рамка занимает 20 на 20 пикселей, смещение на два пикселя уже снижает IoU примерно на 20 процентов.

Поэтому ключ к хорошему датасету, не программа для разметки, а набор однозначных правил, которые разметчик может применять, не раздумывая. Мы рекомендуем фиксировать их в письменной инструкции с примерами правильной и неправильной разметки. Как её составить, см. материал как написать инструкцию для разметчиков. Здесь разберём содержание правил для рамок.

Плотность прилегания

Базовое правило: рамка проходит по внешней границе видимой части объекта и касается её по четырём сторонам. Не оставляйте воздуха вокруг и не обрезайте края.

Спорные места, которые стоит решить заранее:

  • Тени. Обычно тень не входит в рамку. Исключение: задача про тени сама по себе.
  • Отражения. Отражение в зеркале или воде не размечается отдельным объектом, если иное не оговорено.
  • Тонкие выступающие части. Антенны, ручки, провода: входят ли они в рамку? Если они определяют класс (антенна у автомобиля, не нужна, ручка чашки нужна), пропишите это явно.
  • Прозрачные объекты. Стекло и пластик размечаются по видимому краю предмета, а не по краю содержимого.
  • Размытые края. Для расфокусированных объектов рамка ставится по центру переходной зоны.

Пиксельный допуск тоже стоит указать. Для обычных объектов нормально отклонение до 1-2 пикселей, для мелких до одного. Выборочная проверка нескольких процентов размеченных кадров покажет, соблюдается ли он.

Перекрытия и частично закрытые объекты

Это самый частый источник споров. Есть два принципиальных подхода.

  1. Размечать только видимую часть. Рамка охватывает то, что видно в кадре. Просто и однозначно, хорошо подходит для большинства практических задач, где важен факт обнаружения.
  2. Размечать полный объект, включая скрытую часть (amodal). Рамка охватывает предполагаемую границу целого объекта. Полезно для подсчёта, захвата роботом и отслеживания, но субъективно: разметчик должен домысливать форму.

Выбор нужно зафиксировать на старте и не менять посреди проекта. Для синтетических данных ситуация проще: мы знаем полную геометрию и видимую часть и можем выдавать оба варианта, а также долю видимости. Это позволяет позднее отфильтровать кадры, где объект закрыт на 90 процентов и обучение на нём бесполезно или вредно.

Порог видимости

Практичное правило: если видно менее 10-20 процентов объекта, он не размечается или помечается флагом «трудный случай» (difficult / ignore). Модель не обязана находить то, что человек не смог бы опознать. Без порога датасет заполняется пограничными случаями, где ответ зависит от настроения разметчика. Конкретное значение выбирают по задаче: для подсчёта людей в толпе порог ниже, для контроля качества деталей выше.

Обрезанные объекты на краю кадра

Объект частично выходит за границу изображения. Рамка проводится до края кадра, а не за него. Координаты не должны быть отрицательными или превышать размеры изображения, иначе часть библиотек для обучения отбросит такую аннотацию или упадёт с ошибкой. Если объект виден меньше установленного порога, он пропускается.

Некоторые команды помечают такие объекты специальным флагом truncated. Это удобно при анализе ошибок модели: можно отдельно посмотреть, как она ведёт себя на обрезанных объектах, и при необходимости добавить в датасет больше таких примеров.

Мелкие объекты

Для мелких объектов правила жёстче. Минимальный размер, ниже которого объект не размечается, зависит от модели: многие детекторы плохо работают с рамками меньше 8-10 пикселей по стороне. Вот типичные решения:

  • установить нижний порог по площади, например 100 пикселей, и игнорировать всё, что меньше;
  • размечать мелкие объекты, но исключить из расчёта метрик и обучения через флаг ignore;
  • увеличить разрешение входного изображения или нарезать кадр на фрагменты, если мелкие объекты важны.

Если проигнорировать эту проблему, детектор получает противоречивый сигнал: на одном кадре крошечный объект размечен, на другом такой же нет. Доля ложных срабатываний и пропусков растёт, и разобраться в причинах трудно.

Группы и плотные скопления

Что делать с толпой, стопкой труб или сотнями болтов в ящике? Варианты:

  1. Размечать каждый экземпляр отдельно. Это правильно, если экземпляры различимы и их нужно считать. Затратно: на кадр может приходиться сотни рамок.
  2. Размечать группу одной рамкой с меткой crowd. Подходит, когда отдельные экземпляры неразличимы, а важен лишь факт наличия. Форматы вроде COCO поддерживают признак iscrowd.
  3. Комбинировать: передний план размечать поштучно, дальний фон помечать как область игнорирования.

Если задача про подсчёт, выбирайте первый вариант и закладывайте на него время. Для рендера синтетических сцен плотные скопления, одна из сильных сторон подхода: каждый экземпляр получает собственную рамку без дополнительных затрат. Подробнее о задачах такого типа в статье про распознавание товаров на полке.

Классы, атрибуты и неоднозначные случаи

Рамка без правильного класса бесполезна. Список классов должен быть закрытым и непротиворечивым: каждый объект относится ровно к одному классу, а пограничные случаи описаны отдельно. Например: «пустая упаковка относится к классу упаковка, а не к товару». Для спорных примеров включайте в инструкцию галерею с пометкой «так размечаем» и «так не размечаем».

Помимо класса, часто фиксируют атрибуты: truncated, occluded, difficult, цвет, состояние. Они не усложняют разметку заметно, но существенно облегчают анализ. Не добавляйте больше 3-5 атрибутов на объект, иначе скорость падает и ошибки множатся.

Таблица типовых решений

СитуацияПравилоКомментарий
Тень объектане включатьисключение: специальные задачи
Перекрытый объектвидимая часть, порог 10-20 процентовamodal только по явному требованию
Обрезка по краю кадрарамка до границы изображенияможно ставить флаг truncated
Объект меньше порогане размечать или ignoreпорог зависит от модели
Плотная группапоштучно либо crowdзависит от цели: подсчёт или наличие
Тонкие выступающие частипо определению классапрописать явно в инструкции

Контроль и обратная связь

Даже идеальные правила нарушаются. Поэтому нужен процесс проверки: выборочный просмотр 5-10 процентов кадров, расчёт IoU между рамками двух независимых разметчиков на одном контрольном наборе, разбор расхождений и обновление инструкции. Методы описаны в статье про контроль качества разметки. Если средний IoU между разметчиками ниже 0,85, проблема, скорее всего, в правилах, а не в людях.

Хорошая инструкция, это та, после которой два незнакомых друг с другом разметчика рисуют практически одинаковые рамки.

Примеры формулировок для инструкции

Правила должны быть короткими и проверяемыми. Вот образцы формулировок, которые мы используем в инструкциях:

  • «Рамка касается крайних видимых пикселей объекта с четырёх сторон, зазор не более одного пикселя».
  • «Если видно меньше 15 процентов площади объекта, он не размечается».
  • «Объекты шириной или высотой менее 10 пикселей получают метку ignore».
  • «Тень, отражение и подпись на упаковке в рамку не входят, если они не являются частью класса».
  • «При сомнении между двумя классами выбираем более общий и ставим флаг difficult».

К каждому правилу прилагается минимум два изображения: как правильно и как неправильно. Такой формат снижает число вопросов к руководителю проекта в несколько раз, а новый разметчик выходит на стабильное качество за первый день, а не за неделю.

Что делать, когда правило не работает

Иногда правило, удобное в теории, на практике порождает много спорных случаев. Признак: один и тот же вопрос задают три разных разметчика за день. В этом случае правило нужно уточнить, добавить пример и пересмотреть уже размеченные кадры, затронутые изменением. Ведите журнал изменений инструкции с пометкой, с какого кадра правило вступило в силу, иначе потом невозможно понять, почему часть датасета размечена иначе.

Как это работает в синтетике

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

Если вы готовите датасет для детекции и хотите заранее согласовать правила рамок под свою задачу, напишите на [email protected]. Мы пришлём пример с несколькими вариантами разметки на небольшой выборке.


Читайте также