Cette page vise à présenter le travail réalisé pendant le stage. L'algorithme développé est divisible en trois grands sujets. Chaque sujet est l'une des parties de cette page.

Ce projet, initié par la cellule innovation d'Aubay France, vise à détecter et comprendre les gestes et mouvements de la main. Les enjeux du projets résident dans la création d'une intelligence artificielle capable de détecter ces gestes et mouvements ainsi que dans le traitement d'images pour binariser la main.

1. État de l'art top

La première étape du travail à consisté en l'assimilation et la compréhension des travaux précédemment effectué sur le sujet.

  • Binarisation de la main
  • Détection des doigts via cercle inscrit du contour de la main
  • Détection d'un squelette de la main

Différentes recherches permettent de faire un état des projets et technologies pouvant être utile au projet

Pour la partie binarisation de la main :
  • Espace de couleur LAB
  • Espace de couleur YCbCr
  • Détection d'arriere plan par mélange de gaussienes
  • Tracking de main

Pour la partie intelligence artificielle :
  • Réseau de neurones récurrents
  • Segmentation sémantique
  • Séparation de la détection de la main et des mouvements
  • Modèle YOLO

2. Détection des mains top

Pour détecter les mains, le projet s'appuie sur le modèle YOLO pour You Only Look Once. Ce modèle permet de trouver le ou les objets pour lesquels s il a été entraîné avec une précision très honorable et une vitesse bien supérieures aux autres types de réseaux actuellement utilisés.

Après avoir constitué une imposante base de données, il est possible d'entraîner le modèle pour reconnaître les mains. Les images ci-dessous montrent l'évolution de la précision du modèle (en rouge) et la fonction de coût du modèle (en bleu) au cours du temps ainsi qu'un grand nombre de mains détectées de manière fluide par le modèle.

Aprentisssage YOLO

pleins de mains détéctées

Le modèle atteint une précision de 89% avec la métrique mAP pour un IoUcorrect si superieur à 50%. Cette précision est amplement suffisante pour détecter la majorité des mains. La fluidité à cette étape est de 30 images par seconde.

3. Filtrage de l'image de main top

Une fois la ou les mains localisées il faut en extraire les points caractéristiques: centre, nombre de doigts ... Pour cela, l'algorithme effectue une série de traitement décrits ci-dessous.

Changement d'espace de couleur

La première étape est la binarisation de la main. Pour efectuer celle-ci le programme commence par convertir l'image dans l'espace de couleurs LAB. La photo ci-dessous montre le passage d'une main dans l'espave LAB. Ensuite, le seuillage est effectué par la méthode d'Otsu et permet d'obtenir une binarisation fidèle de la main

Conversion en LAB Main binarisée

Extraction du contour de la main

Une fois la main binarisée, il est possible d'extraire son contour. A l'aide des moments de cette image on obtient la position du centre de la main. En calculant ensuite le contour de Hull de ce contour de main (image ci-dessous) il est possible de trouver l'ensemble des doigts de la main.

Contour de Hull

Detection du squeltte et des doigts levés

Une fois la position des doigts connue, il est possible de trouver un squelette de la main (figure ci-dessous). En interprétant plusieurs paramètres tels que l'angle entre les doigts et le nombre de doigts levés, il est possible de déterminer quel geste est effectuée.

Squelette de la main

Le programme est capable de reconnaitre 10 gestes différents.

4. Détection des mouvements top

Après être capable de détecter 10 gestes, l'outil est aussi capable de détecter cinq mouvements. Pour cela, un second modèle est entraîné. Le modèle est entraîné sur des images montrant l'évolution d la position de la main au cours du temps. La figure ci-dessous illustre les 5 mouvements reconnaissable ainsi qu'un mouvement parasite.

Conversion d'un mouvement en image

Le réseau a été confronté à du surraprentissage, après plusieurs révisions, il atteint un score de 95.5% sur le jeu de test. Le modèle détecte 100% des mouvements de la base d'entraînement. En détectant 5 mouvements et 10 gestes, il est possible de réaliser un grand nombre d'interactions.

Evolution de la precision et de la fonciton loss en fonction du temps

5. Résultats top

En combinant la détection de gestes et de mouvements, une multitude d'actions peuvent être interprétés. Ces actions sont ensuite converties en actions faites par l'ordinateur ou l'objet lié à notre programme.

Ce travail se conclut par la création de deux interfaces de travail utilisant l'interprétation des gestes et mouvements pour interagir avec l'ordinateur. Une version de démonstration présentée dans la galerie du site et une version utilisateur, plus petite et toujours à l'écran permettant une fluidité dans son utilisation.