Представляем Label Studio, швейцарский армейский нож для маркировки данных

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

Я сам столкнулся с нехваткой инструментов, когда работал на одном из предприятий над проектом личного виртуального помощника, которым воспользовались около 20 миллионов человек. Наша команда постоянно искала способы улучшить качество, обрабатывать крайние случаи и проверять гипотезы. Обычно для этого требовалось работать с неструктурированными данными, маркировать их, визуально изучать и изучать прогнозы моделей. Мы бы взломали и склеили набор внутренних инструментов с тоннами шаблонного кода, который работал бы один раз. Излишне говорить, что совместное использование этих инструментов или попытка их расширения или встраивания в основное приложение было бы почти невозможно.

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

Мы с парой моих друзей задумались, можем ли мы сделать лучше? Так родилась Label Studio. Он предназначен для экономии времени на создание прототипов / экспериментов для отдельных специалистов по машинному обучению, а также для сокращения жизненного цикла выпуска продуктов машинного обучения для технических групп.

Некоторые из принципов, которым мы следовали, работая над этим:

  • Делаем это просто. Отсутствие сложных конфигураций и простота интеграции в конвейеры машинного обучения. Label Studio можно использовать в разных местах, в зависимости от сценария использования:

  • Быстро настраивается для многих типов данных. Инструмент будет готов за 10 минут. Должен быть простой способ переключаться между маркировкой текста, аудио или изображений или даже аннотированием всех трех типов одновременно.

  • Интеграция с машинным обучением. Он должен быть в состоянии интегрироваться со всем множеством фреймворков и моделей машинного обучения. Существует множество приложений машинного обучения с различными ограничениями, и Label Studio должна быть достаточно гибкой, чтобы обрабатывать их и помогать, а не усложнять.

Если это звучит забавно, давайте установим его и приступим к работе!

Давайте начнем

Запустить Label Studio очень просто:

pip install label-studio
label-studio start my_project --init

Он автоматически открывает веб-приложение в вашем браузере. Просто настройте, что вы хотите маркировать и как. Вот и все.

Многие существующие фреймворки маркировки принимают только один тип данных, и каждый раз изучать новое приложение становится утомительно. Label Studio сразу после установки работает с текстами, изображениями, аудио, документами HTML (называемыми Компоненты объекта), а также любые мыслимые комбинации задач аннотации, такие как классификация, регрессия, тегирование, охват , попарное сравнение, обнаружение объекта, сегментация и т. д. (определяется в компонентах аннотации).

Давайте посмотрим, как настроить сервер Label Studio для вашего варианта использования.

Настройка интерфейса маркировки

Интерфейс Label Studio не является заранее созданным. Вместо этого вы создаете ее сами, в том же смысле, в каком вы создаете веб-страницу. Но вместо использования HTML-тегов вы получаете компоненты на основе jsx. Не бойся! Вам не нужно писать JavaScript, если вы этого не хотите. Компоненты умеют подключаться в зависимости от их типа и имени. Вот пример классификации изображений, в которой Выбор (компонент аннотации) подключается к изображению (компоненту объекта) путем указания его имени с помощью toName атрибут.

Обратите внимание на переменную со знаком доллара $ url. Он указывает, что значение для этого компонента исходит из вашего набора данных, он ожидает, что запись с ключом url предоставит URL-адрес изображения. Перейдите на страницу настройки и поэкспериментируйте с примерами, которые у нас там есть. Или, если вы еще не запускаете его локально, вы можете проверить игровую площадку.

В настоящее время существует около 20 компонентов, охватывающих различные типы маркировки, например Bbox для изображений или NER для текста. Полный список можно найти на сайте.

Импорт и экспорт данных

После настройки того, как должны выглядеть интерфейсы маркировки, вы можете импортировать свои данные. Веб-импорт поддерживает несколько форматов: JSON, CSV, TSV и архивы, состоящие из них. Каждая точка данных, которую вы хотите пометить, называется задачей. Если ваша задача содержит изображения, вы должны разместить их где-нибудь и предоставить URL-адреса в ключах данных, таких как {"url": "https://labelstud.io/opossum.jpg"} в приведенном выше примере. Затем задача загружается в интерфейс маркировки и ждет, пока вы ее пометите.

Экспорт осуществляется с помощью label-studio-converter. Это библиотека, которая может принимать внутренний формат на основе JSON Label Studio и выводить либо некоторые универсальные (JSON, CSV, TSV), либо специфические для модели форматы, такие как CONLL для текстовых тегов или Pascal VOC или COCO для моделей компьютерного зрения.

Основное хранилище - простые файлы. Чтобы сделать интеграцию очень простой, вам нужно только поместить данные в формате, который может анализировать Label Studio. Подробнее о форматах можно узнать на сайте.

Хорошо! Теперь у вас есть данные, вы знаете, как маркировать и как экспортировать, давайте рассмотрим несколько вариантов использования, как вы можете интегрировать Label Studio в свои конвейеры.

Возможности и варианты использования

Label Studio - это, прежде всего, инструмент маркировки данных, который делает его очень удобным для всех основных действий по маркировке данных, таких как маркировка всего набора данных или создание меток достоверности для проверки. Помимо этих основ, здесь есть еще несколько вариантов использования, которые уникальны по своей функциональности.

Встроить в свое приложение

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

Уникальной особенностью Label Studio является то, что он представляет собой интерфейсный пакет NPM, который вы можете включать в свои приложения. Вот пример:

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

Интеграция машинного обучения, подключение модели

Вы можете легко подключить свой любимый фреймворк машинного обучения к Label Studio с помощью SDK.

Это дает вам возможность использовать:

  • Автоматическая маркировка. Используйте прогнозы модели для маркировки данных. Это помогает быстрее комментировать задачи за счет предварительной маркировки, а также использования псевдо-маркировки для дальнейшего обучения.
  • Непрерывное обучение. Постоянно комментируйте и обучайте модель на основе потока данных, возможно, с изменением целей аннотации.
  • Активное обучение. Внедрите методы для более разумного выбора задач, которые нужно пометить.
  • Служба прогнозирования. Мгновенно создавайте и развертывайте службу прогнозирования REST API.

Чтобы узнать больше о том, как начать работу, посмотрите пример из README.

Сравнение прогнозов

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

И еще более

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

Отслеживание ошибок прогнозирования модели

Всегда ли можно доверять предсказаниям своей модели? Как понять, когда будет подходящее время для переобучения и передислокации модели? Вы можете интегрировать Label Studio в конвейер мониторинга модели. И, как в приведенном выше примере, вы можете показать несколько версий прогнозов вашей модели и проверить, не снизилось ли качество прогноза.

Человек в конвейере прогнозирования (цикла)

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

Собирайте результаты от нескольких человек

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

Добавочная маркировка набора данных

После развертывания модели в производственной среде или во время ее разработки вы можете понять, что добавление меток для еще одного атрибута может улучшить результаты модели. Это может быть гипотеза, которую вы хотите проверить, или предопределенная стратегия - начните с небольшого количества атрибутов и со временем добавляйте больше. Вы можете использовать Label Studio для инкрементной маркировки: изменять конфигурацию маркировки и добавлять новые классы на ходу.

Следующие шаги

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

Мы всегда будем рады узнать больше о возможных сценариях использования человек в цикле и с нетерпением ждем возможности их реализации в Label Studio. Если у вас есть предложения и / или отзывы, поделитесь ими с нами, открыв вопрос на GitHub или присоединившись к нашему растущему сообществу Slack!

Удачной маркировки!