đïžâđšïž Coup dâoeil sur la dĂ©tection de la posture avec Mediapipe
DĂ©tecter les points dâarticulations du corps Ă partir dâune vidĂ©o
Lâestimation de la pose humaine Ă partir dâune vidĂ©o peut avoir plusieurs intĂ©rĂȘts dans divers domaines tels que la reconnaissance de mouvements , utile dans les domaines du sport, de la danse ou encore de la rĂ©Ă©ducation physique ; la sĂ©curitĂ©, utile pour dĂ©tecter des comportements anormaux ou suspects ; ou bien la rĂ©alitĂ© augmentĂ©e, utile pour permettre aux utilisateurs de manipuler des objets virtuels en utilisant des gestes naturels.
Comment détecter la pose humaine sur une vidéo ?
Pour faire cela, rien de plus simple ! Pour démontrer la simplicité (et pour le fun), nous allons déterminer la pose du célÚbre chanteur Oxlade pendant son clip vidéo.
Comment ? GrĂące Ă la bibliothĂšque Mediapipe.
Mediapipe
Rendu open source en juin 2019, la bibliothĂšque MediaPipe by Google offre des plusieurs solutions ML, notamment pour la dĂ©tection dâobjets, la dĂ©tection de visages, le suivi de mains, le suivi de plusieurs mains et la segmentation de cheveux.
Mediapipe Pose
Avec MediaPipe Pose nous pouvons dĂ©tecter la pose humaine, et plus particuliĂšrement les points dâintĂ©rĂȘt du corps humain, Ă partir de mĂ©dias en direct et en streaming. En effet, cette solution ML multi-plateformes et personnalisables nous permet dâextraire 33 points dâarticulation du corps, avec leurs coordonnĂ©es dans un repĂšre 3D, Ă partir dâimages vidĂ©o RVB [1].
Implémentation
Pour faire de lâestimation de pose vous pouvez utiliser les programmes de base qui vont suivre pour vos test.
Le code ci-dessus provient de PoseModule.py dont les fonctionnalitĂ©s disponibles (en comptant celles que jâai rajoutĂ©es) sont :
- findPose : détecte les poses dans une image et les dessine si draw=True
- findPosition : trouve puis retourne dans une liste les positions (en pixels) des repĂšres dâintĂ©rĂȘt du corps (landmarks) et les dessine si draw=True
- findAngle : calcule puis retourne lâangle formĂ© par trois landmarks et le dessine si draw=True
- findCenter : calcule puis retourne le centre dâun segment de deux landmarks et le dessine si draw=True
- findDistance : calcule puis retourne la distance euclidienne entre deux landmarks et la dessine si draw=True
AprÚs avoir importer le fichier PoseModule.py, il vous suffira de le faire fonctionner sur chaque image de la vidéo que vous souhaitez et que vous lirez grùce à la bibliothÚque OpenCV :
Câest bon tout est en place ?
Ok, donc pour dĂ©terminer la pose humaine de Oxlade, il vous suffira simplement de placer la vidĂ©o de son clip en entrĂ©e du code ci-dessus aprĂšs lâavoir tĂ©lĂ©charger en mp4 : câest-Ă -dire dâindiquer son chemin dans la fonction cv2.VideoCapture.
Libre Ă vous dâutiliser ou non, les diffĂ©rentes fonctions du module au besoin.
Output
On remarque quâon est quasiment Ă 15 images par seconde, ce qui est relativement lent⊠De fait, il y eu une diminution de la frĂ©quence dâimage par seconde, et câest quelque chose qui arrive assez systĂ©matiquement avec la bibliothĂšque Mediapipe Pose.
La lenteur, un réel problÚme ?
En effet, 15 images par seconde peuvent ĂȘtre considĂ©rĂ©es comme un taux de rafraĂźchissement relativement faible pour la plupart des applications qui impliquent de la vidĂ©o ou de lâanimation. Cela est dâautant plus vrai si lâon compare ce taux de rafraĂźchissement Ă celui des vidĂ©os ou des animations en haute dĂ©finition, qui peuvent atteindre des taux de rafraĂźchissement de 30, 60 ou mĂȘme 120 images par seconde.
Cependant, tout dĂ©pend de lâapplication et du contexte dans lequel les images sont utilisĂ©es. Dans certains cas, comme la surveillance de la sĂ©curitĂ© ou lâenregistrement de vidĂ©os en temps rĂ©el pour lâanalyse, 15 images par seconde peuvent ĂȘtre suffisantes. Dans dâautres cas, comme la production de vidĂ©os haute dĂ©finition pour le cinĂ©ma ou la tĂ©lĂ©vision, ce taux de rafraĂźchissement serait considĂ©rĂ© comme insuffisant.
Mlachahe SAID SALIMO.
Références :
1. MediaPipe Pose, google.github.io
2. A Comprehensive Guide on Human Pose Estimation, analyticsvidhya.com