Если вы хотите научить модель машинного зрения разбираться в сортах кукурузы или, скажем, отличать пешеходов от автомобилей, вам нужно подготовить датасет с изображениями, где уже будут размечены пешеходы и початки кукурузы, снятые с разных ракурсов в разное время суток. Когда дело ограничивается злаковыми культурами, для этих целей можно использовать опенсорсное решение, а вот компании, работающие с белковыми формами жизни и их биометрией — например, банки, — за неимением своих датасетов часто обращаются за помощью к другим компаниям.
Чтобы выяснить, как на практике выглядит такая разработка датасетов на аутсорсе, мы поговорили с Владиславом Барсуковым, руководителем группы речевых и генеративных данных в Data Light. Он поделился своим взглядом на проблемы в сфере разметки биометрических данных и рассказал о подводных камнях, с которыми приходится сталкиваться в ходе подготовки, проверки, обработки и выгрузки датасетов для алгоритмов ML. Бонусом — интересный кейс с разметкой 60 000 фотографий, пол и возраст на которых проверяли сначала нейросетью, а потом — вручную.
Зачем нужны биометрические датасеты
Биометрический датасет — это массив фото или видео людей с подобранными метаданными, который используется для обучения алгоритмов ML. Каждый такой массив решает определенную задачу заказчика — чаще всего это распознавание лиц, но есть и более специфические задачи:
Know your customer (KYC) — проверка личности клиента на основе паспорта или других документов, принятая у банков и других организаций в финансовом секторе. Обычно для прохождения KYC достаточно отправить фотографию лица на фоне паспорта. Чтобы научить банковские алгоритмы проводить верификацию, создаются отдельные датасеты с десятками тысяч размеченных селфи, на которых люди позируют со своими документами.
Биометрическая аутентификация — данные размечаются для обучения системы аутентификации по биометрии (лицам, отпечаткам пальцев, радужке глаза). Сама разметка включает в себя идентификацию и характеристики биометрических признаков.
Anti-spoofing — распознавание попыток обмана или мошенничества с использованием биометрических данных.
Gait recognition — разметка видеоданных для обучения алгоритмов, распознающих людей по походке.
Распознавание эмоций — используется для обучения моделей, способных определять эмоциональное состояние человека по лицу. Разметка включает классификацию выражений лица, таких как радость, грусть, гнев и др.
Чтобы получить надежную и универсальную модель машинного зрения для подобных задач, используются большие датасеты с высоким уровнем разнообразия данных, которое достигается за счет использования фотографий с людьми разного пола, возраста, этнического происхождения.
Разнообразие обеспечивается и другими способами: например, в датасете, на котором будет обучаться модель по распознаванию лиц, один и тот же человек может быть сфотографирован в разных ракурсах, с разных устройств и при разных условиях освещения. В этом случае достаточно большой и удобный набор данных для будущего обучения моделей можно получить с помощью видеосъемки: вместо того, чтобы делать десятки фотографий, можно снять одно видео и нарезать его на фреймы.
У Data Light есть лицензированный датасет «Selfie Video», примечательный тем, что это фото людей, собранные на основную и фронтальную камеру смартфона в формате 2+2. Получается по 4 фотографии и видео одного человека в разных условиях съемки. В плане мэтчинга мы получили большое количество людей для качественной разметки.
Проверка liveness
Отдельный и довольно интересный тип задач машинного зрения, под которые нам часто приходится разрабатывать датасеты — это проверка liveness. Она играет ключевую роль в системах биометрической аутентификации, предотвращающих мошенничество с использованием фальшивых биометрических данных.
В системах распознавания лиц liveness используется для проверки того, что лицо, представленное для аутентификации, находится в реальном времени и принадлежит живому человеку, а не является сгенерированной фотографией или видеозаписью.
Для решения задачи liveness используются различные методы и техники: анализ движения, распознавание трехмерных форм, анализ физиологических признаков (сердечного ритма, дыхания), а также проверка наличия натуральных реакций, таких как моргание глаз или движение лица. Эти методы помогают отличить живого человека от дипфейка и защититься от мошенников.
В качестве примера можно привести технологию работы Face ID в айфонах или идентификацию по лицу в Windows Hello. Здесь также задействован face recognition, который определяет, что лицо действительно принадлежит пользователю, а не создано, например, с помощью 2D- или 3D-маски.
При работе с задачами liveness используются два датасета: активный и пассивный.
Пассивный датасет для liveness предназначен для определения «живого присутствия» на основе статических изображений, таких как фотографии или короткие видеозаписи, которые могут быть разделены на фреймы. Обычно требуется от 5 до 10 фреймов для быстрого и достаточно точного определения присутствия живого человека.
Активный датасет для liveness используется для определения подлинности данных на основе действий человека. В отличие от пассивного датасета, где проверяются статические изображения, здесь анализируются действия, совершаемые человеком. Для этого предоставляются конкретные датасеты, санкционированные в соответствии со стандартом ISO 30107, который устанавливает требования к системам оценки живого присутствия.
Подводные камни в работе с биометрическими датасетами
Влияние качества разметки на обучаемость моделей
Качество разметки играет решающую роль в обучении алгоритмов ML, особенно когда речь идет работе с биометрическими данными. Даже незначительные ошибки в разметке, такие как неверное присвоение меток (mislabeling) или неправильная классификация, могут существенно повлиять на результаты работы модели и привести к ошибкам в конечных приложениях.
В этом смысле необходимость переразмечать проблемные данные — довольно распространенная ситуация. Компании, занимающиеся обучением нейросетей, зачастую находятся в постоянном поиске баланса между временем, которое уходит на разметку, и необходимостью обеспечить конкурентоспособные результаты в сжатые сроки.
Когда мы говорим о таком балансе, стоит принимать во внимание, что важнее клиенту — скорость или качество. Может быть, вы представляете данные на определенную часть рынка, которой нужны данные в большом количестве, а качество наоборот вторично. Все зависит от потребностей заказчика: если для него приоритетнее скорость, можно отдать все нейронке, пропустив этап проверки и ручной разметки.
Реальные данные против «синтетики»
Модель компьютерного зрения может обучаться как на фото реальных людей, так и на «синтетических» данных, то есть изображениях, сгенерированных другой нейросетью.
Использование «синтетики» позволяет расширить обучающие выборки, но у них есть свои проблемы: такие данные часто неверно размечены, что автоматически снижает качество обучения и точность предсказаний. Кроме того, работа с биометрическими данными требует учета человеческого фактора: в реальной жизни человек, делающий селфи, может сидеть в затемненном помещении, смотреть мимо камеры или держать документы под необычным углом. Подобные нюансы очень важны для эффективного обучения моделей, но они не учитываются нейросетями, которые генерируют «синтетические» фото.
В определенный момент модель упирается в потолок обучения, когда сложность получения дополнительного процента или даже доли процента эффективности начинает расти экспоненциально. После этого для дообучения нужны именно реальные данные, которые более точно отражают разнообразие лиц, условий съемки и анатомических особенностей. А вот синтетические данные полезны скорее на начальных этапах, когда качество данных и их разметки еще не играют определяющей роли.
Выбор между сбором данных in-house и краудсорсингом
Если вы планируете обучать модель на реальных данных, эти данные нужно где-то взять. Для создания изображений, на которых будет обучаться модель, можно либо привлечь исполнителей с краудсорсинговых платформ, либо организовать съемку самостоятельно.
Сбор данных in-house, то есть от ограниченного числа людей в контролируемых условиях, облегчает управление процессом: можно в реальном времени контролировать параметры съемки (освещение, ракурс, качество изображения) и давать инструкции. Это позволяет добиться более высокого качества данных, но организация и модерация съемок требуют значительных ресурсов — поэтому данный метод часто оказывается нерентабельным.
Иными словами, in-house — это небольшое количество очень качественных данных, на которые скорее всего уйдет значительный бюджет.
Краудсорсинговые платформы позволяют получить доступ к большому объему данных путем привлечения широкой аудитории к выполнению задач. Данные в этом случае получается собрать намного быстрее, однако их качество будет ниже: многие исполнители неверно понимают ТЗ или просто небрежно относятся к своей работе, а проконтролировать условия съемки намного сложнее, чем работая в формате in-house.
У этого способа есть еще один недостаток: чем больше вы привлечете исполнителей, тем сложнее будет проверить данные на наличие дубликатов. Более подробно об этом расскажу ниже, а сейчас рассмотрим недавний кейс из практики, который хорошо иллюстрирует описанные дилеммы и варианты их решения.
Пример из практики
Нам пришла задача проверить качество разметки датасета, состоящего из 60 000 фотографий, на соответствие трем параметрам: пол (gender), возраст (age) и этничность (ethnicity).
На небольшом объеме данных было выявлено, что в разметке не всегда верно указаны возраст и пол. Мы предположили, что разметчик, отвечавший за проект, предоставил клиенту неверную информацию на каком-то из этапов. Такое случается нередко: несмотря на то, что все датасеты обычно проходят валидацию, порой в дело вмешивается человеческий фактор.
Проверку разметки можно было реализовать двумя способами: отдать данные на обработку нейросети или проверить все вручную. Первый вариант — быстрый, но не особо надежный; при ручной разметке проверка будет более качественной, но где вы найдете время на то, чтобы вручную проверить шестьдесят тысяч фотографий?
Задача состояла в том, чтобы найти тот самый баланс временем на проект и точностью. В итоге остановились на гибридном варианте: сначала прогнали данные через нейросеть, а потом вручную проверяли фотографии, по поводу которых она засомневалась. В работе использовали Python и библиотеку DeepFace, созданную специально для обработки изображений и анализа лиц.
В общем виде процесс строился так: нейросеть обрабатывала каждую фотографию и выдавала вероятность того, что указанный параметр (например, пол) верен. Мы выбрали пороговый уровень (шаг уверенности), после которого данные считались достоверными. Скажем, если фотография принадлежала мужчине, и нейросеть констатировала это с долей уверенности 80%, мы принимали ее вариант. Данные, уверенность в которых была ниже этого порога, отправлялись на ручную разметку.
Подробнее о том, как все работало на практике:
Шаг 1: подготовка данных |
Выбор параметра для анализа (например, нас интересует только один параметр — пол). Получение данных о фотографиях с указанием пола. |
Шаг 2: обработка фотографий |
Получаем нужные фотографии. Подаем каждую интересующую фотографию в нейронку для анализа. |
Шаг 3: определение вероятности |
Нейросеть анализирует каждую фотографию и выдает вероятность — насколько верно указан пол. Например, если указан мужской пол, нейросеть может определить вероятность того, что на фотографии изображен мужчина, как 100% |
Шаг 4: сохранение результатов |
Результаты анализа (вероятностный шаг) сохраняются для каждой фотографии в виде пары «идентификатор фотографии: вероятность» в JSON. Например, если нейросеть определила, что с вероятностью 90% на фотографии изображен мужчина, сохраняется пара «1: 90%» |
Шаг 5: выбор порогового значения |
После обработки всех фотографий выбирается пороговое значение, которое определяет уверенность в правильности данных. |
Шаг 6: отправка данных на дополнительную разметку |
Фотографии, уверенность в правильности которых ниже порогового значения, отправляются на дополнительную разметку для проверки. |
Таким образом, все данные, в которых мы сомневались, уходили на ручную перепроверку. Для этой цели мы использовали трех независимых оценщиков, которые работали независимо друг от друга — такой подход позволяет исключить влияние одного мнения на другие. Если ответы оценщиков не совпадали, фото отправлялось на дополнительную проверку валидатору из нашей операционной команды.
Теперь о результатах кейса:
Примерно 10-15% изображений из 60 000 потребовали дополнительной проверки после автоматической разметки.
Для дополнительной проверки мы установили высокий порог уверенности (более 95%), чтобы точно убедиться в правильности данных.
Около 20% изображений были поставлены под сомнение и потребовали ручной переразметки из-за скептических результатов.
С чем еще можно столкнуться при проверке датасетов
Из часто встречающихся проблем:
Некорректная или неполная разметка, которая приводит к ошибкам в анализе и искажению результатов.
Недостаточная уникальность данных, которая приводит к сложностям, особенно при сборе данных из различных источников, где один и тот же человек может иметь несколько аккаунтов с разной информацией.
Наличие дубликатов в датасете, которое может серьезно ухудшить качество модели. Обнаружение и удаление дубликатов может быть трудоемким процессом, особенно при больших объемах данных.
Здесь важно учитывать, что многое зависит от способа сбора данных. Например, краудсорсинг открывает большие перспективы для мошенничества, подделки данных — там вы можете не дойти до проверки на наличие дубликатов или неполной разметки, а застрять еще на этапе первоначальной обработки большого объема подложных данных. Как только вы начинаете проверять каждого человека на уникальность в датасете, вы сталкиваетесь с нехваткой ресурсов и времени.
Краудсорсинг — это всегда риск. Предположим, вы получили датасет, который нужно проверить на наличие дубликатов. Но как проверить уникальность, скажем, 100 тысяч человек? Это трудная задача, требующая не только доступных вычислительных ресурсов, но и определенных методов анализа.
Ведь необходимо провести проверку каждого человека с уникальными данными, сравнивая их с остальными записями в датасете. Первую фотографию придется сравнивать с 99 999 других, вторую — с 99 998 и так далее. В общем, задача абсолютно нетривиальная. Здесь мы снова возвращаемся к человеческому фактору, без которого редко обходится обработка фотосетов. Частично эту проблему решает предразметка.
Предразметка — это попытка настроить процесс, в котором одни нейросети размечают данные для других нейросетей. Но важно понимать, что результаты этой предразметки требуют дополнительной проверки и переразметки человеком. Нейросеть может указать, что с определенной вероятностью на фото изображены мужчина или женщина, но возникают ситуации, когда пороговые значения оказываются слишком близкими друг к другу или даже неверными. Иными словами, речи о какой-либо абсолютной точности здесь нет.
В ближайшем будущем этот процесс будет совершенствоваться. Нейросети здесь скорее всего будут играть роль помощников, инструмента, который можно использовать для улучшения процессов обработки данных. О замене разметчиков или специалистов по обработке данных речи пока не идет.
Рекомендации по работе с разметкой данных
Напоследок хочется дать несколько общих рекомендаций, которые будут полезны каждому, кто занимается разметкой:
Начните с небольшого тестового проекта, чтобы оценить качество работы, инструменты и профессионализм команды.
Следите за процессом аннотирования, чтобы избежать задержек.
Внедрите систему оценки точности и бенчмаркинга данных, чтобы обеспечить высокое качество обучающих наборов.
Проверяйте качество исходных данных. Прежде чем приступать к разметке, удостоверьтесь в адекватности данных для поставленной задачи, их хорошем состоянии и сбалансированности.
Помните про аудит качества и стандарты QA, которые позволят вашей команде эффективно управлять качеством входящих данных.
Следите за затратами на проект, установите четкие условия и ожидания по затратам и времени на выполнение работ в договоре с поставщиком.
Что еще почитать на эту тему: