Руководство по задаче распознавания жестов

Рука, показывающая жест "большой палец вверх", который модель идентифицирует как жест "большой палец вверх" с вероятностью 63%. Рейтинг

Задача MediaPipe Gesture Recognizer позволяет распознавать жесты рук в реальном времени и предоставляет результаты распознавания жестов вместе с ориентирами обнаруженных рук. Вы можете использовать эту задачу для распознавания конкретных жестов рук пользователя и вызова функций приложения, соответствующих этим жестам.

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

Попробуйте!

Начать

Начните использовать эту задачу, следуя одному из этих руководств по реализации для вашей целевой платформы. Эти руководства, специфичные для каждой платформы, проведут вас через базовую реализацию этой задачи с использованием рекомендуемой модели и предоставят примеры кода с рекомендуемыми параметрами конфигурации:

Детали задачи

В этом разделе описываются возможности, входные и выходные данные, а также параметры конфигурации данной задачи.

Функции

  • Обработка входного изображения — обработка включает в себя поворот изображения, изменение размера, нормализацию и преобразование в цветовое пространство.
  • Пороговое значение оценки — фильтрация результатов на основе оценок прогноза.
  • Метки allowlist и denylist — укажите категории жестов, распознаваемые моделью.
Входные данные задачи Результаты выполнения задачи
Распознаватель жестов принимает на вход данные одного из следующих типов:
  • Неподвижные изображения
  • Расшифрованные видеокадры
  • Прямая видеотрансляция
Распознаватель жестов выдает следующие результаты:
  • Категории жестов рук
  • Определение ведущей руки по результатам анализа
  • Ориентиры обнаруженных рук в координатах изображения
  • Ориентиры обнаруженных рук в мировых координатах

Параметры конфигурации

Данная задача имеет следующие параметры конфигурации:

Название варианта Описание Диапазон значений Значение по умолчанию
running_mode Задает режим выполнения задачи. Существует три режима:

ИЗОБРАЖЕНИЕ: Режим для ввода одного изображения.

ВИДЕО: Режим декодирования кадров видео.

LIVE_STREAM: Режим для потоковой передачи входных данных в реальном времени, например, с камеры. В этом режиме необходимо вызвать функцию resultListener для настройки слушателя, который будет получать результаты асинхронно.
{ IMAGE, VIDEO, LIVE_STREAM } IMAGE
num_hands Устройство GestureRecognizer может распознать максимальное количество рук. Any integer > 0 1
min_hand_detection_confidence Минимальный показатель достоверности, необходимый для успешного обнаружения руки в модели распознавания ладони. 0.0 - 1.0 0.5
min_hand_presence_confidence Минимальный показатель достоверности наличия руки в модели обнаружения ориентиров руки. В режиме видео и режиме прямой трансляции Gesture Recognizer, если показатель достоверности наличия руки в модели обнаружения ориентиров руки ниже этого порога, запускается модель обнаружения ладони. В противном случае используется облегченный алгоритм отслеживания руки для определения местоположения руки (рук) для последующего обнаружения ориентиров. 0.0 - 1.0 0.5
min_tracking_confidence Минимальный показатель достоверности, при котором отслеживание руки считается успешным. Это пороговое значение IoU ограничивающей рамки между руками в текущем кадре и в предыдущем кадре. В видеорежиме и потоковом режиме распознавания жестов, если отслеживание не удается, распознаватель жестов запускает обнаружение рук. В противном случае обнаружение рук пропускается. 0.0 - 1.0 0.5
canned_gestures_classifier_options Параметры для настройки поведения классификатора стандартных жестов. Стандартные жесты: ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
  • Локаль для отображаемых имен: локаль, используемая для отображаемых имен, указанных в метаданных модели TFLite, если таковые имеются.
  • Максимальное количество результатов: максимальное число результатов классификации с наивысшим баллом, которое необходимо вернуть. Если < 0, будут возвращены все доступные результаты.
  • Пороговое значение оценки: оценка, ниже которой результаты отклоняются. Если установлено значение 0, будут возвращены все доступные результаты.
  • Список разрешенных категорий: список разрешенных названий категорий. Если он не пуст, результаты классификации, категория которых не входит в этот набор, будут отфильтрованы. Взаимоисключающий параметр со списком запрещенных категорий.
  • Список запрещенных категорий: список запрещенных названий категорий. Если он не пуст, результаты классификации, категория которых входит в этот набор, будут отфильтрованы. Взаимоисключающий список разрешенных категорий.
    • Отображаемые имена (локаль): any string
    • Максимальное количество результатов: any integer
    • Пороговое значение оценки: 0.0-1.0
    • Список разрешенных категорий: vector of strings
    • Список запрещенных категорий: vector of strings
    • Отображаемые имена, локаль: "en"
    • Максимальное количество результатов: -1
    • Пороговое значение оценки: 0
    • Список разрешенных категорий: пусто
    • Список запрещенных категорий: пуст
    custom_gestures_classifier_options Параметры для настройки поведения классификатора пользовательских жестов.
  • Локаль для отображаемых имен: локаль, используемая для отображаемых имен, указанных в метаданных модели TFLite, если таковые имеются.
  • Максимальное количество результатов: максимальное число результатов классификации с наивысшим баллом, которое необходимо вернуть. Если < 0, будут возвращены все доступные результаты.
  • Пороговое значение оценки: оценка, ниже которой результаты отклоняются. Если установлено значение 0, будут возвращены все доступные результаты.
  • Список разрешенных категорий: список разрешенных названий категорий. Если он не пуст, результаты классификации, категория которых не входит в этот набор, будут отфильтрованы. Взаимоисключающий параметр со списком запрещенных категорий.
  • Список запрещенных категорий: список запрещенных названий категорий. Если он не пуст, результаты классификации, категория которых входит в этот набор, будут отфильтрованы. Взаимоисключающий список разрешенных категорий.
    • Отображаемые имена (локаль): any string
    • Максимальное количество результатов: any integer
    • Пороговое значение оценки: 0.0-1.0
    • Список разрешенных категорий: vector of strings
    • Список запрещенных категорий: vector of strings
    • Отображаемые имена, локаль: "en"
    • Максимальное количество результатов: -1
    • Пороговое значение оценки: 0
    • Список разрешенных категорий: пусто
    • Список запрещенных категорий: пуст
    result_callback Настраивает обработчик результатов для асинхронного получения результатов классификации, когда распознаватель жестов находится в режиме прямой трансляции. Может использоваться только в том случае, если для параметра running mode установлено значение LIVE_STREAM ResultListener Н/Д Н/Д

    Модели

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

    Название модели Форма входных данных Тип квантования Модель карты Версии
    HandGestureClassifier 192 x 192, 224 x 224 поплавок 16 информация Последний

    Эта задача также поддерживает модификацию пакета моделей с помощью Model Maker. Для получения дополнительной информации об использовании Model Maker для настройки моделей для этой задачи см. страницу « Настройка моделей для распознавателя жестов» .

    Комплект моделей ориентиров для рук

    Пакет моделей для определения ключевых точек на кисти позволяет определять локализацию 21 координаты суставов пальцев в пределах обнаруженных областей кисти. Модель была обучена на примерно 30 000 реальных изображениях, а также на нескольких визуализированных синтетических моделях кистей, наложенных на различные фоны. Определение 21 контрольной точки приведено ниже:

    Коды для конкретных точек опоры на руке

    Пакет моделей для определения ориентиров на руках включает в себя модель обнаружения ладони и модель обнаружения ориентиров на руках. Модель обнаружения ладони локализует область рук на всем входном изображении, а модель обнаружения ориентиров на руках находит ориентиры на обрезанном изображении руки, определенном моделью обнаружения ладони.

    Поскольку модель обнаружения ладони требует значительно больше времени, в режиме видео или прямой трансляции распознаватель жестов использует ограничивающую рамку, определенную обнаруженными ориентирами рук в текущем кадре, для локализации области рук в следующем кадре. Это сокращает количество срабатываний модели обнаружения ладони распознавателем жестов. Модель обнаружения ладони запускается для повторной локализации рук только тогда, когда модель ориентиров рук больше не может идентифицировать достаточное количество рук или отслеживание рук не удается.

    пакет моделей классификации жестов

    Пакет моделей классификации жестов способен распознавать следующие распространенные жесты рук:

    0 - Unrecognized gesture, label: Unknown
    1 - Closed fist, label: Closed_Fist
    2 - Open palm, label: Open_Palm
    3 - Pointing up, label: Pointing_Up
    4 - Thumbs down, label: Thumb_Down
    5 - Thumbs up, label: Thumb_Up
    6 - Victory, label: Victory
    7 - Love, label: ILoveYou
    

    Если модель обнаруживает руки, но не распознает жест, распознаватель жестов возвращает результат «None». Если модель не обнаруживает руки, распознаватель жестов возвращает пустое значение.

    Пакет моделей классификации жестов содержит двухэтапный конвейер нейронной сети, включающий модель встраивания жестов, за которой следует модель классификации жестов. Подробнее см. в карточке модели классификации жестов .

    Модель встраивания жестов кодирует признаки изображения в вектор признаков, а модель классификации представляет собой облегченный классификатор жестов, принимающий этот вектор признаков в качестве входных данных. Предоставленный пакет моделей классификации жестов содержит стандартный классификатор жестов, который распознает 7 распространенных жестов рук, описанных выше. Вы можете расширить пакет моделей для распознавания большего количества жестов, обучив собственный пользовательский классификатор жестов. Подробнее см. в разделе «Пользовательские модели» .

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

    Контрольные показатели задач

    Ниже представлены результаты тестирования производительности всего конвейера на основе предварительно обученных моделей. Результат по задержке — это средняя задержка на Pixel 6 с использованием CPU/GPU.

    Название модели Задержка ЦП Задержка графического процессора
    GestureRecognizer 16,76 мс 20,87 мс

    Пользовательские модели

    Если вы хотите улучшить или изменить возможности моделей, предоставленных в этом задании, вы можете использовать Model Maker для модификации существующих моделей. Пользовательские модели, используемые с MediaPipe, должны быть в формате .task , который представляет собой файл пакета моделей. Перед созданием собственных моделей рекомендуется использовать Model Maker для модификации предоставленных для этого задания моделей.

    Для получения дополнительной информации о настройке модели для этой задачи см. раздел «Настройка моделей для распознавателя жестов» .