Les skateurs peuvent facilement reconnaître les figures réalisées par d'autres skateurs. Notre objectif dans ce projet est d'apprendre à l'ordinateur à reconnaître les figures du skateboard. À partir d’une vidéo d’un trick en skateboard, l’ordinateur peut-il classer le trick avec une forte probabilité ? Nous avons développé un ensemble de données et un modèle d'apprentissage automatique capables de distinguer deux des figures de skateboard les plus courantes, les ollies et les kickflips.
Nous avons commencé par rassembler plus de 200 courtes vidéos (1 à 2 secondes) de kickflips et d'ollies. Nous avons adapté l'approche décrite dans Hands on Computer Vision with Tensorflow à notre nouvel ensemble de données. Les données commencent sous forme de vidéo, puis passent par un réseau neuronal convolutif (CNN), puis par un modèle de mémoire à long terme (LSTM), et enfin vers une sortie de probabilités que la vidéo décrit chaque classe d'astuces.
Par exemple, ici Stephen exécute un kickflip :
Le modèle prédit qu'il s'agit d'un kickflip avec une probabilité de 0,9, donc cela fonctionne bien. Nous avons constaté que les vidéos claires montrant tout le corps du skateur étaient plus efficaces que les vidéos montrant uniquement les jambes du skateur. Nous avons également constaté que le modèle était capable de prédire correctement un kickflip dans un escalier, même si toutes les données d'entraînement concernaient des figures sur un terrain plat. Cela montre que le modèle a pu se généraliser à une situation nouvelle et différente.
Pour aller plus loin dans ce travail, nous pouvons ajouter d'autres tricks au-delà des kickflips et des ollies, ainsi que des combinaisons de tricks, par exemple un kickflip backside 180. Avec plus de données d'entraînement et plus d'ajustements du modèle, ce modèle pourrait devenir assez bon pour rivaliser avec un skateur humain.
Merci à Justin Wang et Vessela Ensberg pour leur aide sur ce projet.
Les données vidéo étiquetées se trouvent dans le répertoire Tricks
de ce référentiel. Il existe deux sous-répertoires, Ollie
, qui contient 108 vidéos de skateurs exécutant un ollie, et Kickflip
, qui contient 114 vidéos de skateurs exécutant un kickflip. Chacun des fichiers de ces répertoires est un court clip, d'environ 2 secondes, au format .mov
(QuickTime). Pour utiliser ces données pour l'apprentissage automatique supervisé, entraînez le modèle sur les données du répertoire Tricks
, en utilisant les sous-répertoires comme étiquettes.
Vous êtes libre d'utiliser ces données à des fins académiques, à condition de citer cet ouvrage.
Classer les tricks de skateboard
Ce projet, dans les mots les plus simples, classe les tricks de skateboard. Nous essayons d'utiliser l'apprentissage automatique pour classer chaque trick de skateboard. Il y a beaucoup de tricks de skateboard que nous en avons choisi deux pour les classer entre les deux. Nous avons choisi entre Ollie et Kickflip.
Ainsi, cet algorithme prendrait une entrée comme ci-dessus et cracherait une probabilité de savoir dans quelle mesure il est sûr qu'il s'agit d'un ollie ou d'un kickflip.
16 juin À FAIRE :
23 JUIN À FAIRE :
30 JUIN À FAIRE :
7 juillet :
15 juillet :
21 juillet :
28 juillet :
4 août :
Notre objectif est de proposer un classificateur raisonnable d'astuces pour des clips vidéo de 1 à 2 secondes. Nous prévoyons d’utiliser les approches les plus pratiques et les plus efficaces pour réussir.
Notre plan de prétraitement des données consiste à échantillonner les vidéos jusqu'à un nombre d'images et une résolution cohérents. Par exemple, chaque vidéo peut être composée de 30 images, chacune étant une image de 480 x 360 (360p), de sorte que chaque vidéo devient un tableau 3D (ou tenseur) de dimension 480 x 360 x 30. Ce sont les entrées du modèle. La couleur n'est pas importante pour la classification des tricks, nous pouvons donc également passer au noir et blanc.
L'idée générale est de construire un réseau de neurones convolutifs (CNN), suivant grossièrement l'approche de la classification d'images.
Un CNN pour les images combine des informations spatialement locales provenant de pixels proches à l'aide de filtres de convolution. Devons-nous faire la même chose avec des pixels rapprochés dans le temps ? Le tutoriel de Google utilise une convolution 2D. Y a-t-il une raison pour laquelle nous ne pouvons pas utiliser une convolution 3D ? Bien sûr, Tensorflow en a un. Et il existe de nombreux articles universitaires populaires qui font exactement cela. J'espère que nous pourrons nous appuyer sur ces idées.