Тематическое исследование пополнения набора данных о продуктах питания

Введение

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

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

Проект: набор данных о продуктах питания

Можем ли мы обогатить существующий набор данных и заставить алгоритм научиться распознавать новые функции?

Мы нашли на Kaggle следующий набор данных и быстро решили, что он идеально подходит для нашего проекта. Набор данных состоит из тысяч изображений разных типов, собранных с помощью MyFoodRepo, и выпущен под лицензией Creative Commons CC-BY-4.0. Вы можете проверить более подробную информацию об этих данных в официальном документе Food Recognition Benchmark.

Мы заметили, что продукты питания можно разделить на две основные категории: твердые и питьевые.

Кроме того, мы заметили, что некоторые продукты были… более аппетитными, чем другие.

Так можем ли мы обогатить этот набор данных этой дополнительной информацией, а затем создать алгоритм, который будет распознавать новые функции?

Ответ — да, и мы сделали это, используя Толоку и ClearML.

Как аннотировать данные?

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

Первым шагом в проекте было создание интерфейса и подробной инструкции. В данном случае мы хотели задать два вопроса:

  • объективный вопрос: о типе пищи, твердой или жидкой
  • субъективный вопрос: о том, находит ли человек пищу аппетитной или нет

Мы использовали интерфейс, который вы можете видеть ниже:

Кроме того, в инструкции мы четко указали, что такое твердая и жидкая пища, привели примеры и предоставили крайние случаи.

Когда инструкция и интерфейс были готовы, нам нужно было пригласить исполнителей для нашего проекта. Аннотаторы Толоки есть по всему миру, поэтому нам пришлось тщательно выбирать, кто сможет принять участие в нашем проекте.

Поскольку инструкции, которые мы давали, были написаны на английском языке, мы решили пригласить только носителей английского языка и проверить, насколько хорошо они их понимают, с помощью экзамена. Экзамен состоял из 10 заданий, на которых мы проверяли ответ на наш первый вопрос о типе питания. У нас было 5 твердых тел, 4 жидкости и 1 пограничный случай, который следует пометить как прочее. Нам требовалось 100% баллов на экзамене, чтобы войти в проект аннотации.

На картинке ниже показано распределение ответов, данных людьми, принимавшими участие в экзамене.

Если вы внимательно посмотрите на последнюю запись, вы заметите, что она имеет относительно низкий процент правильных ответов — всего 49% по сравнению с более чем 90% для остальных. Это крайний случай, который мы использовали, чтобы поймать исполнителей, которые не обращали внимания на чтение инструкций. Последнее изображение состояло из различных видов пищи, включая жидкие и твердые вещества, поэтому оно должно было быть помечено как «другое».

К счастью, мы отфильтровали людей, которые ответили на этот вопрос неправильно.

Следующие меры, которые мы реализовали для контроля качества аннотаций, заключались в использовании:

  • правило быстрого реагирования,
  • перекрывать,
  • и контрольные задания.

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

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

Мы также распределили контрольные задачи между обычными задачами. Это означает, что на каждые девять заданий, данных комментатору, будет одно контрольное задание, проверяющее правильность ответа, который он дает. Если комментатор давал неправильный ответ на контрольное задание, он удалялся из проекта.

В результате этой аннотации мы аннотировали 980 изображений, используя три уникальных аннотатора для каждого. Сбор результатов занял около 30 минут и стоил 6,54 доллара. У нас также было в общей сложности 105 человек, которые участвовали в проекте.

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

Управление данными

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

ClearML, платформа MLOps с открытым исходным кодом, предоставляет инструмент управления данными под названием ClearML Data, который легко интегрируется с остальной частью платформы.

После создания аннотированного набора данных мы просто регистрируем его в ClearML.

После регистрации данных в ClearML пользователи могут создавать и просматривать деревья родословных данных, добавлять предварительный просмотр данных, метаданные и даже графики, такие как распределение меток! Это означает, что вся информация инкапсулирована в одном объекте.

В нашем случае мы можем сохранить стоимость аннотации набора данных в виде метаданных. Мы также можем хранить другие параметры аннотации, такие как инструкции, языковые параметры или что-то еще! и прикрепите его к набору данных, чтобы мы могли обратиться к нему позже.

Данные отслеживаются и что дальше?

Итак, теперь данные отслеживаются и управляются, но что дальше, спросите вы.

Ну, вот и сила подключения к решению ClearML для управления экспериментами!

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

ClearML Data извлекает данные для вас из любого места, где они хранятся, и кэширует их, поэтому последовательные запуски не требуют повторной загрузки данных!

Подключение к решению для управления экспериментами ClearML позволяет пользователям пользоваться всеми функциями, которые оно может предложить, например, сравнение экспериментов, мы можем сравнить 2 эксперимента, единственная разница между которыми заключается в стоимости аннотаций, и фактически увидеть, как дополнительная плата за аннотации влияет на нашу модель. !

А поскольку мы сэкономили на затратах на метаданные, если мы автоматизировали задачи аннотирования с помощью SDK Toloka, мы фактически можем объединить Toloka и ClearML, чтобы автоматически запустить оптимизацию гиперпараметров для затрат на аннотации и выяснить, сколько мы действительно должны инвестировать в аннотации!

Повысьте уровень управления данными с помощью наборов гиперданных

Хотите получить больше от своего инструмента управления наборами данных? Ознакомьтесь с Гипер-наборами данных!

Гипер-наборы данных по сути хранят аннотации и метаданные в базе данных, поэтому их можно запрашивать во время обучения\тестирования!

Пользователи могут связывать запросы к данным, называемые DataViews, с экспериментом и их версиями! Использование Datviews позволяет вам легко получать только определенные подмножества вашего набора данных (или даже несколько наборов данных), когда это необходимо, что обеспечивает еще один уровень детализации управления данными.

DataViews и Hyper-Dataset отлично подходят, если вам нужна более качественная статистика ваших данных, лучший контроль над тем, какие данные передаются в ваши сети, и если вы работаете с подмножествами своих данных и хотите избежать дублирования данных (которое требует как хранения, так и управления).

Сводка

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

Кроме того, мы представили результаты наших экспериментов в виде вебинара и сохранили для вас записи (часть Толока, часть ClearML).

Считаете ли вы это руководство полезным для управления данными для ваших собственных проектов машинного обучения? Пожалуйста, оставьте комментарий ниже, если у вас есть какие-либо отзывы или вы хотите задать вопросы об этом проекте.

Также отдельное спасибо @victor.sonck и Erez Schnaider, которые являются соавторами этой статьи.

PS: я пишу статьи, которые простым и понятным языком объясняют основные концепции Data Science на Medium и aboutdatablog.com. Вы можете подписаться на мой список адресов электронной почты, чтобы получать уведомления каждый раз, когда я пишу новую статью. А если вы еще не являетесь участником Medium, вы можете присоединиться здесь.

Ниже приведены некоторые другие публикации, которые могут вам понравиться: