Notre projet
EducMove est une application iOS et Android et une web app disponible sur laptop, qui a pour objectif de superviser les programmes de réadaptation et de rééducation dans la médecine physique et de réadaptation (MPR). Notre app permet aux personnes en rééducation à domicile de se mettre face à la caméra et de savoir s’ils font les bons mouvements.
Le fonctionnement
Notre logiciel se base sur la technologie PoseNet, donc le code est disponible ci-dessous. En ouvrant l’application, l’utilisateur va choisir une série de mouvements qui auront été recommandés par son médecin. Il se met ensuite face à la caméra et doit reproduire les mouvements indiqués sur l’écran. Dans le même temps, nos algorithmes analysent ses gestes et lui indiquent les rectifications à faire. La précision et la puissance de notre logiciel permet aux patients de faire les bons gestes et ainsi de se soigner le plus rapidement et efficacement possible. Notre application sert principalement dans la kinésithérapie et la physiothérapie.
PoseNet
Notre technologie se base sur PoseNet, dont l’algorithme estime où se trouvent les principales articulations du corps. Comme expliqué sur TensorFlow, « les points clés détectés sont indexés par "Part ID", avec un score de confiance compris entre 0,0 et 1,0, 1,0 étant le plus élevé. ». Par exemple, l’ID de « oreille gauche » est « 3 », celui de « genou droit » est « 14 ».
L’efficacité et la performance d’EducMove dépend de plusieurs facteurs : 1. L’appareil utilisé. Nous conseillons d’utiliser un appareil (iPhone, Android ou ordinateur) le plus récent possible. Il n’est cependant pas nécessaire d’en racheter un uniquement pour utiliser notre logiciel. Nous estimons que la caméra frontale d’un iPhone 7 est suffisante au fonctionnement de notre outil. 2. La foulée de sortie. Comme indiqué sur TensorFlow, « La foulée de sortie détermine dans quelle mesure nous réduisons la sortie par rapport à la taille de l'image d'entrée. Cela affecte la taille des couches et les sorties du modèle. Plus la foulée de sortie est élevée, plus la résolution des couches du réseau et des sorties est petite, et en conséquence leur précision. Dans cette implémentation, la foulée de sortie peut avoir des valeurs de 8, 16 ou 32. En d'autres termes, une foulée de sortie de 32 entraînera les performances les plus rapides mais la précision la plus faible, tandis que 8 se traduira par la plus grande précision mais les performances les plus lentes. Nous vous recommandons de commencer par 16. »
Voici un extrait du code :
const video = document.getElementById('video');
// Create a new poseNet method
const poseNet = ml5.poseNet(video, modelLoaded);
// When the model is loaded
function modelLoaded() {
console.log('Model Loaded!'); }
// Listen to new 'pose' events
poseNet.on('pose', (results) => {
poses = results; }); {
architecture: 'MobileNetV1',
imageScaleFactor: 0.3,
outputStride: 16,
flipHorizontal: false,
minConfidence: 0.5,
maxPoseDetections: 5,
scoreThreshold: 0.5,
nmsRadius: 20,
detectionType: 'multiple',
inputResolution: 513,
multiplier: 0.75,
quantBytes: 2, };
Sources :
https://www.tensorflow.org/lite/models/pose_estimation/overview
https://ml5js.org/reference/api-PoseNet/
https://github.com/tensorflow/tfjs-models/tree/master/posenet
https://storage.googleapis.com/tfjs-models/demos/posenet/camera.html
https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-tensorflow-js-7dd0bc881cd5