Approfondir la technologie de Kinect: détection de parties du corps à partir de données 3D

De Ensiwiki
Aller à : navigation, rechercher

Pour ce sujet, il est possible de bénéficier d'un encadrement spécifique sur le thème des méthodes agiles. Pour plus de détails, voir la page Méthodes agiles en projet de spécialité.

Cadre du projet

  • Encadrant : Jean-Sébastien Franco.
  • Nombre d'étudiants : 3 à 4.
  • Prérequis : programmation Python ou C++ éventuels, graphique 3D, algèbre linéaire, géométrie, probabilités.

Contexte

Via le projet de recherche Natal, qui a produit la technologie commerciale Kinect [5], Microsoft Research a proposé une innovation majeure dans le domaine de la capture de mouvement pour le jeu vidéo. Cette innovation repose sur l'utilisation d'un capteur video fournissant une profondeur par pixel d'une part, et sur un outil d'apprentissage automatique permettant de classifier chaque pixel observé selon la partie du corps probable à laquelle elle il appartient, en se basant uniquement sur une mesure géométrique de profondeur. L'apprentissage repose sur une très grande base de données de poses observées, et une nouvelle technique de classification introduite pour l'occasion, les Random Trees [3]. Nous proposons via ce sujet l'étude de cette technique [1,2] et ces variantes [4], selon le nombre de personne postulant sur le projet.


Kinect-principle.png
Principe et illustration de l'algorithme de classification mis en oeuvre dans la technologie Kinect.

Objectif

Dans le cadre de ce projet, nous proposons de réaliser une implémentation de l'algorithme utilisé dans Kinect pour la classification en partie et d'une variante permettant d'en étudier expérimentalement les propriétés, pour les besoins de l'équipe de recherche Morpheo à Inria Grenoble Rhône-Alpes. A la fin du stage, une implémentation sera fournie qui permettra de charger une base de poses, effectuer l'apprentissage associé, et stocker la base d'apprentissage précalculée. L'algorithme devra d'autre part permettre de charger des données test (image de profondeur ou modèle 3D) et de classifier les données selon les parties du corps. Chacune de ces étapes devra être validée à travers des tests extensifs sur des modèles variés (étudier notamment l'influence des divers paramètres sur le résultat).

Bibliographie

Détails techniques

La programmation se fera de préférence en Python, avec des modules éventuels en C++, dont l'exécution devra être exploitable sous Linux et MacOS. Une base de code Python de l'équipe pourra être utilisée pour la visualisation de modèle 3D. Des Kinects sont disponibles au Fablab pour la mise en oeuvre pratique.

Logiciels et API utiles

  • PyQt4, API Qt4 pour Python
  • PyOpenGL, OpenGL pour Python
  • PrimeSense, API Python pour accès aux données Kinect
  • MeshLab est un logiciel Open Source qui comprend de très nombreux algorithmes sur les maillages : visualisation, nettoyage, remaillage, lissage, ...