
В этой статье мы представляем HaGRIDv2-1M — обновлённую и значительно расширенную версию HaGRID, самого полного датасета для распознавания жестов. Мы подробно рассмотрим его ключевые отличия от первого датасета, поделимся результатами экспериментов и представим новый real-time алгоритм для детекции динамических жестов, который был полностью обучен на HaGRIDv2-1M. Ссылки на данные, код и предобученные модели — в конце статьи.
Первая версия HaGRID быстро завоевала популярность в сообществе и стала основой для разработки и оценки нейронных сетей, работающих с жестами. Датасет активно используется как в классических задачах обучения и тестирования моделей (о чём писали, например, тут и тут), так и в неожиданных областях. Например, для генерации анатомически корректных изображений рук с помощью диффузионных моделей (об этом можно почитать тут, тут и тут). Обновление HaGRIDv2-1M значительно расширяет возможности применения датасета благодаря увеличенному набору жестов, позволяя тренировать более робастные и точные нейронные сети.
Введение
Жесты — это универсальный инструмент невербального взаимодействия человека и компьютера, поэтому их используют в робототехнике, автомобильной промышленности, медицине, умных домах и системах видеоконференций для управления устройствами. Представьте, что взмахом руки можно открыть занавески или перелистнуть слайд презентации, не отвлекаясь на клавиатуру.
Для обучения нейронных сетей, которые способны распознавать различные положения рук, требуются большие наборы данных, отвечающие множеству критериев. В первую очередь, подходящий набор данных должен охватывать различные категории жестов:

Однако некоторые из существующих жестовых датасетов не содержат необходимых нам категорий жестов. Другие не покрывают функциональные (то есть манипулятивные и контролирующие) жесты, третьи содержат или только статичные, или только динамические жесты. В то же время нейронная сеть, обученная на этих данных, должна быть крайне легковесной и эффективной, распознавая жесты в real-time режиме.

Ввиду этих недостатков существующих наборов данных мы решили расширить датасет HaGRID так, чтобы он стал удовлетворять всем перечисленным требованиям. Так появился HaGRIDv2-1M со следующими ключевыми особенностями:
15 новых манипулятивных и контролирующих жестов;
новые вариации естественных положений рук в классе «no gesture», чтобы уменьшить количество ложных срабатываний;
мы расширили функционал алгоритма распознавания динамических жестов, добавив различные вариации жестов «свайп», «клик», «drag-n-drop», «зум» и других.

Хотя HaGRIDv2-1M создавался для детекции жестов, его потенциал значительно шире: он применим для задач классификации жестов, детекции рук и генерации анатомически корректных жестов с помощью диффузионных моделей.
HaGRIDv2-1M
Рассказываем о пайплайне сбора данных, а также о ключевых характеристиках датасета.
Ключевые обновления
Мы добавили новые жесты «holy», «heart» (в двух вариациях), «middle finger», «gun» и «three3» в качестве разговорных жестов для выражения эмоций во время диалога.
Мы расширили группу контролирующих жестов для активации каких-либо функций системы, добавив жесты «thumb index», «grip», «point», «pinkie», «grabbing» и двуручные жесты «thumb index2», «timeout», «take photo», «xsign».
Некоторые из добавленных жестов были использованы нами для построения новых динамических жестов: «drag and drop», «click», «zoom in», «zoom out» и различных вариаций жеста «swipe».
Класс «no gesture» теперь включает в себя больше вариаций естественных положений рук, в отличие от HaGRID, где была всего одна вариация.

Пайплайн сбора данных
В посте на Хабр и статье мы уже писали о том, как собирались данные для HaGRID. Для создания HaGRIDv2-1M мы следовали такому же алгоритму, использовав Яндекс Задания и ABC Elementary в качестве краудсорсинговых платформ. Тем самым мы сохранили распределение изображений между двумя версиями.
Процесс остался неизменным в следующих этапах:
майнинг: краудворкеры фотографировали себя на камеру, показывая жесты из описания задания;
проверка: изображения проверялись на соответствие заданным критериям. Не проходящие проверку изображения удалялись;
фильтрация: из датасета исключались изображения с детьми, с людьми без одежды и изображения с различными надписями и символикой.
Разметка данных
Так как ручная разметка такого большого числа изображений — это дорогой и времязатратный процесс, мы решили его автоматизировать. Благодаря уже имеющемуся датасету HaGRID мы обучили модель YOLOv10x на задачу детекции рук, что позволило качественно определять bounding boxes на новых изображениях.
Далее нужно было найти руки в свободном положении, которые относятся к классу «no gesture». Для изображений с одноручными жестами мы смотрели, какая рука из двух находится выше или ниже другой. Нижнюю руку определяли как руку без жеста, а верхнюю — как руку с соответствующим жестом. Для двуручных жестов мы объединили два bounding box рук в один, формируя его от верхнего левого угла левой руки до нижнего правого угла правой руки. Единственное исключение составляет жест «xsign»: в нём два bounding boxes объединяются в квадрат, сторона которого равна расстоянию между крайними точками bounding boxes.
Полученная таким образом разметка отправлялась на валидацию на краудсорсинговой платформе, что позволило нам избавиться от некачественной разметки и оставить только качественные и чистые данные.
Помимо bounding boxes, мы разметили HaGRIDv2-1M ключевыми точками рук, полученными автоматически с помощью модели MediaPipe, что делает датасет ещё более универсальным для пользователей.

Финальная разметка представлена в JSON формате в виде словаря. В нём мы предоставляем не только bounding boxes и ключевые точки для рук и жестов, но и метаинформацию, включающую возраст, гендер и расу. Вся метаинформация была собрана полностью автоматически с использованием нейронных сетей, в связи с чем в этих данных могут быть ошибки и пропуски.
"04c49801-1101-4b4e-82d0-d4607cd01df0": {
"bboxes": [
[0.0694444444, 0.3104166667, 0.2666666667, 0.2640625],
[0.5993055556, 0.2875, 0.2569444444, 0.2760416667]
],
"labels": [
"thumb_index2",
"thumb_index2"
],
"united_bbox": [
[0.0694444444, 0.2875, 0.7868055556, 0.2869791667]
],
"united_label": [
"thumb_index2"
],
"user_id": "2fe6a9156ff8ca27fbce8ada318c592b",
"hand_landmarks": [
[
[0.37233507701702123, 0.5935673528948108],
[0.3997604810145188, 0.5925499847441514],
...
],
[
[0.37388438145820907, 0.47547576284667353],
[0.39460467775730607, 0.4698847093520443],
...
]
]
"meta": {
"age": [24],
"gender": ["female"],
"race": ["white"],
}
Характеристики датасета
HaGRIDv2-1M — это расширенная версия HaGRID. Мы добавили в датасет 531 358 новых изображений, разделённых на 15 новых классов жестов, и дополнительный класс «no gesture». В результате комбинация содержит более миллиона изображений в формате Full HD.
Новые изображения были получены благодаря участию ≈28K краудворкеров, которые снимали себя на камеру в реалистичных условиях. Это позволило сохранить распределение данных в HaGRIDv2-1M таким же, как в первой версии. Кроме того, набор данных разнообразен по возрасту, гендеру, яркости и расположению людей на снимках, что положительно влияет на обучение робастных и надёжных моделей. Датасет разбит на тренировочную, тестовую и валидационную выборки по уникальным идентификаторам людей, изображённых на снимках.


Алгоритм распознавания динамических жестов
Ранее мы разработали алгоритм для распознавания динамических жестов, основанный на статичных, что позволило обойтись без обучения на видео и обеспечить работу в реальном времени. С помощью HaGRIDv2-1M мы улучшили этот алгоритм, добавив поддержку жестов четырёх категорий: «swipe», «click», «zoom» и «drag-n-drop», с их вариациями для большей универсальности.

Алгоритм
Предложенный алгоритм работает на основе двух моделей: детектора рук и классификатора жестов, обученного различать кропы (вырезанные сегменты рук). Сперва каждый кадр видео обрабатывается отдельно и независимо от предыдущих с помощью лёгкой и быстрой RFB-модели для детекции рук. Далее найденные сегменты рук вырезаются и подаются на вход классификатору жестов (в качестве классификатора мы используем один Residual Block). Получив конкретный жест для каждого кадра, мы создаем очередь, где собираем последние n показанных жестов. Проанализировав очередь, мы можем понять, какой из динамических жестов был показан, посмотрев на начальный и конечный жесты. Например, чтобы распознать «свайп вправо», достаточно понять, что в очереди имеется жест с рукой, направленной влево, а за ним — жест с рукой, направленной вправо.
Чтобы обеспечить корректную работу алгоритма, мы использовали ряд эвристик для идентификации корректно показанных жестов. При распознавании мы обращаем внимание на количество кадров, которые прошли со стартового статичного жеста до конечного. Кроме того, мы следим за положением руки в промежуточных состояниях, чтобы уменьшить количество ложных срабатываний. Такие проверки могут быть подобраны под нужды пользователя и являются гиперпараметрами системы.

Большим преимуществом этого алгоритма является эффективность и расширяемость. RFB-детектор имеет 276K параметров, в то время как классификатор кропов — всего 102K. Алгоритм легко расширить, его можно модифицировать для распознавания любых жестов на усмотрение пользователей. Чтобы добавить новые жесты, достаточно дообучить классификатор кропов на произвольное количество статичных жестов, из которых будут формироваться динамические, и добавить эвристические проверки. Однако важно отметить, что, так как алгоритм основан на детерминированных проверках и условиях, полученная система не обладает качествами робастных моделей. Она требует, чтобы жесты показывались чётко в соответствии с референсами.
Эксперименты
Мы провели ряд экспериментов, которые можно разбить на три категории: (1) базовые эксперименты, подтверждающие применимость датасета для обучения качественных моделей; (2) cross-dataset evaluation, сравнивающий наш датасет с существующими датасетами жестов; (3) эксперименты, подтверждающие преимущества HaGRIDv2-1M по сравнению с первой версией HaGRID.
Базовые эксперименты
Базовые эксперименты можно разделить на три группы:
детекция рук;
детекция жестов;
классификация жестов.
Для экспериментов мы использовали метрики и параметры обучения, представленные в таблице:
Классификация жестов (33 класса, без «no gesture») | Детекция рук / жестов | |
Метрика | F1-Score | Mean Average Precision (mAP) |
GPU | H100 с 80 Гб видеопамяти | |
Batch size | 128 | |
Количество эпох | 100 | |
Early stopping | Остановка после 10 эпох без улучшения метрики на 0,01 |
Детекция жестов и рук. Для задачи детекции жестов и рук мы использовали модели YOLOv10n и YOLOv10x, а также модель SSDLite MobileNetV3 Large. Аугментации для обучения SSDLite не использовались, в то время как для YOLO модели мы использовали стандартный набор аугментаций, таких как мозаика, hsv и horizontal flip.
Классификация жестов. В качестве моделей классификации мы использовали ResNet18, ResNet152, MobileNetV3 Small, MobileNetV3 Large, ViT-B16 (предобученный), а также ConvNeXt Base.

Результаты экспериментов. Метрики показали эффективность нового датасета в обучении робастных моделей. Чтобы убедиться в качестве полученных моделей, вы можете протестировать их работу в реальных условиях, запустив нашу демо-версию, доступную в репозитории.

Cross-dataset evaluation
Мы провели сравнение HaGRIDv2-1M с другими датасетами жестов для задачи детекции жестов и рук. Для проведения cross-dataset evaluation мы использовали самую маленькую модель YOLOv10n с гиперпараметрами и аугментациями, аналогичными базовым экспериментам. Для контроля качества детекции мы также использовали метрику mAP. Сравнение с датасетами для классификации не проводилось из-за нехватки данных, с которыми можно было бы сравниться.
1. Детекция жестов
HANDS и OUHANDS — наиболее подходящие наборы данных для cross-dataset evaluation, к которым мы смогли получить доступ. Для чистоты экспериментов мы оставили в каждом из наборов данных только пересекающиеся c HaGRIDv2-1M жесты: «fist», «one», «palm», «peace» и «three». Мы обучили YOLOv10n на каждом датасете, чтобы протестировать работу на тестовых выборках оставшихся.
Результаты. Из таблицы ниже видно, что HaGRIDv2-1M обладает наилучшей обобщающей способностью. Кроме того, HaGRIDv2-1M показал самую низкую метрику во время тестирования, что говорит о сложности его тестовой выборки для моделей, обученных на данных из другого распределения. Обратите внимание, что при подсчёте средних метрик диагональные значения не учитывались для более честного сравнения.

2. Детекция рук
В качестве датасетов, специально предназначенных для задачи детекции рук, мы выбрали BodyHands, Human-Parts и EgoHands. Кроме того, мы включили в сравнение первую версию датасета HaGRID, чтобы понять, как добавление новых жестов повлияло на пригодность набора данных для обучения детектора рук. Тренировочная, валидационная и тестовая выборки HaGRIDv2-1M и HaGRID не пересекаются.

Результаты. Стоит отметить, что обе версии датасета HaGRID изначально не предназначались для задачи детекции рук; изображения в них менее разнообразны и сложны по сравнению с датасетами, специально созданными для этой задачи. Тем не менее, HaGRIDv2-1M демонстрирует высокую обобщающую способность. Кроме того, модель, обученная на HaGRIDv2-1M, показывает более высокие метрики на тесте по сравнению с моделью, обученной на HaGRID. Это свидетельствует о том, что увеличение количества классов значительно улучшает обобщающую способность модели.

HaGRIDv2-1M vs HaGRID
Чтобы показать преимущество HaGRIDv2-1M в сравнении с HaGRID, мы провели три эксперимента:
сравнение качества моделей, предобученных на HaGRIDv2-1M и HaGRID;
сравнение количества ложных срабатываний системы распознавания жестов для моделей, обученных на обеих версиях датасета;
side-by-side (SBS) сравнение генерации диффузионной модели после fine-tuning на каждом из датасетов.
Pre-train Impact
Мы сравнили HaGRID и HaGRIDv2-1M в качестве датасетов для предварительного обучения, чтобы показать, что увеличение количества сэмплов и разнообразия классов в HaGRIDv2-1M стабильно даёт более качественные результаты. Для классификации жестов использовалась модель ResNet18, для детекции жестов — YOLOv10 с применением тех же гиперпараметров и метрик, что и в базовых экспериментах. Мы использовали датасеты HANDS и OUHANDS для детекции жестов и датасеты Kinect Leap, Senz3D, OUHANDS и HANDS для классификации. На графике ниже можно увидеть, что предобучение на HaGRIDv2-1M дает значительный прирост метрик в сравнении с предобучением на HaGRID.

False Positive Triggering
Так как первая версия HaGRID содержала довольно однообразные позы рук в классе «no gesture», мы решили оценить количество ложных срабатываний у моделей, обученных на двух версиях датасета. Для этого мы обучили два детектора жестов YOLOv10n: один на оригинальном датасете HaGRID, а другой — на HaGRIDv2-1М. Каждую обученную модель мы протестировали на сэмплах класса «no gesture» из тестового набора данных HaGRIDv2-1M.
В результате модель, обученная на HaGRIDv2-1М, показала в шесть раз меньше ложных срабатываний по сравнению с моделью, обученной на оригинальном HaGRID. Метрики mAP составили 57% для HaGRID и 72,9% для HaGRIDv2-1М, что подчёркивает необходимость новых сэмплов класса «no gesture».

Генерация жестов
Ни для кого не секрет, что диффузионные модели, такие как Stable Diffusion, зачастую не справляются с генерацией анатомически корректных рук и жестов. Мы решили проверить, поможет ли HaGRIDv2-1M в дообучении диффузионных моделей. Кроме того, мы сравнили дообучение на датасете HaGRID и на датасете HaGRIDv2-1M, чтобы выяснить, как добавление новых жестов влияет на генерацию.
Для проведения такого эксперимента мы дообучили две модели Stable Diffusion 2.1 с использованием метода LoRA (Low-Rank Adaptation) на датасетах HaGRID и HaGRIDv2. Чтобы обучить такие модели, каждое изображение из датасета было автоматически аннотировано сгенерированным с помощью модели BLIP-2 описанием, в которое мы добавили название соответствующего жеста:
{BLIP-2 описание изображения} showing {название жеста}
Чтобы сравнение получилось честным, мы также сравнили модели, дообученные на наших датасетах, с оригинальной моделью Stable Diffusion 2.1 без дообучения.
Мы оценили качество генерации 18 жестов из оригинального HaGRID и 26 жестов из HaGRIDv2-1M, исключив специфичные жесты и оставив только по одной версии каждого жеста. Каждая модель сгенерировала по три изображения для каждого жеста, всего по шесть изображений на жест. Далее мы провели SBS-сравнение, в котором три человека оценивали каждую пару изображений по двум критериям: (1) анатомическая точность рук; (2) соответствие референсному жесту.

Результаты. Модель, дообученная на HaGRIDv2, показала лучшие результаты в генерации жестов благодаря большему разнообразию классов — это позволило легче воспроизводить специфические позы рук. Однако модель, дообученная на оригинальном HaGRID, показала немного лучшую анатомическую точность из-за более простого набора данных и отсутствия сложных поз. Сравнение с оригинальной моделью Stable Diffusion 2.1 продемонстрировало, что без дообучения Stable Diffusion имеет очень низкое качество генерации жестов. Кроме того, анатомическая точность воспроизведения рук также оставляет желать лучшего.


Заключение
В данной статье мы представили HaGRIDv2-1M — обновлённую версию широко известного датасета жестов, на данный момент крупнейший и наиболее разнообразный источник данных для систем распознавания жестов. Репозитории с датасетом и предобученными моделями, а также с алгоритмом динамических жестов уже доступны по ссылкам: HaGRIDv2-1M, Dynamic Gesture Recognition.
Будем рады получить ваш фидбек!
Коллектив авторов
Антон Нуждин - @AntonNuzhdin
Александр Нагаев - @nagadit
Александр Саутин - @AlexS_340
Александр Капитанов - @hukenovs
Карина Кванчиани - @karinakvanchiani
Ссылки
Не забывайте подписываться на телеграм-канал нашей команды!