Привет, Хабр! Наша команда RnD CV продолжает приближать момент, когда компьютер по видео сможет распознавать жестовый язык (ЖЯ) глухих так же качественно, как речь.
Сегодня мы расскажем, как собрали один из самых больших в мире датасетов изолированного русского жестового языка Logos, чем различаются визуально одинаковые жесты, как мы с помощью нашего датасета обучили универсальную модель-энкодер и попутно заняли первую строчку в бенчмарке распознавания американского жестового языка. По итогам этой работы мы опубликовали препринт.

Введение
Распознавание жестового языка — это интересная научная задача на стыке компьютерного зрения и обработки естественного языка. Вместе с тем она имеет практическое применение и безусловную социальную пользу. Поэтому она привлекает множество исследователей, но до сих пор никем удовлетворительно не решена.
При распознавании непрерывной речи на ЖЯ возникает несколько проблем. Само по себе обучение нейросети распознаванию отдельных жестов в непрерывном потоке — непростая задача. К тому же, у жестового языка иное построение предложений, чем у устного: порядок жестов может отличаться от порядка слов в показываемой фразе. А сделать разметку, в какой момент какой жест показывают на видео, — очень трудоёмкая задача, требующая редкой специальности сурдопереводчика. Поэтому обучающих данных с разметкой отдельных жестов и привязкой ко времени очень мало во всём мире. Для русского ЖЯ их вообще нет. В лучшем случае в разметке приводится последовательность показанных на видео жестов. Но и таких данных немного: самые известные — немецкий и китайский наборы данных. В основном же приходится обходиться слабой разметкой: вольным текстовым переводом того, что показано жестовым языком на фрагменте видео.
Ранее мы делали для Хабра обзор некоторых подходов, с помощью которых пытаются решать эту задачу. Большинство из них включает в себя предварительное обучение на более простой задаче распознавания жестов по отдельности (ISLR — Isolated Sign Language Recognition). Похожим образом мы учим иностранный язык: можно, конечно, пытаться выучить его, просматривая множество фильмов, но лучше всё-таки сначала запомнить отдельные слова.
Данные
Мы уже писали о том, как собрали набор данных изолированных жестов русского ЖЯ Slovo и получили с его помощью лидирующие результаты в бенчмарке американского ЖЯ. Однако для подготовки хорошего предобученного энкодера для использования в более сложных задачах этого оказалось недостаточно. Поскольку мы решаем задачу распознавания языка, не ограниченного какой-то узкой темой, словарь датасета Slovo из 1 тыс. слов оказывается маловат, да и обучающих примеров нужно больше. Поэтому мы продолжили работу по сбору данных и увеличили в пять раз количество обучающих примеров и почти в три раза — размер словаря.
Для расширения набора данных мы выбрали 3 тыс. самых часто употребляемых лемм из частотного словаря русского языка. Отбросили те, которые уже присутствовали в наборе данных Slovo, а также те, которых не оказалось в словаре ЖЯ SpreadTheSign. Получилось 1 863 новые леммы. Для них мы запустили сбор видео на краудсорсинговых платформах.
Пользователи, которые хотели принять участие в сборе данных должны были сдать на тех же платформах экзамен на знание жестового языка. Отдельно организовали проверку: другие пользователи должны были подтвердить, что на видео записан именно тот жест, который требовался.
Logos и его особенности
Мы назвали новый датасет изолированного жестового языка Logos. В сумме в его словаре 2 863 леммы, он содержит 200 тыс. видеофрагментов с отдельными жестами длительностью 3–4 сек., записанных 381 демонстратором. Это делает наш набор данных одним из самых больших в мире. Как вы чуть позже увидите, это количественное изменение приводит к качественному скачку.
Ниже приведены публично доступные наборы данных изолированных жестов:

1 Для этих наборов данных большая часть разметки сделана автоматически.
2 На самом деле, набор данных содержит 70730 примеров, записанных с четырёх ракурсов каждый.
3 Эти жесты объединены в 2004 класса VSSign.
В колонке VSSigns значение grouped означает, что в разметке набора данных визуально сходные жесты объединены в группы, а addressed — что сходные жесты не объединены, но работа посвящена улучшению их распознавания. Остальные строки — сходные жесты не объединены.
Подробнее эти наборы данных описаны в нашем препринте.
Проблема визуально сходных жестов
Количество и разнообразие данных — не единственное отличие нового датасета. Ещё на предыдущих этапах работы мы заметили, что в жестовом языке разные слова часто обозначаются одними и теми же либо очень похожими жестами. Таких схожих жестов много. Это не только близкие по смыслу «летать» и «крыло», которые можно назвать многозначными жестами, но и, к примеру, «овца» и «разгневанный». Или «прекрасный» и «макароны». Примеры таких жестов — на рисунке в начале статьи.
Строго говоря, эти жесты совпадают не полностью: одинаковое движение рук может сопровождаться различными выражениями лица и артикуляцией — проговариванием слова, то есть так называемыми немануальными компонентами жеста. Хотя эти компоненты важны в жестовом языке, на практике схожие жесты в основном интерпретируются по контексту. Так же мы в речи различаем смысл омонимов, например, «лук» или «коса». В нашей работе мы называем такие жесты визуально сходными (VSSigns — Visually Similar Signs).
Поскольку в нашем наборе данных Slovo за основу взят список слов, которые надо показать, то разные видеообразцы визуально сходных жестов оказались помечены разными классами. Это же наблюдается и в большинстве других существующих датасетов различных жестовых языков. Из 20 рассмотренных нами наборов данных только в трёх авторы специально объединили образцы визуально сходных жестов (см. таблицу выше). Нам также известны две работы, где авторы стремятся обучить модель лучше распознавать разные значения визуально сходных знаков. Это даёт некоторое улучшение результатов на наборах данных, в которых метки сходных жестов не объединены. В таблице эти работы отмечены «addressed» в графе «VSSigns».
Однако наша основная задача — не научиться классифицировать такие жесты вне контекста, а предобучить модель, которую можно будет использовать как качественный энкодер, извлекающий из видео информацию о структуре жеста для более сложной задачи распознавания непрерывной речи на ЖЯ. До сих пор никто не проводил исследований, как влияет разметка визуально сходных жестов на качество обученной на этих данных модели при использовании как энкодера в последующих задачах. Ключевая особенность набора данных Logos, кроме большого размера, — то, что для представленных в нём жестов указаны не только исходные показанные слова — «глоссы», но и объединение таких жестов в группы, различающиеся только немануальным компонентом. Эта работа проводилась в тесном взаимодействии с экспертами из Всероссийского общества глухих (ВОГ).
Первоначально мы обучили модель классифицировать 2 863 классов, соответствующих леммам, входящим в набор данных Logos. Отобрали пары классов, между которыми модель ошибается чаще всего или делает очень неуверенный выбор. Если эксперты ВОГ подтверждали, что какая-то пара жестов отличается только немануальным компонентом, то присваивали им общую групповую метку. Группировку мы уточняли трижды, обучая заново модель на сгруппированных метках. В результате, помимо 2 863 меток отдельных слов, каждый видеопример помечен одной из 2 004 меток, учитывающих группировку сходных жестов.
Ещё до исследования, насколько применима полученная модель в качестве энкодера, мы обнаружили, что модель, обученная на объединённых визуально сходных жестах, на самом датасете Logos даёт большую точность там, где, казалось бы, делать этого не должна. Мы обучили две модели: на исходной не сгруппированной разметке из 2 863 классов и на сгруппированной, включающей в себя 2 004 класса. Жесты можно поделить на те, которые не сходны с каким-либо другим жестом (non-VSSigns), и те, у которых есть сходные с ними жесты (VSSigns). Первые имеют уникальные метки и до, и после объединения. Вторые при объединении получили общую метку с одним или более жестом, обозначающим другие слова. Понятно, что модель, обученную для распознавания классов до группировки, можно применить для классификации с учётом группировки: достаточно для её результатов посмотреть, какую сгруппированную метку имеет выдаваемый ей класс.
Результаты применения моделей, обученных на исходных не сгруппированных 2 863 классах и на 2 004 классах после группировки — в таблице:

Модель, обученная предсказывать один из 2 863 исходных классов без группировки (последняя строка таблицы), часто ошибается на визуально сходных классах. Она в целом менее точна по сравнению с моделью, для которой самые трудно различимые классы объединили и назначили им общую метку (первая строка). Неожиданно вот что: такая модель работает хуже даже на тех жестах, разметка которых при объединении не менялась (non-VSSigns). Ещё она хуже умеет распознавать жесты, у которых есть сходные с ними (VSSigns), даже если не учитывать ошибки между сходными жестами, объединив их метки (средняя строка в таблице по сравнению с первой).
Получается, попытка заставить модель распознавать более тонкие нюансы, связанные с немануальными компонентами визуально сходных жестов, приводит к худшему результату, чем просто игнорирование этих отличий. Эту особенность до нас никто не исследовал, хотя визуально сходные жесты присутствуют в большинстве датасетов жестового языка.
Однако наша основная задача — получить максимально качественный энкодер, который будет численно кодировать структуру жестов, чтобы применить его для распознавания непрерывного ЖЯ. Поскольку сама задача распознавания непрерывного ЖЯ сложна, чтобы оценить качество получающейся модели как универсального энкодера, мы выбрали более простую цель: перенос знаний (transfer learning) для обучения распознаванию других жестовых языков, для которых имеется намного меньше обучающих данных.
Классический подход к подобным задачам: берём модель, обученную на большом наборе данных — в данном случае на нашем новом датасете Logos, — «отрезаем» ей последний классифицирующий слой, добавляем новый классификатор с нужным нам набором классов и обучаем. Если новых данных достаточно, то можно обучать модель целиком, включая энкодер. Так при работе с картинками часто обучают модели, инициализируя их весами, полученными в результате предобучения, например, на ImageNet. Но если обучающих данных мало, то оставляют обучаться только классификатор, а энкодер замораживают, чтобы избежать переобучения. Именно в этом случае важно, чтобы энкодер умел формировать универсальные векторы признаков, а не только различал классы, на которых был обучен. На такой задаче мы и будем проверять качество нашей модели как универсального энкодера.
Для этого возьмем два набора данных: WLASL с американским ЖЯ (ASL) и AUTSL с турецким (TSL). В первом 21 083 обучающих примера для 2 тыс. слов, во втором — 38 336 для 226. В каждом наборе данных отберём по три случайных обучающих примера для каждого слова и попробуем обучить на них модель для классификации, используя наш энкодер. Ну и на датасете целиком тоже заодно попробуем, что уж там. Проверочную часть наборов данных в обоих случаях не трогаем. Модель используем обученную на Logos с объединением и без объединения VSSigns.
Результат для каждого из двух датасетов в полном и обрезанном до трёх примеров на класс вариантах — ниже.

Как видим, и тут модель с объединёнными визуально сходными знаками работает лучше.
Впрочем, возникает вопрос: может быть, для задачи переноса на другой язык и не нужен универсальный энкодер? Может быть, жесты в ЖЯ разных народов настолько похожи, что достаточно выучить, какому русскому жесту соответствует какой американский или турецкий жест, и наоборот? И можно применять модель, обученную на данных русского ЖЯ, для распознавания иностранных ЖЯ?
Для этого попробуем не обучать новый классификатор, а найти наилучшую матрицу сопоставления русских жестов с жестами других языков, используя обучающие выборки выбранных наборов данных. А потом протестируем, что получится, если распознавать иностранные жесты моделью, обученной на русском ЖЯ, и делать перевод, используя найденную матрицу в качестве словаря. Результат вот:

Как видите, вариант со словарём существенно менее точен. Это доказывает, что для переноса задачи на другой жестовый язык недостаточно уметь распознавать те жесты, которые модель видела при обучении. Нужен энкодер, способный закодировать описание таких жестов, которые ранее не видел. И на основе Logos такой энкодер получилось сделать.
Как уже говорилось, возможность обучить универсальный энкодер, пригодный для переноса на распознавание других языков, появилась из-за того, что наш датасет — один из самых больших в мире по каждому из параметров: количество обучающих примеров, размер словаря и количество классов. И, пожалуй, самым большим по общему балансу этих параметров, что характеризует разнообразие набора данных.
Чтобы оценить, насколько важен размер набора данных, мы повторили описанный выше эксперимент с переносом предобученного энкодера на другой язык, но использовали для предобучения не Logos, а датасет другого ЖЯ с меньшим объёмом данных. То есть для американского WLASL используем энкодер, предобученный на турецком AUTSL, и наоборот.

Оказалось, размер имеет значение: попытки использовать для предобучения менее мощный датасет не то чтобы совсем не работают, но выглядят очень слабо. Таким образом, собранный нами набор данных Logos можно рассматривать как некий аналог ImageNet для предобучения задач по распознаванию жестового языка.
До сих пор мы применяли обучение с замороженным энкодером, чтобы оценить его качество. Однако наилучшую точность на целевых наборах данных мы смогли достичь, полностью (без «замораживания») обучая модель, предобученную на Logos, используя все три датасета одновременно. При этом для данных из каждого датасета использовали свой классификатор.
В результате на бенчмарке WLASL-2000 мы смогли получить точность 65,4%, что существенно выше известных ранее результатов, представленных в других статьях, а также нашего предыдущего результата. Для наглядности — график SOTA (State of the Art) результатов за предшествующие четыре года:


Для обучения мы использовали реализацию архитектуры MViTv2-Small в репозитории MMAction2. Подробности описаны в нашем препринте.
Оставайтесь с нами, мы надеемся в будущем ещё рассказать о новых достижениях!
В работе участвовали авторы Хабра:
Илья Оводов @iovodov
Петр Суровцев @petros000
Карина Кванчиани @karinakvanchiani
Александр Капитанов @hukenovs
Александр Нагаев @nagadit
А также эксперты Всероссийского общества глухих (ВОГ) и 381 знаток русского жестового языка, принявший участие в записи данных.