Détection de parties du corps à partir de données 3D (Kinect)

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet Détection de parties du corps à partir de données 3D (Kinect)
Cadre Projets de spécialité
Page principale Projets de spécialité image

Encadrants Jean-Sébastien Franco



L'équipe

Jean-Baptiste MOSSE (MMIS)

Carl SARKIS (MMIS)

Sarah VIAUD (MMIS)


Contexte

La Kinect

Mise sur le marché en 2010 par Microsoft pour sa console de salon Xbox360, la Kinect a révolutionné le monde de l'IHM par sa capacité à ne nécessiter aucun intermédiaire physique entre la machine et l'utilisateur. Initialement développée pour le jeu vidéo, cette technologie a rapidement été détournée pour des applications variées dans des domaines très différents (aide aux handicapés, applications médicales, domotique, ...).

Problématique

La Kinect fournit à la machine une image en 3 dimensions, dite "image de profondeur", qui associe à un pixel non pas sa couleur mais sa distance à la caméra. L'objectif du traitement est ensuite de reconstruire un modèle en 3 dimensions de l'utilisateur filmé. Cependant, ce traitement (fait au départ par régression sur la position des articulations) peut être coûteux en temps et a pour contrainte d'être effectué en temps réel. Une équipe de chercheurs de Microsoft a donc exploré la possibilité d'introduire une étape intermédiaire en tentant d'étiqueter préalablement chaque pixel avec le partie du corps à laquelle il appartient avant de commencer la régression des articulations, afin de la faciliter.

Objectifs du projet

Les chercheurs de l'équipe Morpheo, de l'Inria, ont soumis le besoin d’un démonstrateur de cet algorithme.

L’application finale doit permettre à l’utilisateur de construire une forêt de décision, en fixant plusieurs paramètres à la main. Cet algorithme nécessitant une base d’apprentissage, il a été fixé très vite qu’il fallait également permettre à l’utilisateur de construire un set d’images de poses humaines variées, car aucune base de données n’était disponible au moment de notre projet.

Enfin, le projet ayant pour objectif à long terme d’être réutilisé par des chercheurs, une documentation fournie et claire du code était fortement souhaitée.

Difficultés rencontrées

Tout d'abord, il nous a fallu découvrir ou approfondir plusieurs outils et librairies spécifiques : Qt (interface), OpenGL (affichage graphique)... dont le manque de précision dans la documentation nous a parfois forcé à abandonner des fonctionnalités, faute de temps pour comprendre l'outil.

La première grande difficulté est apparue lors de la création de notre base de données. En effet, il nous fallait adapter des animations squelettales sur un modèle 3D, en utilisant la librairie Assimp, assez complexe d’utilisation.

De plus, avant d’implémenter l’algorithme en lui-même, il a fallu comprendre l’article de journal de recherche le décrivant, qui était souvent vague et obscur, ce qui a compliqué l'implémentation.

Enfin, il était difficile de créer une base de tests unitaires pour valider nos modules.

Interface de l'application et résultat d'un étiquetage.

Résultats

Finalement, nous avons réussi à créer une interface facile d’utilisation et permettant de faire varier plusieurs paramètres pour tester la construction d’arbres de décision. Notre base d’apprentissage n’est pas très grande mais suffisante pour produire une démonstration de l’algorithme.

Les résultats, sans être extraordinaires, sont tout ce même probants, et ce malgré nos fortes limitations dans la qualité des bases d'apprentissage de nos arbres. En effet, l'apprentissage étant très coûteux en temps et en mémoire, nos machines personnelles ne permettent pas de créer de très grandes forêts de décision à partir de beaucoup d’images.

Les objectifs principaux ont été atteint : l’algorithme est entièrement implémenté, et l’application permet l’apprentissage et l’exploitation des arbres de décision pour l’étiquetage d’une image de corps humain.


Limites du projet et perspectives de poursuite

  • Les forêts d'arbres de décision demandent un temps d'apprentissage important (de l'ordre du jour au moins) si on la crée avec des paramètres suffisamment bons pour obtenir des résultats intéressants lors de l'exploitation. Pouvoir les exporter puis les recharger, pour s'éviter de les recalculer à chaque fois, serait un objectif prioritaire.
  • Nous nous sommes limités, sur le plan de l'animation, à faire correspondre le modèle 3D d'un homme à des animations squelettales tirées de données d'une motion capture effectuée sur une femme. Le résultat, s'il est crédible, n'en reste pas moins peu exhaustif. L'amélioration et la complétion de notre base de données pourrait être un plus appréciable.
  • L'apprentissage demande énormément de ressources en espace mémoire et en temps processeur. Diverses optimisations (multithreading, compression pour les images chargées en mémoire...) seraient rapides à implémenter et permettraient à des machines peu puissantes telles que nos machines personnelles puissent construire des arbres en un temps intéressant.
  • En plus d'être particulièrement gratifiant, l'interfaçage avec une Kinect pour exploiter des données réelles concrétiserait l'usage de notre algorithme. Cependant, un important travail de pré-traitement de l'image serait nécessaire.


Jean-Baptiste Mossé en pleine performance lors d'une démonstration client de fin de sprint.

Apport personnel

Méthodes agiles

Ce projet a été l'occasion de mettre en oeuvre au sein de notre groupe les méthodes agiles. Contrairement au projet de Génie Logiciel, l'interaction avec le client prenait tout son sens et nous a permis de vivre en profondeur les apports des méthodes agiles.

Gratification de l'apport à un projet réel

Pour la première fois dans notre scolarité, nous avons enfin eu l'opportunité de contribuer à un projet dont les enjeux, les objectifs et motivations sont concrets. Le rapport au travail à faire et surtout au travail effectué en est complètement modifié.