Skip to content

gorodion/GestureRecognition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gesture Recognition

Task

Дан огромный датасет с фотографиями, на которых люди показывают один из шести жестов, либо не показывают вовсе. Каждой фотографии присвоен класс. Необходимо обучить модель, определяющую, какой жест изображён на фотографии. Задача решалась в рамках соревнования MachinesCanSee от VisionLabs на платформе Boosters.Pro

Pipeline solution

  1. Детектирование кистей
    1. Сбор и обработка данных. Здесь мы собираем данные с размеченными кистями рук (т.е. известны координаты кистей на изображениях). После сбора данных мы приводим их в единый формат.
    2. Обучение детектора кистей. В качестве модели была взята модель YOLOv5x
  2. Классификация жестов
    1. Инференс детектора кистей. Теперь когда у нас есть обученный детектор кистей мы можем прогнать через него фотографии из нашего датасета с жестами. В результате получим для каждого изображения координаты боксов с кистями рук
    2. Постобработка локализаций рук. Мы оставляем верних бокс с кистью, так как в подавляющем числе случаев целевой жест показывается верхней рукой. Также мы расширяем наш бокс, чтобы кисть наверняка оказалась на обрезанной фотографии (кропе).
    3. Обучение классификатора жестов. На вход классификатору подаётся верхний бокс с кистью, классификатор обучается на метках жестов. В качестве модели была взята EfficientNetV2-M
  3. End-to-end Inference. Здесь мы делаем функцию инференса обеих моделей. То есть на вход функции подаётся фотография, а на выходе выдаётся наиболее вероятный жест, который был детектирован на этой фотографии (или "no gesture"). Важный момент: мы берём все боксы с кистями на фотографии, после чего пропускаем их через классификатор и берём класс с максимальной вероятностью среди всех боксов.

Code

Вы можете посмотреть весь код, перейдя на Google Colab

Unimplemented

  • Дообучение детектора кистей на датасете жестов. Для этого мы получаем координаты кистей от предобученного детектора для наших данных с жестами, после чего уточняем их вручную.
  • Обучение классификатора на всем массиве данных с жестами. К сожалению, не хватило времени, хотя размер тренировочных данных сильно влиял на обученность модели (обучение было произведено на половине данных)

Links

Environment

OS: Linux-5.4.104+-x86_64-with-Ubuntu-18.04-bionic

Python: 3.7.11 (default, Jul 3 2021, 18:01:19) [GCC 7.5.0]

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published