Раджабзода Комил Рамазон
Ассистент кафедры Автоматизированные Системы Обработки Информации и Управления,
факультет Цифровых технологий, систем и защиты информации
Таджикского Технического Университета имени академика М.С. Осими
Аннотация
В данной статье проводится анализ методов распознавания жестов с использованием инструментов компьютерного зрения и машинного обучения, а также реализуется пример распознавания жестов на основе подхода извлечения и классификации признаков жестовго языка с применением технологий машинного обучения.
Абстракт
Распознавание жестов является ключевой технологией взаимодействия человека и компьютера, позволяющей определять положение рук и пальцев, что составляет основу дактильной азбуки. В этой статье рассматривается комплексный конвейер для распознавания жестов, интегрирующий компьютерное зрение для извлечения признаков и машинное обучение для классификации. Проведя анализ задачи по распознаванию жестов дактильного алфавита будет реализован метод и соостветствующий пример, состоящий из трёх основных этапов: реализации сбора данных, извлечения признаков с помощью феймворка MediaPipe и классификации с помощью алгоритма Случайного Леса (Random Forest). Методология использует глубокое обучение и инструмент MediaPipe для обнаружение ориентиров руки и надежное ансамблевое обучение методом Случайного Леса. Также будут рассматриваться научные основы данного подхода и проведена оценка производительности, а также анализ возможных улучшений.
Ключевые слова: распознавание, жесты, дактиль, обучение, нейросеть
1. Введение
Распознавание жестов обеспечивает взаимодействие между людьми и компьютерными системами, с приложениями виртуальной реальности, играми и вспомогательными технологиями. В этой статье рассматривается система распознавания жестов, разработанная на языке программирования Python и состоящяя из следующих основных частей:
- Сбор данных: захват изображений рук с использованием библиотеки OpenCV.
- Извлечение признаков: извлечение ориентиров рук с помощью MediaPipe.
- Классификация: обучение модели случайного леса для классификации и определения жестов.
Система обрабатывает изображения рук для обнаружения жестов, используя компьютерное зрение и машинное обучение. Проводится анализ методов и научных принципов, включая ключая глубокое обучение для определения ориентиров рук и методы классификации.
2. Методология
2.1 Сбор данных
Первый этап включает в себя захват изображений рук с помощью OpenCV, широко используемой библиотеки компьютерного зрения [1]. Код инициализирует устройство видеозахвата (веб-камеру) для получения кадров, которые сохраняются в виде файлов в формате JPEG для коллекции жестов.
Методы OpenCV:
– cv2.VideoCapture(0): Инициализирует поток с веб-камеры.
– cap.read(): Записывает кадры в виде массивов NumPy.
– cv2.imwrite(): Сохраняет кадры на диск.
Процесс: Для каждого класса жестов по запросу пользователя собирается 100 изображений, что обеспечивает разнообразие данных для последующего обучения.
Этот процесс обеспечивает получение контролируемого набора данных, что имеет решающее значение для обучения под наблюдением. Использование изображений RGB соответствует стандартным методам компьютерного зрения, предоставляя богатую пространственную информацию для извлечения признаков.
2.2 Извлечение признаков с помощью MediaPipe
Фреймворк MediaPipe, разработанный компанией Google, используется для извлечения 21 ориентира руки из статических изображений [2]. Код обрабатывает предварительно собранные изображения, преобразуя их в RGB и анализируя их с помощью модуля MediaPipe Hands.
Конвейер MediaPipe:
– cv2.imread(): загружает изображения с диска.
– cv2.cvtColor(BGR2RGB): преобразует изображения в RGB для совместимости с MediaPipe.
– hands.process(): обнаруживает ориентиры, возвращая нормализованные (x, y) координаты.
Нормализация: координаты нормализуются путем вычитания минимальных значений x и y, что обеспечивает инвариантность перевода.
MediaPipe использует двухэтапный подход глубокого обучения:
1. Обнаружение ладони: сверточная нейронная сеть (CNN) обнаруживает ограничивающую рамку руки, оптимизированную для скорости с использованием архитектур, подобных MobileNet [3].
2. Регрессия ориентиров: вторая сверточная нейронная сеть предсказывает 21 ориентир, выдавая координаты точек (x, y, z). Функция потерь объединяет среднеквадратичную ошибку для координат и потери на основе тепловой карты для точности [4]. Нормализованные координаты образуют вектор признаков размерностью 42 (21 ориентир × 2 координаты – x, y), устойчивый по отношению положения руки и масштабу изображения.
2.3 Классификация с помощью классификатора случайного леса
Извлеченные объекты классифицируются с помощью классификатора случайного леса из библиотеки scikit-learn [5]. Код разбивает данные на обучающие (80%) и тестовые (20%) наборы, обучает модель и оценивает точность.
Методы:
- train_test_split(): разбивает данные на группы для поддержания баланса классов.
- RandomForestClassifier(): Инициализирует модель параметрами по умолчанию
- (например, 100 деревьев).
- model.fit(): обучает модель.
- model.predict(): генерирует прогнозы.
- accuracy_score(): вычисляет точность классификации.
Результат: модель достигает заявленной точности и сериализуется для дальнейшего использования.
Случайный лес — это ансамблевый метод, который объединяет несколько деревьев решений, каждое из которых обучается на основе загруженного подмножества данных [6]. Алгоритм минимизирует примесь Gini [7]:

, где pi — доля класса i в узле. Прогнозы делаются путем голосования большинством голосов по деревьям, что сокращает переобучение и повышает надежность.
3. Системный конвейер
Конвейер распознавания жестов объединяет сбор данных, выделение признаков и классификацию, как показано ниже на рисунке 1.

Рисунок 1: Конвейер распознавания жестов.
4. Оценка эффективности
Для оценки системы мы используем набор данных о жестах трех классов (например, ”А”, ”Б”, ”В”). Гипотетическая матрица путаницы, основанная на типичной производительности случайного леса, показана на рисунке 2.

Рисунок 2: Гипотетическая матрица путаницы для классификации трёх жестов.
Гипотетическая матрица путаницы для трех жестов, показывающая высокие значения диагонали, указывающие на точную классификацию.
Модель случайного леса обеспечивает высокую точность (например, более 90% в типичных сценариях), что объясняется её надежностью и качеством функций MediaPipe. Однако из-за схожих конфигураций ориентиров может произойти неправильная классификация.
5. Анализ особенностей и возможные улучшения
Система отличается:
- Надежностью: модели глубокого обучения MediaPipe работают с различным освещением и ориентациями.
- Эффективностью: Random Forest требует минимальной предварительной обработки и настройки.
- Масштабируемостью: Конвейер может быть расширен за счет большего количества жестов.
Ограничения включают в себя:
- Статические изображения: Система обрабатывает статические изображения, ограничивая работу приложений в режиме реального времени.
- Разбалансировка классов: Стратификация уменьшает, но не устраняет проблемы с разбалансировкой.
- Настройка гиперпараметров: Параметры случайного леса по умолчанию могут быть неоптимальными.
Будущая работа может включать:
- Обработку видео в реальном времени в динамическом режиме с применением MediaPipe.
- Расширенные модели, такие как градиентное ускорение (например, XGBoost) или нейронные сети.
- Перекрестная проверка для оптимизации гиперпараметров.
6. Заключение
В данной статье представлена система распознавания жестов, объединяющая OpenCV для сбора данных, MediaPipe для выделения ориентиров и Random Forest для классификации. Научные основы — глубокое обучение для выделения признаков и комплексное обучение для классификации — обеспечивают надежную производительность. Визуализация упрощает процесс разработки и повышает производительность. Будущие усовершенствования могут касаться обработки данных в реальном времени и оптимизации моделей, а также усовершенствования интерфейсов, основанных на жестах.
Список литературы:
- Ховси Дж., Миничино Дж. Learning OpenCV 4 Computer Vision with Python 3: Packt, третье издание, 2020, 364 с.
- Ссылка на онлайн документацию фреймворка MediaPipe от Google: https://ai.google.dev/edge/mediapipe/solutions/guide
- Hai Phan, Dang Huynh, Yihui He, Marios Savvides, Zhiqiang Shen, MoBiNet: A Mobile Binary Network for Image Classification, https://arxiv.org/pdf/1907.12629
- Гудфеллоу Я., Бенджио И., Курвилль А., Глубокое обучение, 2017г.
- Лю Юси, Мирджалили Вахид, Рашка Себастьян, Машинное обучение с PyTorch и Scikit-Learn, 2024, 688с.
- Zhu R, Zeng D, Kosorok MR (2015). «Деревья обучения с подкреплением». Журнал Американской статистической ассоциации. https://pmc.ncbi.nlm.nih.gov/articles/PMC4760114/
- Ccылка на статьи о примеси Джини в контексте глубокого обучения,
https://ru.statisticseasily.com/glossario/what-is-gini-impurity/ ,
https://en.m.wikipedia.org/wiki/Decision_tree_learning#Gini_impurity