Для тех из вас, кто не дрался слишком много раз, изучение своего противника имеет решающее значение. Если вы сделаете это хорошо, вы почти наверняка выиграете. Если вы сделаете это неправильно, то можете оказаться на земле быстрее, чем наберете print («Hello World»).

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

1. Принятый подход

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

2. Используйте МАГИЮ Python для редактирования видео.

Чтобы переименовать файлы (в Jab0, Jab1… Hook0…), поместить их в соответствующие папки и обрезать их по фреймам, я использовал Jupyter Notebook. Поскольку мой компьютер не так быстр, как мне нужно, я использовал Google Colab для остальной части проекта моделирования.

3. Google Colab

Я установил свой привод (без слов) и использовал великолепный графический процессор Google. Затем я предпринял обычные шаги для импорта библиотек CNN, маркировки классов, разделения для обучения / оценки, определения модели, создания генератора, настройки некоторых параметров (ранняя остановка и т. Д.) И, наконец, подгонки модели.

Я прогнал модель для 25 эпох и получил следующие результаты.

4. Прогноз

Как видите, модель оказалась на удивление точной.

4. Мысли

Изначально я планировал использовать модель Inception V3 в этом наборе данных, чтобы сэкономить время. Модель Inception V3 - чертовски хорошая модель распознавания изображений, которая использовалась для обучения на наборе данных ImageNet. Однако, увидев результаты сразу после 25 эпох, я понял, что это может быть перебор.

5. Будущие улучшения

Этот проект был просто забавным занятием, которым я занимался сегодня утром перед завтраком. Есть множество способов улучшить его, добавить к нему и создать из него что-то по-настоящему чудесное (или опасное).

6. Спасибо

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

Полный код доступен на моем GitHub вместе со многими другими развлечениями для всей семьи.

До скорого,

Bobcat.