Ceci est une ancienne révision du document !
Table des matières
Pose Estimation ou Détection d'un squelette dans une image
Ce sujet est très actuel, un concours a eu lieu en 2019. Nous allons essayer de trouver, construire un projet qui détecterait un squelette, envoie les datas en OSC pour les visualisent dans Blender, les exploiter dans PureData ou autre ….
Des collections de données, des concours
Principes
- OpenCV AI Competition Un concours est en cours en Mars 2021
- Réseau de neurones: RNN @fr.wikipedia.org
- Convolution: CNN @fr.wikipedia.org
Des datas
- List of datasets for machine-learning research @ wikipedia.org
Data Sets
COCO
- Common Object in Context. COCO is a large-scale object detection, segmentation, and captioning dataset.
- COCO 2019 Keypoint Detection Task Le concours de détection de squelette Je n'ai pas trouvé le gagnant
MPI Human Pose
Human Pose Evaluator Dataset
Les normes COCO et MPI
Solutions matérielles et logicielles
- https://fr.wikipedia.org/wiki/Binary_large_object Le BLOB, pour binary large object, est un type de donnée permettant le stockage de données binaires (le plus souvent des fichiers de type image, son ou vidéo) dans le champ d'une table d'une base de données.
OpenCV blobFromImage
La documentation
- blobFromImage() à docs.opencv.org
Exemple
- Deep Learning based Human Pose Estimation using OpenCV @ learnopencv.com et le OpenPose @ github.com/spmallick L'article et le code python pour tester.
Il faut télécharger les Model Weights: ce sont des *.caffemodel de GoogLeNet trained network de caffe.berkeleyvision.org
Les models sont trouvable à: kaggle.com model_zoo
puis installer venv et opencv-python, tester avec le script OpenPoseImage.py: ça marche très bien mais le calcul demande 1,2 seconde sur mon PC sans GPU ! Le résultat est l'image en début d'article.
- Deep learning: How OpenCV’s blobFromImage works Explications détaillées de la théorie et de l'utilisation de OpenCV blobFromImage.
Capture avec RealSense D455, Caffe Model et OpenCV
- rs-opencv les sources sur GitHub. premier essai avec realsense_detect_skeleton.py
Sans GPU, avec CPU
Marche bien mais le FPS = 0.7 sur mon portable avec les 4 CPU à fond: normal les fichiers de poids font 200 Mo, c'est beaucoup trop
Avec GPU: GTX 1060
- image = 368*368 FPS = 7
- image = 184*184 FPS = 15
La compilation fût laborieuse mais le résultat est bluffant.
Détection de squelette avec capteur RealSense et visualisation dans le Blender Game Engine
- skeleton-rs @ github.com/sergeLabo Détection de squelette avec capteur RealSense pour visualisation dans le Blender Game Engine
- skeleton-blender @ github.com/sergeLabo Visualisation dans le Blender Game Engine de la Détection de squelette avec capteur RealSense et OpenCV
Kinect V2
Capture du personnage et envoi du skeleton en OSC avec NImate de Delicode, logiciel propriétaire, utilisation possible sans Licence mais avec des limitations (un seul squellette …)
Réception des messages osc avec oscpy dans Blender BGE 2.79b
Addons pour Blender
Autres trucs
OpenPose
Utilise les caffemodel identique à ceux de OpenCV !!
- openpose de CMU Perceptual Computing Lab @GitHub: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation with only one camera. Whole-body (Body, Foot, Face, and Hands) 2D Pose Estimation and Whole-body 3D Pose Reconstruction and Estimation.
OPT
Pas d'API python:
- 3D Skeleton Tracking & Pose Recognition with OPT @ openptrack.org
- The pose recognition module comes with a set of 3 pre-recorded poses
Logiciels propriétaires payants
Nuitrack 60 €
- Nuitrack™ is a 3D tracking middleware developed by 3DiVi Inc. This is a solution for skeleton tracking and gesture recognition that enables capabilities of Natural User Interface (NUI) on Android, Windows, and Linux.