Устали искать идеальный набор данных для обучения ваших моделей машинного обучения? Часто в таких случаях оптимальное решение — это создать его самостоятельно.
Сегодня мы обсудим шесть шагов для создания наборов данных, которые идеально подойдут под ваши задачи, и разберем их на примере датасета, который мы собрали в Data Light.
Введение
Перед тем как приступить к пошаговой инструкции, давайте сначала определим, что такое датасет. Датасет — это обработанный и структурированный набор данных, основа для обучения моделей машинного обучения.
Вкратце процесс его создания можно описать так: нам необходимо иметь доступ к точным и релевантным данным, они могут быть как собранными, так и полученными от третьих лиц или из публичных источников.
После сбора первоначального набора данных начинается процесс создания структурированного датасета, он включает очистку и предобработку данных для удаления любых несоответствий или выбросов, влияющих на производительность модели. Затем набор данных аннотируется, чтобы предоставить полезную информацию для алгоритмов машинного обучения.
В статье мы не только подробно обсудим все этапы создания датасета, но и проиллюстрируем их примерами из создания одного из наших датасетов. Это набор данных из 30 000 видео-атак, который можно использовать для защиты от взлома систем распознавания лиц. Для этого проекта нам нужно было собрать изображения и видео реальных людей, при этом используются различные разрешения и ракурсы.
Теперь давайте перейдем к подробной инструкции и разберем, как собрать датасет:
Шаг 1: Определяемся с задачами
Понимание того, каких целей вы хотите добиться, поможет определить, какие данные стоит собирать.
В нашем случае задача состояла в разработке системы антиспуфинга для защиты от взлома систем распознавания лиц. Она должна была бы отличать “живых” пользователей от различных атак. Мы собирали датасет, состоящий из видео живых людей, снятых на телефон, и Replay атак.
Важно было понять, какие именно данные нам нужны для обучения системы: фотографии и видео людей в разных условиях, с разными выражениями лиц и под разными углами, а также примеры атак, имитирующих живых людей. В результате мы собрали почти 30 000 видео с исполнителями.
Шаг 2 и 3: Определяемся с источниками и собираем данные
Для создания полноценного набора данных обращайтесь к различным источникам и методам сбора. Чаще всего мы можем использовать:
Open-Source датасеты
Краудсорсинговые платформы
Веб-скрейпинг или парсинг
Ручной сбор данных (организация съемок, звукозаписи)
Поиск вендора или поставщика данных
Иногда мы можем комбинировать несколько из этих методов.
Open-Source датасеты
Open-source датасеты — это огромный ресурс для разработки и тестирования моделей. Платформы, такие как Kaggle и Hugging Face, предоставляют доступ к множеству разнообразных данных, которые могут быть использованы для решения различных задач. Hugging Face специализируется на NLP (Natural Language Processing) и предоставляет доступ к огромным коллекциям текстов, а также готовым моделям и инструментам для их обучения.
Краудсорсинговые платформы
Когда задача требует сбора большого количества данных, на помощь приходят краудсорсинговые платформы. Они позволяют привлекать большое количество людей для выполнения небольших задач. Например, если нужно собрать множество фотографий объектов или короткие тексты, такие задачи легко делегировать любому желающему.
Краудсорсинг особенно эффективен в случаях, когда задача не требует специализированных знаний или навыков. К примеру, сбор изображений или видео. На платформах, как Amazon Mechanical Turk, Toloka или даже через чаты исполнителей в социальных сетях можно быстро собрать необходимый объем данных. Обратите внимание: многие из популярных платформ для краудсорсинга даже не имеют возможности для сбора, они нацелены только на разметку данных.
Веб-скрейпинг или парсинг
Техники веб-скрейпинга включают сбор релевантной информации с веб-сайтов с использованием разных инструментов, таких как BeautifulSoup или Scrapy. Они позволяют эффективно проводить веб-скрейпинг, соблюдая условия использования веб-сайтов.
Важно отметить, что не все виды веб-скрейпинга законны. “Этичный” сбор данных включает уважение к политике сайтов, избегание нелегальных запросов и приоритет защиты конфиденциальности пользователей. Вы можете скрейпить веб-сайт и, в большинстве случаев, собирать общедоступные данные в Интернете. Но некоторые данные, к примеру, имена, паспортные данные, охраняются законом.
Еще здесь важно учитывать лицензирование данных. К примеру, если собранные изображения будут использоваться в коммерческих целях, необходимо удостовериться, что они распространяются под лицензией Creative Commons или другой лицензией, допускающей коммерческое использование.
Ручная сборка специфичных датасетов
Есть задачи, для выполнения которых недостаточно open-source данных, краудсорсинга или веб-скрейпинга. Например, для создания модели, которая будет точно измерять параметры тела человека по фотографиям, может потребоваться сбор данных с высоким уровнем точности и детализации. Просить снять такие мерки исполнителей на Toloka было бы бессмысленно — как вы проверите качество этих данных?
В таких случаях необходимо организовать оффлайн-площадки для сбора данных, где каждый участник может быть точно измерен и сфотографирован. Этот процесс требует прямого взаимодействия с каждым человеком и обеспечивает высокий уровень точности и надежности данных.
Организация процесса требует значительных ресурсов и времени, подготовки реквизита, а также юридического сопровождения: вам необходимо получить согласие участников на использование их данных в коммерческих целях.
В подобных ситуациях может оказаться более целесообразным обратиться к специализированным поставщикам данных, которые могут организовать этот процесс за вас.
Поиск поставщика данных
В некоторых случаях, когда вы хотите создать уникальный датасет, а ресурсы и время ограничены, оптимальным решением может стать поиск поставщика данных. Поставщики данных предлагают готовые датасеты или собирают такие наборы данных, которые полностью соответствуют вашим требованиям.
Как выбрать поставщика данных?
Мы советуем вам обращать внимание на эти несколько критериев:
Сбор специфических датасетов: Исполнитель может организовать сбор уникальных данных по вашим требованиям: измерения тела или сбор необычных активностей, изображения редких объектов. Для наших клиентов мы собирали даже детский плач и видео с драками на улице при сильнейшем снегопаде.
Высокая точность: Надежный поставщик данных всегда гарантирует высокое качество данных.
Юридическое сопровождение: Опытный исполнитель обеспечивает полное соответствие юридическим нормам, включая получение правильно оформленных согласий на использование данных в коммерческих целях.
Скорость: Хороший поставщик данных понимает, насколько важна скорость, и делает все возможное, чтобы предоставить данные в кратчайшие сроки.
Как мы собирали данные для нашего датасета?
В нашем случае мы выбрали краудсорсинг, потому что нам нужно было собрать данные от как можно большего числа разнообразных людей, и такой метод сбора позволил нам охватить широкий спектр демографических групп и условий съемки. Сбор данных начался с четкого определения требований к заданиям для исполнителей на краудсорсинговой платформе
В начале работы мы разрабатывали задания так, чтобы они были понятными и легкими для выполнения, что снижало вероятность ошибок. Исполнители должны были записывать видео, где они выполняли определенные движения, такие как повороты головы, моргание и произнесение коротких фраз.
Мы также включили задания по созданию атак, где исполнители использовали заранее записанные видео для имитации живых людей. Важно было обеспечить разнообразие устройств, используемых для записи, чтобы датасет включал данные, снятые на разные типы камер (два видео и фото на фронтальную камеру, а также две фотографии и два видео на веб-камеру компьютера) при разных условиях освещения.
Шаг 4: Очищаем данные
Задача очистки данных — избавиться от большинства ошибок с помощью специальных инструментов и алгоритмов, сделать будущий анализ более точным. Чаще всего встречаются как проблемы с признаками, так и записями. К примеру, в работе с записями мы можем решать следующие задачи:
Дублирование
Один и тот же объект может оказаться в таблице дважды из-за разных источников или ошибочной записи. Это искажает статистику, удваивая значения, которые должны быть единичными.
Неуникальные значения
Если две записи имеют одинаковый параметр, это тоже ошибка. Часто она может привести к сбоям в обработке данных.
Противоречивые записи
Такое случается, когда объект один, а записи о нём различаются, например, разными номерами. Это требует корректировки данных, иначе алгоритм может неправильно интерпретировать записи.
А также могут встречаться и проблемы с признаками:
Отсутствующие значения: например, пропущен адрес электронной почты клиента в контактной информации или данные о количестве товаров на складе в отчете.
Аномальные значения: внезапный всплеск данных, например, резкое увеличение продаж или необычно высокое количество возвращенных товаров за один день.
Недопустимые значения: например, телефонный номер с некорректным началом или время, выходящее за рамки 24-часового формата (26:00).
Орфографические ошибки и опечатки: неправильное написание слов, неправильные коды валют и ошибки в названиях товаров.
Многозначность: использование синонимов для одной сущности, например, «смартфон» и «мобильный телефон».
Поскольку пропущенные или некорректные значения могут значительно снизить точность прогнозов, этот вопрос должен быть в приоритете. С точки зрения машинного обучения, предположительные или аппроксимированные значения «более правильны» для алгоритма, чем просто пропущенные.
Даже если вы не знаете точное значение, существуют методы для лучшего предположения отсутствующего значения или обхода этой проблемы. Выбор правильного подхода также сильно зависит от данных и области.
Как мы очищали данные?
После сбора данных для нашего датасета мы также приступили к их очистке. Этот этап включал удаление неточных записей и дубликатов, так как некоторые исполнители пытались выполнять одно задание несколько раз, а также нормализацию данных.
Мы проверяли метаданные, такие как типы устройств, используемых для записи, и корректировали ошибки в написании их названий. Для этого мы использовали текстовые модели, которые помогали исправлять ошибки в метаданных.
Мы также занимались проверкой дубликатов, чтобы убедиться, что в датасете нет повторяющихся записей. Здесь мы применили довольно необычный метод: мы использовали нейронные сети для распознавания лиц, которые помогали нам сопоставлять и идентифицировать лица в нашем датасете. Эта система создавала базу данных, где лица были распределены по полу и возрасту. Сначала мы проверяли, чтобы в каждой половозрастной группе были равномерно представлены разные категории, что упрощало задачу сопоставления. Затем внутри каждой половозрастной группы мы сравнивали пользователей для выявления дубликатов.
При работе с дубликатами мы использовали нейронные сети, которые имели уверенность в идентификации лиц на уровне 85-90%. Когда уверенность была ниже, мы передавали данные на ручную валидацию. Специалисты проверяли, например, пол или возраст человека, чтобы убедиться в корректности идентификации.
Шаг 5: Размечаем данные
Разметкой данных называют процесс добавления значимых и информативных меток к набору данных. Разметка облегчает их понимание и обработку алгоритмами машинного обучения. Без нее алгоритмы будут попросту «теряться» в огромных объемах неструктурированных данных, не отличая одну информацию от другой.
Разметка может быть ручной и автоматической (хотя даже автоматическая чаще всего не обходится без вмешательства человека). Для ручной разметки используются различные методы. Среди них:
-
Границы объектов: Определение точного местоположения объектов на изображениях.
-
Полигональная сегментация: Точное очерчивание объектов сложной формы.
-
Полилинии: Аннотирование неровных контуров объектов, например, дорог или рек.
-
Точечная разметка: Тегирование определённых точек на объектах.
-
Трекинг: Отслеживание движения объектов на кадрах видео для их анализа.
Очень подробно про этот шаг в создании датасета мы писали в нашем гайде по разметке в CVAT — обязательно с ним ознакомьтесь, если хотите основательно разобраться в теме. Там мы рассказывали все секреты разметки, сравнивали инструменты и делились опытом наших менеджеров.
Шаг 6: Трансформируем данные
Трансформация данных — это ключевой этап в процессе машинного обучения, который включает в себя модификацию исходных данных и их преобразование в более подходящий формат для анализа и обучения модели. В ходе трансформации данных мы обычно сталкиваемся с такими проблемами, как шум, пропущенные значения, выбросы и ненормальность данных.
В нашем случае не потребовалась аугментация или изменение разрешения изображений, так как данные уже были представлены в нужном формате. Однако важно было убедиться, что все данные соответствуют единым стандартам и готовы для дальнейшей обработки и использования в обучении моделей.
Что нужно учитывать: советы и рекомендации
При создании датасета мы всегда учитываем эти важные моменты:
-
Чем больше у вас обучающих примеров (семплов), тем лучше. Модель будет обобщать результаты более эффективно.
-
Убедитесь, что количество образцов для каждого класса или темы не слишком различается, то есть каждая категория должна содержать примерно одинаковое количество примеров.
-
Проверьте, чтобы ваши образцы охватывали весь спектр возможных входных данных, а не только типичные варианты.
-
И, наверное, один из главных пунктов: обращайте особое внимание на этические вопросы: убедитесь, что процесс сбора и использования данных полностью соответствует законодательству о защите данных, а также не противоречит этическим стандартам.
Теперь вы можете подготовить датасет для вашего проекта в области машинного обучения. Однако, если вы хотите сэкономить время и ресурсы, обратитесь к нам, мы поможем вам найти оптимальные решения для ваших бизнес-задач.
ссылка на оригинал статьи https://habr.com/ru/articles/857142/
Добавить комментарий