[PYTHON] Modèle de prédiction du mouvement du corps humain à l'aide d'un capteur de pièce

Cet article est le 18e jour du calendrier de l'Avent du DoCoMo Advanced Technology Research Institute. Je suis Ishioka, un employé de deuxième année du NTT Docomo Advanced Technology Research Institute. Dans cet article, je suis un débutant en IA / apprentissage automatique, et j'expliquerai un modèle qui prédit les mouvements humains à partir de données de capteurs créées comme passe-temps.

emballer

―― Détectons le mouvement d'une personne à l'aide des données acquises à partir du capteur d'accélération / gyroscopique et du réseau neuronal (CNN). Ces dernières années, la détection sportive semble être populaire, alors détectons le mouvement du pas harki.

Qu'est-ce que Harkistep?

C'est l'une des méthodes d'entraînement dans le sport. Vous l'avez peut-être fait une fois dans un cours d'éducation physique. En position debout, abaissez le centre de gravité et avancez finement avec vos pieds (c'est le pas harki). Dans cet état, l'instructeur (professeur d'éducation physique ou coach d'activité du club) fait une annonce en haut à droite, en bas à gauche. J'avais l'habitude de m'entraîner tous les jours quand j'étais étudiant, mais je ne sais pas à quoi ça sert. Quand je regarde, il semble que l'agilité (?) Et la rapidité (?) Peuvent être entraînées.

Quoi utiliser

Acquisition des données du capteur

L'image du capteur que j'ai acheté ressemble à ci-dessous. Parce qu'il est bon marché, vous devez le souder vous-même. L'espacement broche à broche est suffisamment large pour que même des gens comme moi qui ne sont pas doués pour le soudage puissent le faire facilement. De plus, je suis heureux qu'il contienne deux types d'en-têtes de broches.

image.png

La méthode d'acquisition des données de capteur à partir du MPU6050 a été introduite dans divers articles, je vais donc l'omettre cette fois. Cependant, il y a deux points à noter. Le premier est que le MPU6050 acquiert les valeurs des capteurs via la communication I2C. Vous ne savez peut-être pas de quoi il s'agit au début car il ne lit pas directement la valeur de tension sortie du capteur sous forme de signal analogique. En gros, le côté destinataire (Raspberry pi, Arduino, etc.) ne communique qu'avec le bloc spécifié (spécification d'adresse) côté capteur (MPU6050, etc.). Il n'y a que le bus de données et le bus d'horloge, mais il est possible de lire les données à partir de 3 axes du capteur d'accélération et de 3 axes du capteur gyroscopique.

Le second est la tension d'entrée / sortie du MPU6050. La tension d'entrée / sortie maximale du MPU6050 est de 3,46 V sur la fiche technique. D'autre part, Arduino a une entrée et une sortie 5V, donc si vous connectez les broches d'entrée et de sortie d'Arduino directement au MPU6050, cela ne fonctionnera pas correctement. Étant donné que la broche d'entrée / sortie du Raspberry pi est de 3,3 V, il n'y a aucun problème si vous le connectez directement au MPU6050.

Visualisation de données

Lors de la création des données, nous avons demandé à trois personnes de l'Institute of Advanced Technology de réaliser un haki, et avons créé 300 données (accélération pendant 1 seconde, valeurs pour le gyroscope 3 axes). La figure ci-dessous montre les résultats de chaque opération de l'étape Harki avec le capteur fixé à la position de la taille. D'une manière ou d'une autre, cela semble représenter un mouvement, mais pour être honnête, ils ressemblent tous à des données de bruit ...

Cette fois, je voudrais entrer ces données de capteur dans le réseau neuronal et prédire le mouvement du corps humain.

image.png

Créer un modèle

Cette fois, j'ai utilisé CNN (Convolutional Neural Network). Il y a deux raisons à cela. «Je ne sais pas ce que c'est même si je coupe chaque instant du mouvement, donc je veux en faire un morceau de temps et l'apprendre. «Quand j'ai essayé de mettre la matrice telle qu'elle était, j'ai pensé que le code CNN pouvait être utilisé tel quel.

Les données d'accélération $ a = [a_x, a_y, a_z] $ obtenues à partir du MPU6050 et les données gyroscopiques $ g = [g_x, g_y, g_z] $ sont échantillonnées à une fréquence d'échantillonnage de 40 Hz. Utilisez-les comme données d'entrée 6x40.

Dans le pas harki, il est essentiellement classé en 4 mouvements, mais cette fois, en considérant "pas seulement", il est classé en 5 mouvements (5 mouvements sans haut, bas, droite, gauche).

Le schéma de l'ensemble du programme et le schéma de configuration du réseau sont présentés ci-dessous. Généralement, il a la même configuration de réseau que le modèle de classification d'image utilisé dans les didacticiels CNN. En tant que données d'entrée, des données d'accélération / capteur gyroscopique 6x40 sont entrées dans CNN comme des données d'image, et des valeurs de 0 à 1 sont sorties pour chacune des cinq opérations. Plus il est proche de 1, plus la probabilité de l'action est élevée, et plus elle est proche de 0, plus la probabilité de l'action est faible. Estimez le mouvement du corps humain à partir du maximum des cinq valeurs.

image.png

image.png

Résultat d'apprentissage

La figure ci-dessous montre les résultats de la formation en validant 2: 1 pour 300 données d'opération pour 3 personnes. La précision est anormalement élevée. Peut-être que le résultat de la même personne faisant la même chose a été inclus à la fois dans la formation et dans les données de test, il a donc semblé fuir. Lors de la division en données de formation et en données de test, il a peut-être été nécessaire de concevoir des moyens tels que la division par personne plutôt que de manière aléatoire (puisque nous n'avons pas enregistré les personnes afin de les rendre anonymes, nous continuerons de le faire. Je vais le vérifier). image.png

Résumé

J'ai créé un modèle de prédiction de mouvement humain à l'aide d'un capteur à une pièce qui peut être acheté sur Amazon. Il y avait un stéréotype selon lequel "CNN = reconnaissance d'image", mais il pouvait également être utilisé pour les données de capteur. D'autre part, les données utilisées pour la formation sont petites et il est fort possible que la précision soit apparemment élevée. Ce modèle a été utilisé en connectant un capteur au Raspberry pi, mais comme il est possible de prédire à partir de l'accélération et du gyroscope acquis depuis le smartphone, j'aimerais développer une application qui utilise ce modèle de prédiction de mouvement.

Recommended Posts

Modèle de prédiction du mouvement du corps humain à l'aide d'un capteur de pièce
Avantages de l'utilisation de slugfield dans le modèle Django