Simon Says

Inspiration

Simon Says, dont l’équivalent français est Jacques a dit, est un jeu d’enfance où les joueurs doivent réagir aux consignes données par Simon. Lorsque « Simon Says » de faire quelque chose, les joueurs doivent exécuter la consigne. Cependant, si la consigne n’est pas précédée de la formule « Simon Says », les joueurs ne doivent pas l’exécuter.

Info amusante : le record mondial de participation à une partie de Simon Says enregistré au Livre Guinness des records est de 12 215 personnes, établi le 14 juin 2007 aux Jeux d'été de l'Utah. 

Ce qu’il fait

Notre projet consiste à construire une plateforme de Deep Learning Simon Says qui permette à chacun de rejoindre la même partie mondiale en utilisant DeepLens pour vérifier que chaque joueur réagit correctement.

Comment nous l’avons construit

Nous avons utilisé deux projets open source pour développer notre application, Openpose etmxnet Realtime Pose Estimation. Nous avons commencé par optimiser un modèle pré-entraîné afin qu'il fonctionne sur le moteur d'inférence de deep learning d'Intel. Nous avons utilisé ce modèle pour générer une carte de postures qui montre la position du corps. Nous avons utilisé cette carte de postures pour classer un réseau plus petit destiné à générer l’action des joueurs.

Le réseau de la partie mondiale est construit sur l'architecture AWS sans serveur. Nous commençons par déclencher à chaque minute un événement à partir de CloudWatch qui active une série de fonctions Lambda pour générer une partie. Une fois qu'une nouvelle partie est générée, elle est poussé vers chaque appareil à l'aide du service de messagerie IdO. Les appareils peuvent utiliser ce message pour télécharger les fichiers audio nécessaires, générés avec AWS Polly, pour lancer la partie. Nous pensons qu’avec cette architecture, la plateforme pourra se mettre à l’échelle pour prendre en charge un grand nombre d’appareils.

Défis

Notre projet a dû faire face à plusieurs défis. Le plus lourd a été la conversion du modèle au moteur d'inférence d'Intel. Nous avons commencé par convertir un modèle MXNet à l'aide du convertisseur Python, mais nous avons rencontré plusieurs erreurs relatives aux attributs d’axe manquants pour la couche de concaténation. Une fois ces erreurs résolues, nous avons été bloqués par Test a échoué : cet exemple n’accepte que les réseaux qui n’ont qu’une sortie, ce qui signifiait que nous devions restructurer la couche de sortie finale ou ignorer l’exécution sur le GPU. SOLUTION dans la version 1.2.2 - Forums d’assistance AWS

Les réalisations dont nous sommes fiers

Plusieurs fois nous avons cru que ce projet était une cause perdue. Avec un modèle n’optimisant pas et n’interprétant pas les résultats, le chemin pour aboutir à une démonstration fonctionnelle était semé d’embûches. La première fois que nous avons vu le flux du projet en direct avec la superposition des cartes de postures, nous avons su que nous pourrions atteindre notre objectif.

Avis de non-responsabilité

Ce projet ne doit pas être utilisé à des fins commerciales et vous devez respecter lalicence originale

Quelle est la prochaine étape ?

À court terme, nous souhaitons activer la détection de postures multiples afin de permettre à un groupe de joueurs d’utiliser le même appareil. Le modèle est déjà configuré pour faire cela, mais nous devons le déployer dans le jeu, car pour une démo, il était plus facile de le configurer pour un seul joueur.

À plus long terme, nous envisageons une boucle d’entraînement / classement où, de manière aléatoire, le système demandera au joueur de faire une nouvelle action. Nous pourrions alors saisir la posture générée et mettre à jour nos pondérations de classement.

Dans une perspective plus large, cette estimation et ce classement des postures peuvent avoir de nombreuses applications, de la surveillance d'enfants à la détection de vol à l'étalage, en passant par d'autres types de jeux comme la danse, ou même l'entraînement sportif. 

Construit avec

Python
Amazon Web Services
DeepLens
moteur d'inférence de deep learning Intel.
mxnet
Caffe
deep learning
AWS Polly
AWS Lambda
IoT
Passerelle API AWS
AWS Athena

Essayez-le