Всем привет!
Совсем недавно мы анонсировали словарь русского жестового языка (РЖЯ), а в этой статье поговорим про задачу распознавания алфавита РЖЯ, именуемого также дактильным алфавитом или дактилем. Предлагаем ознакомиться с нашей работой, в которой мы представим новый датасет Bukva — первый полноценный видеонабор данных для распознавания дактильной азбуки. Он содержит 3757 видеороликов с более чем 101 видео для каждой буквы дактиля, включая не только статические, но и динамические жесты. В статье расскажем, как мы собрали датасет для решения задачи и какие модели обучили в качестве бейзлайнов. Все данные и код открыты и доступны в репозитории команды.
Введение
Жестовый язык уникален с точки зрения правил и грамматики. Неотъемлемой частью языка является алфавит. Дактиль — это компонент жестовых языков, в котором движения пальцев руки воспроизводят буквы письменного языка. Этот метод используется для произнесения слов без определенных жестов, таких как имена собственные, географические названия, специфичные термины. Кроме того, любое слово можно воспроизвести по буквам (в английской терминологии используется термин fingerspelling). В нашей статье основное внимание уделяется распознаванию изолированных букв (дактилем) для построения системы распознавания дактилологии для тренажера алфавита языка жестов. Он также может служить основой для непрерывного распознавания языка жестов.
В задаче распознавания дактиля существует ряд сложностей, например более мелкие и быстрые движения пальцев, которые сложнее распознавать, чем обычный язык жестов. Поскольку движения в дактиле короткие и быстрые, размытость движения может иметь значительное негативное влияние, требуя от алгоритма распознавания большей устойчивости к изменениям качества данных. Наличие статических и динамических букв в русском алфавите РЖЯ также усложняет задачу, и обойтись статическими изображениями не получится. Более того, некоторые дактилемы в РЖЯ могут выглядеть почти одинаково, что делает их распознавание проблематичным. Например, пары Л и П, М и Т имеют близкие конфигурации и различаются только расстоянием между пальцами. Аналогично, Е и Ё, И и Й имеют одинаковые конфигурации, но отличаются только движением кисти.
Датасеты
Существующие наборы данных русского дактиля не подходят по ряду причин. Насколько нам известно, только 3 датасета содержат изолированный дактиль РЖЯ. В одном из них содержатся только 26 статических жестов, а оставшиеся 7 не представлены. Авторы другой работы собрали 14978 сэмплов, включая изображения для статических и видео для динамических дактилем. В записи в студийных условиях приняли участие всего 4 человека, что негативно влияет на качество обучения робастной модели. Сравнительный анализ с этим набором данных невозможен, поскольку он является закрытым. Также часть дактильного датасета представлена в нашем наборе данных Slovo, который мы опубликовали в прошлом году. Мы использовали эти данные в своей работе и расширили наш финальный датасет. Slovo — открытый набор данных изолированных жестов РЖЯ. Из 20 000 видео мы отобрали 660 примеров, записанных тридцатью экспертами. Slovo был собран и провалидирован на краудсорсинговых платформах. Количество образцов набора данных Slovo недостаточно для обучения высококачественной модели, поэтому мы расширили этот датасет новыми записями и создали новый, более мощный корпус алфавита РЖЯ под названием Bukva. Итоговый набор данных содержит 3757 HD+ видео, разделенных на 33 класса. Видео были сняты с помощью различных устройств и в записи приняло участие 155 носителей РЖЯ в разных условиях освещенности и при различных расстояниях до камеры. Bukva также включает дополнительный класс no_event, используемый в обучении модели как метка отсутствия жеста.
Пайплайн
Для сбора данных мы использовали несколько краудсорсинговых площадок — Толока и Элементари. В этой работе мы переиспользуем пайплайн сбора из Slovo, модифицировав самые критичные стадии. Пайплайн сбора данных состоит из нескольких этапов:
-
экзамен на знание РЖЯ — призван отфильтровать экспертов и носителей РЖЯ от остальных пользователей;
-
сбор данных — запись видео по требуемым условиям;
-
валидация и фильтрация данных;
-
разметка — для определения начала и конца выполнения жеста.
Полноценный пайплайн представлен на следующем рисунке:
Экзамен
Мы провели отборочный этап для отбора носителей РЖЯ. Также попросили пользователей посмотреть 20 видеороликов из жестового языка и выбрать соответствующие переводы на русский язык. Время экзамена было ограничено, чтобы пользователи не смогли найти ответ. Успешно сданный экзамен позволял пользователям получить доступ к оплачиваемым заданиям на сбор, валидацию и разметку данных. Доступ предоставлялся пользователям, которые правильно ответили на 80% экзаменационных заданий (не менее 16 правильных ответов из 20).
Сбор данных
Поскольку алфавит РЖЯ содержит динамические жесты для 8 букв и статические для остальных, мы решили собирать только видео вместо изображений для всех 33 букв. Мы приложили инструкции к этому этапу, чтобы обозначить требования для каждого исполнителя: (1) в кадре должен находиться только один человек, (2) видео должно быть высокого качества — не менее 720 пикселей по минимальной стороне, не менее 15 кадров в секунду, (3) редактирование и обработка видео запрещены, и (4) рука, выполняющая жест, должна быть полностью видна в кадре. На данном этапе мы получили около 8400 видеороликов, которые пройдут дальнейшую фильтрацию и проверку.
Фильтрация
На этой стадии мы отсеивали видео, не проходящие по следующим условиям:
-
fps < 15 ;
-
min_size < 720 ;
-
video_lenght < 30 frames ;
-
check_hand — проверка наличия руки в кадре (на этом этапе использовали предобученный на датасете HaGRID детектор кистей на базе YOLO) .
После фильтрации мы автоматически исключили 286 некачественных видео. Мы также выявили и отклонили 439 дубликатов видео в процессе дедупликации (неудивительно, что пользователи хотят загрузить свои видео повторно и заработать на этом).
Валидация
На этой стадии мы проверяли правильность выполнения тех или иных жестов дактиля. Этот этап можно считать дополнительной попыткой избежать неправильного выполнения жеста наравне с экзаменом по алфавиту РЖЯ. Кроме того, валидаторы должны дополнительно проверять видео на наличие ведущей руки в кадре при записи жеста, а также отсутствие других людей, следов обработки и водяных знаков. После этого этапа в датасете осталось около 6000 видео. Для повышения уверенности на этапе валидации, каждое видео проверялось с динамическим перекрытием от 3 до 5. Порог принятия видео в финальный датасет установлен на 70% (то есть каждое видео должно получить не менее 3 из 4 или 4 из 5 позитивных ответов на этапе валидации).
Разметка
Процесс записи жестов часто состоит из трех частей: (1) пользователь готовится записать жест, (2) пользователь выполняет жест, и (3) пользователь уже выполнил жест.
На стадии разметки нам необходимо исключить кадры, в которых пользователь не показывает целевой жест. Мы попросили пользователей указать временной интервал на видео с жестом с помощью начальных и конечных меток жеста. На следующем рисунке показан интуитивно понятный интерфейс разметки на платформе Элементари:
Каждое видео было размечено тремя разными пользователями с последующей агрегацией интервалов. Для агрегации мы использовали свой собственный фреймворк aggme, о котором писали в предыдущих статьях и рассказывали на Highload. Сейчас фреймворк доступен в открытом доступе! Также на этой стадии мы построили различные распределения для нашего датасета, в том числе отделив пользователей по полу и возрасту, используя модель наших коллег MiVOLO.
Мы выкладываем две версии датасета Bukva: версию без обрезки по временным интервалам и обрезанную версию для ускорения экспериментов. Для каждой версии датасет дополняется дополнительным классом no_event.
Датасет Bukva состоит из 3757 видеороликов Он разделен на 33 класса, каждый из которых соответствует букве русского алфавита. Средняя длительность видео около 49 кадров. В записи датасета приняло 155 экспертов, прошедших экзамен на знание РЖЯ. 81% видео имеют портретную ориентацию, 16% — альбомную, а 3% — квадратный формат.
Мы разделили датасет Bukva на обучающий и тестовый сеты, включающие 3097 и 660 видео соответственно. Мы намеренно разбили эти сеты так, чтобы исключить перекрытие между юзерами. Для создания тестового набора были отдельно отобраны двадцать экспертов, которые записали видео для всех 33 букв.
Эксперименты
Для проверки качества датасета и создания бейзлайнов мы использовали блок из статьи TSM: Temporal Shift Module for Efficient Video Understanding. Мы обучили несколько классических моделей нейронных сетей: MobileNetV2, MobileOne от S0 до S2 для баланса между скоростью и количеством параметров, и ResNet-18 и ResNet-50. Модель MobileNetV2_TSM доступна для скачивания в репозитории.
Также мы провели эксперименты по влиянию размера датасета на качество модели. Уменьшение размера обучающего сета с 3182 до 2000 видео, несомненно, привело к снижению точности метрики top-1 accuracy с 0,8368 до 0,7956. Дальнейшее уменьшение до 1000 видео привело к значительному снижению метрики до значения 0,5676. Распределение по количеству пользователей в датасете оставалось неизменным во всех трех экспериментах. Аналогично, уменьшение количества уникальных пользователей с 70 до 50 при постоянных 1500 видео в датасете снижает точность классификации с 0,7588 до 0,7415. Эти результаты подчеркивает важность наличия сбалансированного набора данных для гарантии высокой производительности модели.
На следующем рисунке приведена матрица ошибок на одной из обученных моделей на датасете Bukva:
Заключение
Распознавание языка жестов часто сопровождается отсутствием данных. Обзор открытых наборов данных алфавита РЖЯ показал, что они не подходят для построения полноценной системы распознавания. В нашей работе мы рассказали про создание датасета дактильной азбуки РЖЯ под названием Bukva, а также о процессе его создания и обучения на этом наборе данных различных бейзлайнов. Мы тщательно подошли к сбору данных, введя экзамен на знание РЖЯ и уделив повышенное внимание фильтрации результирующих данных. Наша работа на этом не заканчивается и сосредоточена в том числе на полноценном решении задачи fingerspelling — распознавания слов по буквам.
Авторы исследования: @hukenovs,@karinakvanchiani, @nagadit, @kleinsbotleи @petros000
Статья: https://arxiv.org/abs/2410.08675
Репозиторий: https://github.com/ai-forever/bukva
Тг-канал команды: https://t.me/rndcv_team/
Автор: hukenovs