Всем привет! Ранее мы уже писали о нашем наборе данных Bukva — первом наборе данных для распознавания русского дактильного языка в изоляции, который содержит более 3 700 видеороликов, разделённых на 33 класса, каждый из которых соответствует одной букве русского алфавита.
Эта статья посвящена распознаванию непрерывного дактильного языка. Мы расскажем о наших моделях, которые добиваются наилучших результатов на наборах данных непрерывного американского дактильного языка ChicagoFSWild и ChicagoFSWild+, а также о нашем новом наборе данных Znaki — первом открытом наборе данных непрерывного русского дактильного языка, содержащем более 37 000 видео.
Жестовый язык — это основной способ общения для глухих и слабослышащих людей. Одним из ключевых компонентов жестового языка является дактильный язык, используемый для передачи частей речи, имён собственных, аббревиатур и фамилий.
Дактильный язык основан на побуквенной демонстрации слов (fingerspelling), что делает его особенно сложным для распознавания. Быстрые и резкие движения, характерные для fingerspelling, могут приводить к появлению размытых кадров на видео, создавая дополнительные трудности для автоматических систем распознавания. Система для распознавания непрерывного дактильного языка должна учитывать эти особенности и сохранять стабильность даже при работе с низкокачественными видео. Актуальность задачи подтверждается интересом крупных технологических компаний: так, Google организовал соревнование на платформе Kaggle в 2023 году, посвящённое распознаванию дактильного жестового языка.
Задача распознавания непрерывного дактильного языка заключается в следующем: на вход модели подаётся набор кадров из видео, а на выходе требуется получить последовательность символов, соответствующих передаваемому слову или фразе. При этом нет прямого выравнивания между кадрами видео и символами. Это означает, что несколько последовательных кадров могут обозначать один и тот же символ, что усложняет распознавание. В таких условиях обычно применяют функцию потерь CTC Loss (Connectionist Temporal Classification). Она позволяет эффективно обучать модели на данных без явного выравнивания между входом (видеокадрами) и выходом (символами).
Несмотря на множество попыток улучшить распознавание дактильной речи, результаты предыдущих методов на двух наборах данных американского дактильного языка — ChicagoFSWild и ChicagoFSWild+ — показывают немалый потенциал для повышения точности. Добиться этого можно, разрабатывая новые подходы для более эффективной обработки данных и использования более качественных, тщательно размеченных наборов данных. Однако создание таких наборов данных осложняется нехваткой людей, знающих жестовый язык, и трудностями коммуникации между ними и исследователями, занимающимися созданием подходящих наборов данных. На сегодняшний день некоторые жестовые языки, включая русский, особенно страдают от отсутствия доступных наборов данных для дактильной речи.
Мы поставили перед собой задачу создать эффективный метод распознавания дактильной речи. Основные результаты нашей работы:
Мы модифицировали модуль Temporal Shift Module (TSM), добавив адаптивные временные сдвиги для более эффективной обработки RGB-видео без необходимости ограничивать длину видео определённым количеством кадров;
Разработали Temporal Pose Encoder (TPE), который обрабатывает ключевые точки как трёхканальные тензоры, учитывая пространственную и временную информацию;
На основе этих подходов мы представляем HandReader — набор архитектур, которые достигли наилучших результатов в тестах ChicagoFSWild и ChicagoFSWild+;
Разработали эффективный процесс создания наборов данных для дактильной речи, ориентированный на ограниченное количество носителей языка;
Создали первый открытый набор данных для русского дактильного языка, содержащий 1 593 размеченные фразы и более 37 000 видео в высоком разрешении.
HandReader
Мы разработали три архитектуры под общим названием HandReader, каждая из которых обрабатывает некоторое ограниченное множество модальностей:
HandReaderRGB — работает с RGB-кадрами из видео;
HandReaderKP — использует ключевые точки для распознавания дактильного языка;
HandReaderKP+RGB — комбинирует обе модальности, объединяя преимущества первых двух подходов.
Все предложенные модели построены на общей структуре, состоящей из энкодера и декодера. Для унификации результатов мы использовали одинаковый декодер во всех моделях: он содержит два слоя GRU (Gated Recurrent Unit) и линейный слой.

HandReaderRGB
За основу энкодера мы взяли ResNet-34 с TSM-блоком из статьи и модифицировали его. Основная идея TSM заключается в использовании сдвига карт признаков между свёрточными слоями. Это позволяет имитировать работу трёхмерной свёртки, обеспечивая обработку временной информации без значительного увеличения вычислительных затрат.
Оригинальная версия TSM принимает на вход видео фиксированной длины. Это создаёт определённые ограничения: входные видео нужно либо обрезать, либо дополнять до нужного размера. Однако обрезка может приводить к потере важной информации, а добавление пустых кадров увеличивает объём вычислений. Кроме того, количество сдвигов в TSM определяется количеством свёрточных блоков, что может стать проблемой для коротких видео: избыточные сдвиги могут привести к искажению данных.
Мы решили эту проблему, модифицировав TSM и создав адаптивный модуль, который назвали TSAM (Temporal Shift Adaptive Module). Наш модуль:
Поддерживает видео произвольной длины;
Обрабатывает данные без добавления пустых кадров или удаления существующих;
-
Использует механизм адаптивного подсчёта сдвигов, что предотвращает лишние сдвиги на коротких видео. Например, если видео состоит всего из двух кадров, то TSAM выполнит только один сдвиг после первого свёрточного блока ResNet-34.
Рисунок 2. TSAM — красный прямоугольник, TSM — серый. Вход: батч из двух видео разной длины — синее и жёлтое. Каждый кадр превращается в карту признаков (оттенок соответствует цвету видео). TSM требует, чтобы все видео были одной длины. Поэтому приходится либо добавлять паддинг (белые тензоры), либо обрезать кадры (красные тензоры). TSAM работает с видео их реальной длины, без паддинга и обрезки. Также мы добавили счётчик сдвигов — он позволяет сдвигать кадры отдельно для каждого видео.
TSAM принимает на вход тензор размерностью (bs, c, h, w), где:
bs — размер батча;
c — количество каналов;
h и w — высота и ширина кадра;
а также дополнительный одномерный массив, содержащий информацию о длине каждого видео в батче. Проходя по этому массиву, мы извлекаем из батча нужное количество кадров, к которым затем применяется операция сдвига. Для каждого видео подсчитываем выполненные сдвиги, чтобы остановить процесс, как только их количество достигнет или превысит количество кадров. Благодаря этим модификациям мы обеспечили корректную обработку видео любого размера без потери данных и лишних операций.
HandReaderKP

Видео для распознавания дактильной речи часто содержат ненужную информацию, такую как фон, лицо или посторонние объекты. Один из способов использовать только релевантную информацию — извлекать из кадров видео «ключевые точки» кистей рук. Для извлечения мы использовали MediaPipe. Этот инструмент позволяет выделять координаты точек интереса в формате (x, y, z) для кистей рук и позы тела. Полученные данные имеют размерность (3, N, 54), где:
N — количество кадров (фреймов) в видео;
54 — общее число координат в формате (x, y, z) для каждой точки в каждом кадре.
Мы разработали TPE (Temporal Pose Encoder), модуль для обработки ключевых точек кистей рук, который одновременно обрабатывает временную и пространственную информацию.
TPE принимает на вход тензор размерностью (bs, 3, N, 54), где:
bs — размер батча (количество видео);
3 — координаты (x, y, z);
N — максимальная длина видео в батче;
54 — количество ключевых точек.
Архитектура TPE включает в себя:
двумерную свёртку, которая захватывает пространственные и временные зависимости;
трёхмерную свёртку с ядром (5, 1, 1), предназначенную для обработки исключительно пространственной информации (x, y, z) без влияния временных аспектов;
Повторное использование двумерной свёртки для усиления представления данных.
Сперва входной тензор проходит обработку двумерной свёрткой, которая отвечает за первичное извлечение временных и пространственных признаков. Свёртка одновременно захватывает координаты всех точек в каждом кадре и учитывает временной контекст. Далее трёхмерная свёртка накапливает информацию о движении внутри одного видео. Она использует ядро в форме «трубки» размером (5, 1, 1) и обрабатывает каждую координату отдельно. После этого полученный тензор снова обрабатывается двумерной свёрткой для уточнения признаков. Более подробно работа модуля показана на рисунке 3.
После обработки ключевых точек через TPE используется многослойный перцептрон (MLP), дополненный свёрточными блоками из Conformer. Этот этап позволяет эффективно извлекать высокоуровневые признаки, полезные для дальнейшей интерпретации.
HandReaderKP+RGB
Совместная архитектура объединяет возможности энкодеров из HandReaderKP+RGB и HandReaderKP+RGB, чтобы использовать преимущества обеих модальностей. На этапе обработки данные из двух энкодеров комбинируются: признаки, полученные из RGB-кадров и ключевых точек, суммируются. Это позволяет объединить пространственно-временную информацию от обоих источников, обеспечивая более полное представление. Затем объединённые признаки передаются в GRU-декодер, который отвечает за интерпретацию сгенерированных признаков и преобразование их в итоговый результат.
Набор данных Znaki
Открытых наборов данных для русского дактиля сейчас нет. Кроме того, существующие наборы данных для изолированного дактиля не подходят для распознавания в задаче fingerspelling. Основные проблемы заключаются в недостаточном количестве переходов между буквами и несоответствующей скорости выполнения жестов.
Для создания собственного набора данных мы выбрали краудсорсинговую платформу TagMe. Это позволило нам обеспечить разнообразие участников и условий записи, что значительно повышает качество данных для обучения моделей.
Выбор фраз
Поскольку fingerspelling в основном используется для передачи имён собственных, мы решили сосредоточиться на словах и фразах, относящихся к этой группе. Для этого мы проконсультировались с экспертами, работающими с носителями РЖЯ, и совместно выделили несколько ключевых категорий, представленных в таблице 1.

Сбор и проверка видео
Для обеспечения качества собранных данных при записи видео мы ввели правила:
В кадре может находиться только один человек, который демонстрирует знаки;
Видео не должно содержать тряски камеры или каких-либо визуальных эффектов, способных усложнить распознавание;
Минимальное разрешение видео — HD. Длина роликов должна составлять более 1 секунды, а частота кадров — не менее 15 FPS;
Видео разрешалось записывать в любых местах, чтобы обеспечить разнообразие фонов и условий съемки.
Для проверки правильности перевода на русский жестовый язык каждое видео оценивали три независимых специалиста, которые прошли специальное обучение.
Характеристики набора данных
Фразы. Набор данных содержит 1 593 уникальных имени собственных, охватывая все 33 буквы русского алфавита. Кроме того, он содержит 696 пар различных комбинаций букв, что обеспечивает разнообразие лингвистического материала. Распределение букв по частоте в наборе данных представлено на рисунке 4.

Видео. Набор данных содержит 37 252 видео. Общий объём данных около 42 ГБ. В среднем на каждую фразу приходится 23 видео, при этом средняя длина одного видео составляет 102 кадра.
Сплит. Мы разделили набор данных на три части:
обучение — 58 % (743 уникальные фразы);
проверка— 23 % (300 уникальных фраз);
тест — 19 % (550 уникальных фраз).
Мы также удостоверились, что авторы видео, вошедшие в тестовую часть, отсутствуют в обучающей и проверочной выборках, исключив пересечение данных и повысив объективность оценки моделей.
Эксперименты
Все три архитектуры обучили с помощью оптимизатора AdamW с начальным learning rate 0,0001, также использовали MultiStepLR для изменения learning rate. HandReaderRGB обучали 60 эпох, остальные модели — 100 эпох, на одной Nvidia H100 с 80 Гб памяти.
Подготовка данных
Наборы данных ChicagoFSWild и ChicagoFSWild+ часто используют для оценки метрик в задаче распознавания дактильного языка, поэтому мы протестировали предложенные методы на трёх наборах данных, включая Znaki.
Для предварительной обработки обрезали кадры видео с помощью модели, которая использовала механизм итеративного внимания. Полученные изображения аугментировали с помощью горизонтального и случайных поворотов, затем нормализовали и приводили к размеру 244 × 244.
Ключевые точки извлекали из необрезанных кадров видео, координаты со значением NaN приравнивали к 0, затем применяли нормализацию и аугментации Resample, SpatialAffine, TemporalMask и HoriznotalFlip. В то же время в HandReaderKP+RGB использовали только Resample, HorizontalFlip и RandomRotation.
Результаты
Итоговая метрика посчитана с помощью точности предсказания каждой буквы: 1 - S + D +IN, где S, D и I — количество замен, удалений и вставок в слове, N — длина истинного слова. Метрики других подходов взяты из оригинальных статей для сравнения. Каждая из архитектур HandReader достигает наилучших результатов на бенчмарках ChicagoFSWild и ChicagoFSWild+ (Таб. 2).

В таблице 3 представлены метрики и характеристики всех трёх моделей на нашем новом наборе данных Znaki. Значительная разница в метриках между наборами данных ChicagoFSWild, ChicagoFSWild+ и Znaki объясняется тем, что, несмотря на меньший объём видео в нашем наборе данных, видео имеют более высокое качество и большую продолжительность.

Мы провели дополнительные эксперименты, чтобы оценить влияние каждого отдельного компонента в архитектурах HandReaderKP и HandReaderRGB, мы последовательно убирали некоторые модули из архитектур, а также меняли гиперпараметры, и замеряли метрику без них. Результаты приведены в таблицах 4 и 5.


Как видите, исключение любого компонента из архитектур приводит к падению итоговых метрик. У обеих архитектур наибольшее влияние на результат оказывают наличие аугментаций (1,51 для HandReaderRGB и 6,88 для HandReaderKP), а также использование RNN в декодере.
Заключение
Мы представили архитектуры для распознавания русского дактильного языка, используя как RGB-кадры, так и ключевые точки для повышения точности. Предложенная модификация TSM-блока позволяет эффективно обрабатывать видео произвольной длины, а также учитывает адаптивное количество сдвигов для коротких видео. Также мы разработали модуль TPE для обработки ключевых точек. Все три архитектуры достигают наилучших результатов на наборах данных ChicagoFSWild и ChicagoFSWild+. Первый открытый набор данных непрерывного русского дактильного языка Znaki создан с использованием краудсорсинговой платформы и отбором участников для получения качественных данных. В ходе экспериментов мы показали, что наличие аугментаций и использование RNN в декодере значительно влияет на метрики, а модификации TSM-блока улучшили результаты распознавания. Предложенный подход может быть хорошей отправной точкой для дальнейших исследований в области распознавания жестовых языков.
Статья: https://arxiv.org/pdf/2505.10267
Код: https://github.com/ai-forever/HandReader
В работе участвовали авторы Хабра:
Павел Коротаев @TOOF4CK
Петр Суровцев @petros000
Александр Капитанов @hukenovs
Карина Кванчиани @karinakvanchiani
Александр Нагаев @nagadit