Многие прикладные задачи из области компьютерного зрения требуют от разработчиков создания собственных наборов данных, которые можно своевременно обновлять и адаптировать: увеличивать количество классов и сэмплов или делать сэмплы более разнородными по тем или иным признакам. Кроме того, для некоторых задач необходимы доменные и достаточно специфичные данные. Например в SberDevices, для реализации управления умными устройствами с помощью жестов, необходим датасет, на изображениях которого люди показывают жесты перед камерой; для бьютификации в Jazz — фотографии людей на веб-камеру или селфи. Необходимость постоянно создавать и поддерживать собственные наборы данных требует автоматизации их сбора и разметки.

Эта статья посвящена методам агрегации разметки в задачах компьютерного зрения (Computer Vision, далее — CV). Часто для разметки больших наборов данных не нужна особая экспертиза, и их принято размечать на краудсорсинг-платформах. Низкий порог входа на подобные платформы в качестве исполнителя является причиной низкого качества получаемой разметки. Поэтому в краудсорсинге популярен подход, основанный на «перекрытии» — каждый сэмпл данных размечают несколько разметчиков. Такой метод позволяет получить несколько версий требуемой разметки и более уверенный результат после усреднения результатов, полученных от разных разметчиков. Для того, чтобы привести несколько разметок к одной, используются методы агрегации. Например, для задачи классификации в большинстве краудсорсинг-платформ реализована функция мнения большинства. Однако, для задач с более сложной разметкой, таких как детекция и сегментация, все не так очевидно, и подобие функции «мнения большинства» приходится реализовывать самостоятельно. Эта статья посвящена методу, с помощью которого можно получить разметку высокого качества путем агрегации нескольких ответов пользователей, учитывая то, что не все из них верные. Ту же информацию, но в формате видео, можно получить из доклада в рамках DataFest 2023.

Наш опыт в разметке данных 

За последний год мы выложили в открытый доступ 3 набора данных: 

  • HaGRID: самый большой датасет для задачи распознавания жестов, размечен обрамляющими прямоугольниками (bounding boxes, далее — боксы);

  • EasyPortrait: датасет для задач портретной сегментации и фейс парсинга, размечен сегментационными масками;

  • Slovo: самый разнородный по субъектам датасет для распознавания русского жестового языка, размечен временными интервалами.

Каждый из наборов данных был собран и размечен на краудсорсинг-платформах с помощью одного и того же процесса: сбор данных → проверка качества сбора (валидация) → разметка → проверка качества разметки. В данной статье мы затронем только последний этап.

Введение в CV-разметку на краудсорсинг-платформах

В большинстве краудсорсинг-платформ реализована функциональность для разметки изображений боксами, сегментационными масками (с помощью полигонов), ключевыми точками, а для разметки видео — временными интервалами. 

Для того, чтобы наиболее четко понимать необходимость использования перекрытия в разметке, опишем природу основных ошибок разметчиков. Помимо того, что разметчики на краудсорсинг-платформах не являются экспертами в той или иной задаче, часто они еще и не мотивированы тратить много времени на чтение инструкции к разметке и на саму разметку. Если первое влечет за собой ошибки из-за незнания области, то второе — ошибки из-за отсутствия мотивации. При создании методов агрегации необходим анализ основных ошибок разметчиков. Для наглядности приведем частые ошибки при разметке HaGRID, EasyPortrait и Slovo:

  1. Разметка боксами: неверное местоположение, неверная метка, пропущенный бокс, невалидная разметка;

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

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

Методы контроля качества

Ошибки при разметке — основная проблема краудсорсинг-платформ, которую они пытаются решить с помощью внедрения методов контроля качества. Контрольные задания, бан за быстрые ответы, допуск к основными заданиям только после прохождения экзамена и другие — все это, конечно, помогает снизить количество неверно выполненных заданий, однако не решает проблему в целом. Отметим, что возможность добавить контрольные задания для некоторых типов разметки в компьютерном зрении не всегда реализована на краудсорсинг-платформах. С учетом того, что большинство методов контроля качества разметчики могут специально обойти (например, бан за быстрый ответ можно с легкостью избежать, просто задержавшись на задании чуть больше времени), необходимость дополнительной постобработки, такой как методы агрегации, возрастает.

Выбор перекрытия

Прежде чем говорить о методах агрегации, расскажем о выборе размера перекрытия. Стандартным значением для множества задач считается перекрытие, равное 3 (три человека размечают один и тот же сэмпл данных), так как двух разметок недостаточно — в том случае, когда они не совпадают, уверенность в финальной разметке равна 50%. Такая уверенность равноценна случайному угадыванию и недостаточна для получения качественной разметки. Также, на краудсорсинг-платформах часто используется динамическое перекрытие: в том случае, когда агрегация n разметок не достигает предварительно выбранного порога уверенности, перекрытие увеличивается на 1 (еще один человек размечает сэмпл). Такая схема позволяет минимизировать перекрытие, тем самым уменьшая затраты временных и финансовых ресурсов. 

Для некоторых задач оптимальным вариантом будет перекрытие, равное 1, с последующей модерацией полученной разметки. В этом случае особое внимание стоит обратить на надежность модераторов, иначе неверная разметка может быть принята. Кроме того, даже при выборе идеальных модераторов остается проблема человеческого фактора — люди имеют свойство уставать при монотонной работе и начинают допускать ошибки. Стоит отметить, что подобный вариант может потребовать большого количества ресурсов при частой переразметке.

Базовые методы агрегации разметки

В данном разделе ответим на вопрос: «зачем придумывать свой метод агрегации, если можно сделать вывод о совпадении разметки посредством расчета метрики качества IoU (Intersection over Union)?». Методы, основанные только на расчете метрики IoU, мы называем базовыми и выделяем две их модификации:

  1. Вычисляем метрику на разметке для каждого сэмпла, сравниваем по подобранному порогу и отклоняем ту разметку, которая не прошла по условию (или отправляем ее на доразметку, т. е. на разметку еще одному человеку);

  2. Если разметка не прошла по порогу — пробуем проверить комбинации разметки по тому же порогу (если изначально у нас n разметок и они не прошли по порогу — проверяем комбинации из k разметок, где k / n > confidence, confidence [0, 1] — значение уверенности, чем выше confidence, тем выше уверенность в разметке).

Разметку, которая прошла по условиям, можно агрегировать с помощью усреднения.

Проблем у базовых методов несколько:

  1. Недостаточное количество воздействий на качество конечной разметки, которых тут всего 2: первое — выбор порога для метрики IoU, второе — выбор значения уверенности во второй модификации. При увеличении порога и значения уверенности качество итоговой разметки будет расти (а доля агрегированных результатов стремительно падать);

  2. Огромные затраты финансовых и временных ресурсов: доразметка требует времени, а за отклоненную окончательно разметку следует заплатить, так как нет знания о том, кто из разметчиков ошибся;

  3. Некачественная разметка, приведем несколько примеров:

    • если один из разметчиков случайно отметил маленький бокс / маленький интервал, IoU такой разметки сильно не пострадает, а итоговый усредненный объект съедет в сторону случайно отмеченного объекта;

    • IoU никак не зависит от указанных разметчиками меток → ошибки в метках никак не будут обработаны;

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

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

Наши методы агрегации разметки

Мы реализовали 2 ключевых метода агрегации: 

  1. Hard Aggregation: метод, позволяющий добиться максимально качественной разметки, путем ее проверки на консистентность c последующим усреднением в лучшем случае. Минимальное перекрытие для этого метода — 3. Отметим, что динамическое перекрытие тут неприменимо, так как если n разметок не консистентны, n + 1 разметок останутся неконсистентными;

  2. 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, сравнивая ее с подобранным порогом);

  • Soft Aggregation: реализован как вторая модификация базового метода (проверяем комбинации разметки на качество с помощью метрики IoU). 

Планы на будущее

Так как изначальной целью наших методов агрегации являлась необходимость получить качественную разметку для датасетов HaGRID, EasyPortrait и Slovo, методы имеют определенную специфику — они основаны на обработке ошибок, присущих разметке этих данных. Для создания наиболее обобщенных методов мы решили начать работу над их модификацией. После, планируем обернуть методы в фреймворк, который можно будет легко установить как python-библиотеку, предоставить разметку с перекрытием (причем не только с краудсорсинг-платформ, но и полученных с выходов нейронных сетей), установить значения для гиперпараметров (например, выбрать порог для метрики IoU, выбрать метод кластеризации и т. д.) и получить на выходе качественную разметку. Мы верим, что это поможет размечать данные с минимальными затратами временных и денежных ресурсов не только нам, но и нашим коллегам из других команд в SberDevices и комьюнити в целом. 

Если у Вас есть опыт в разметке данных CV на краудсорсинг-платформах и Вы бы хотели в будущем пользоваться фреймворком — можете описать в комментариях Вашу задачу и ее особенность. Мы постараемся это учесть при реализации фреймворка.

Ссылки

На github можно посмотреть код обучения моделей на наборах данных и веса предобученных моделей, на arXiv и habr — узнать о процессе создания датасетов, на kaggle — можно скачать наборы данных.

Также мы делимся всеми релизами и идеями в Telegram-канале нашей команды RnD CV, подписывайтесь!

Комментарии (4)


  1. dimusoltsev
    13.07.2023 12:34

    А какие методы кластеризации использовали? Как алгоритм будет работать в том случае, когда объекты на картинках находятся очень близко друг к другу?


    1. karinakvanchiani Автор
      13.07.2023 12:34

      Изначально для агрегации боксов использовали MeanShift, для агрегации временных интервалов - DBSCAN. KMeans для задачи разметки HaGRID-а боксами не выбрали, так как количество кистей рук (то есть кластеров) на изображениях варьировалось от 1 до 2. Был вариант ориентироваться на количество боксов в каждой из разметок для выявления количества кластеров, однако это бы вносило больше хаоса в окончательный результат. На выбор метода кластеризации как раз повлияла специфика данного домена, а для фреймворка сделаем возможность выбирать метод кластеризации и не только.

      По второму вопросу: кажется, есть 2 варианта:
      1. использовать KMeans, где количество кластеров зависит от количества боксов в каждой из разметок (если разметки неконсистентны по количество боксов, то можно ориентироваться на confidence при выборе наиболее используемого)
      2. ориентироваться на метку класса, тем самым изначально отдельно обрабатывая боксы каждого из объектов


  1. Nataliszu
    13.07.2023 12:34

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


    1. karinakvanchiani Автор
      13.07.2023 12:34

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