Мнение большинства для разметки данных в задачах компьютерного зрения
Многие прикладные задачи из области компьютерного зрения требуют от разработчиков создания собственных наборов данных, которые можно своевременно обновлять и адаптировать: увеличивать количество классов и сэмплов или делать сэмплы более разнородными по тем или иным признакам. Кроме того, для некоторых задач необходимы доменные и достаточно специфичные данные. Например в SberDevices, для реализации управления умными устройствами с помощью жестов, необходим датасет, на изображениях которого люди показывают жесты перед камерой; для бьютификации в Jazz — фотографии людей на веб-камеру или селфи. Необходимость постоянно создавать и поддерживать собственные наборы данных требует автоматизации их сбора и разметки.
Эта статья посвящена методам агрегации разметки в задачах компьютерного зрения (Computer Vision, далее — CV). Часто для разметки больших наборов данных не нужна особая экспертиза, и их принято размечать на краудсорсинг-платформах. Низкий порог входа на подобные платформы в качестве исполнителя является причиной низкого качества получаемой разметки. Поэтому в краудсорсинге популярен подход, основанный на «перекрытии» — каждый сэмпл данных размечают несколько разметчиков. Такой метод позволяет получить несколько версий требуемой разметки и более уверенный результат после усреднения результатов, полученных от разных разметчиков. Для того, чтобы привести несколько разметок к одной, используются методы агрегации. Например, для задачи классификации в большинстве краудсорсинг-платформ реализована функция мнения большинства. Однако, для задач с более сложной разметкой, таких как детекция и сегментация, все не так очевидно, и подобие функции «мнения большинства» приходится реализовывать самостоятельно. Эта статья посвящена методу, с помощью которого можно получить разметку высокого качества путем агрегации нескольких ответов пользователей, учитывая то, что не все из них верные. Ту же информацию, но в формате видео, можно получить из доклада в рамках DataFest 2023.
Наш опыт в разметке данных
За последний год мы выложили в открытый доступ 3 набора данных:
HaGRID: самый большой датасет для задачи распознавания жестов, размечен обрамляющими прямоугольниками (bounding boxes, далее — боксы);
EasyPortrait: датасет для задач портретной сегментации и фейс парсинга, размечен сегментационными масками;
Slovo: самый разнородный по субъектам датасет для распознавания русского жестового языка, размечен временными интервалами.
Каждый из наборов данных был собран и размечен на краудсорсинг-платформах с помощью одного и того же процесса: сбор данных → проверка качества сбора (валидация) → разметка → проверка качества разметки. В данной статье мы затронем только последний этап.
Введение в CV-разметку на краудсорсинг-платформах
В большинстве краудсорсинг-платформ реализована функциональность для разметки изображений боксами, сегментационными масками (с помощью полигонов), ключевыми точками, а для разметки видео — временными интервалами.
Для того, чтобы наиболее четко понимать необходимость использования перекрытия в разметке, опишем природу основных ошибок разметчиков. Помимо того, что разметчики на краудсорсинг-платформах не являются экспертами в той или иной задаче, часто они еще и не мотивированы тратить много времени на чтение инструкции к разметке и на саму разметку. Если первое влечет за собой ошибки из-за незнания области, то второе — ошибки из-за отсутствия мотивации. При создании методов агрегации необходим анализ основных ошибок разметчиков. Для наглядности приведем частые ошибки при разметке HaGRID, EasyPortrait и Slovo:
Разметка боксами: неверное местоположение, неверная метка, пропущенный бокс, невалидная разметка;
Разметка временными интервалами: те же ошибки, что и в боксах, кроме последней — часто два события могут быть размечены одним интервалом;
Разметка сегментационными масками: те же ошибки что и в боксах, кроме первой — самой частой ошибкой является слишком грубая маска (нарисованная с помощью недостаточного количества точек полигона).
Методы контроля качества
Ошибки при разметке — основная проблема краудсорсинг-платформ, которую они пытаются решить с помощью внедрения методов контроля качества. Контрольные задания, бан за быстрые ответы, допуск к основными заданиям только после прохождения экзамена и другие — все это, конечно, помогает снизить количество неверно выполненных заданий, однако не решает проблему в целом. Отметим, что возможность добавить контрольные задания для некоторых типов разметки в компьютерном зрении не всегда реализована на краудсорсинг-платформах. С учетом того, что большинство методов контроля качества разметчики могут специально обойти (например, бан за быстрый ответ можно с легкостью избежать, просто задержавшись на задании чуть больше времени), необходимость дополнительной постобработки, такой как методы агрегации, возрастает.
Выбор перекрытия
Прежде чем говорить о методах агрегации, расскажем о выборе размера перекрытия. Стандартным значением для множества задач считается перекрытие, равное 3 (три человека размечают один и тот же сэмпл данных), так как двух разметок недостаточно — в том случае, когда они не совпадают, уверенность в финальной разметке равна 50%. Такая уверенность равноценна случайному угадыванию и недостаточна для получения качественной разметки. Также, на краудсорсинг-платформах часто используется динамическое перекрытие: в том случае, когда агрегация n разметок не достигает предварительно выбранного порога уверенности, перекрытие увеличивается на 1 (еще один человек размечает сэмпл). Такая схема позволяет минимизировать перекрытие, тем самым уменьшая затраты временных и финансовых ресурсов.
Для некоторых задач оптимальным вариантом будет перекрытие, равное 1, с последующей модерацией полученной разметки. В этом случае особое внимание стоит обратить на надежность модераторов, иначе неверная разметка может быть принята. Кроме того, даже при выборе идеальных модераторов остается проблема человеческого фактора — люди имеют свойство уставать при монотонной работе и начинают допускать ошибки. Стоит отметить, что подобный вариант может потребовать большого количества ресурсов при частой переразметке.
Базовые методы агрегации разметки
В данном разделе ответим на вопрос: «зачем придумывать свой метод агрегации, если можно сделать вывод о совпадении разметки посредством расчета метрики качества IoU (Intersection over Union)?». Методы, основанные только на расчете метрики IoU, мы называем базовыми и выделяем две их модификации:
Вычисляем метрику на разметке для каждого сэмпла, сравниваем по подобранному порогу и отклоняем ту разметку, которая не прошла по условию (или отправляем ее на доразметку, т. е. на разметку еще одному человеку);
Если разметка не прошла по порогу — пробуем проверить комбинации разметки по тому же порогу (если изначально у нас n разметок и они не прошли по порогу — проверяем комбинации из k разметок, где k / n > confidence, confidence [0, 1] — значение уверенности, чем выше confidence, тем выше уверенность в разметке).
Разметку, которая прошла по условиям, можно агрегировать с помощью усреднения.
Проблем у базовых методов несколько:
Недостаточное количество воздействий на качество конечной разметки, которых тут всего 2: первое — выбор порога для метрики IoU, второе — выбор значения уверенности во второй модификации. При увеличении порога и значения уверенности качество итоговой разметки будет расти (а доля агрегированных результатов стремительно падать);
Огромные затраты финансовых и временных ресурсов: доразметка требует времени, а за отклоненную окончательно разметку следует заплатить, так как нет знания о том, кто из разметчиков ошибся;
Некачественная разметка, приведем несколько примеров:
если один из разметчиков случайно отметил маленький бокс / маленький интервал, IoU такой разметки сильно не пострадает, а итоговый усредненный объект съедет в сторону случайно отмеченного объекта;
IoU никак не зависит от указанных разметчиками меток → ошибки в метках никак не будут обработаны;
если один сэмпл требует разметки нескольких объектов: учитывая тот факт, что метки могут быть перепутаны (или несколько объектов принадлежат одному классу), возникают сложности с тем, чтобы в каждой из разметок найти ту часть, которая соответствует одному и тому же объекту.
Для обработки перечисленных случаев базовые методы необходимо дополнить эвристиками, в чем, по большей части, и заключаются наши методы агрегации.
Наши методы агрегации разметки
Мы реализовали 2 ключевых метода агрегации:
Hard Aggregation: метод, позволяющий добиться максимально качественной разметки, путем ее проверки на консистентность c последующим усреднением в лучшем случае. Минимальное перекрытие для этого метода — 3. Отметим, что динамическое перекрытие тут неприменимо, так как если n разметок не консистентны, n + 1 разметок останутся неконсистентными;
Soft Aggregation: метод, цель которого привести не консистентную разметку к консистентной, проверить ее на консистентность с помощью hard aggregation и усреднить. Для этого метода необходимо как минимум 4 разметки, и он поддерживает динамическое перекрытие. Используется в том случае, когда не сработал метод Hard Aggregation.
Посмотрим на визуализацию двух методов в рамках различных типов разметки:
Боксы (HaGRID)
Hard Aggregation: реализация состоит из таких проверок на консистентность, как:
1. проверка на совпадение количества боксов в каждой разметке в целом;
2. проверка на совпадение количества боксов в зависимости от локации (предварительно боксы делятся на группы с помощью выбранного метода кластеризации);
3. проверка на совпадение меток;
4. проверка по порогу метрики IoU.
При прохождении всех условий усредняем разметку, иначе — отклоняем и переходим к Soft Aggregation;
Soft Aggregation: реализация состоит из таких модификаций неконсистентной разметки, как:
1. удаление слишком маленьких боксов и дубликатов;
2. удаление тех боксов, которые не попали ни в какую из групп после применения метода кластеризации (группой считается скопление k боксов в одной локации, где k / n > confidence, n — перекрытие);
3. заменяем метки меньшинства на метки большинства (большинство также определяем по значению уверенности, например, большинством могут считать 70% боксов);
4. добавляем пропущенные боксы (если в группе k < n боксов, то усредняем k боксов и добавляем полученный бокс в группу пока группа не станет целостной);
5. проверяем разметку на консистентность с помощью Hard Aggregation;
6. в худшем случае проверяем на консистентность комбинации из k, где k / n > confidence.
Временные интервалы (Slovo)
Hard Aggregation: реализация идентичная, а метод кластеризации и метрика IoU реализованы в одномерном варианте.
Soft Aggregation: то же самое и с теми же поправками на одномерность.
Отметим, что данные методы агрегации также применимы к разметке аудио временными интервалами.
Сегментационные маски (EasyPortrait)
Так как EasyPortrait состоит из 9 классов с пересечением (например, маска кожи пересекается с маской человека), разметка на краудсорсинг-платформе была декомпозирована — каждый пул соответствовал разметке одного класса. Это избавляет нас от необходимости проверять разметку на метки классов. Кроме того, проверять на количество масок тоже не нужно — если, например, один из разметчиков разметил губы двумя полигонами, которые покрывают всю поверхность губ, а другие сделали это с помощью одного полигона, такую разметку нельзя считать неконсистентной — при усреднении масок уверенность каждого пикселя будет высокой. Поэтому и Hard Aggregation, и Soft Aggregation были упрощены вплоть до базовых методов:
Hard Aggregation: реализован как первая модификация базового метода (проверяем разметку на качество с помощью метрики IoU, сравнивая ее с подобранным порогом);
Планы на будущее
Так как изначальной целью наших методов агрегации являлась необходимость получить качественную разметку для датасетов HaGRID, EasyPortrait и Slovo, методы имеют определенную специфику — они основаны на обработке ошибок, присущих разметке этих данных. Для создания наиболее обобщенных методов мы решили начать работу над их модификацией. После, планируем обернуть методы в фреймворк, который можно будет легко установить как python-библиотеку, предоставить разметку с перекрытием (причем не только с краудсорсинг-платформ, но и полученных с выходов нейронных сетей), установить значения для гиперпараметров (например, выбрать порог для метрики IoU, выбрать метод кластеризации и т. д.) и получить на выходе качественную разметку. Мы верим, что это поможет размечать данные с минимальными затратами временных и денежных ресурсов не только нам, но и нашим коллегам из других команд в SberDevices и комьюнити в целом.
Если у Вас есть опыт в разметке данных CV на краудсорсинг-платформах и Вы бы хотели в будущем пользоваться фреймворком — можете описать в комментариях Вашу задачу и ее особенность. Мы постараемся это учесть при реализации фреймворка.
Ссылки
На github можно посмотреть код обучения моделей на наборах данных и веса предобученных моделей, на arXiv и habr — узнать о процессе создания датасетов, на kaggle — можно скачать наборы данных.
Также мы делимся всеми релизами и идеями в Telegram-канале нашей команды RnD CV, подписывайтесь!