Ca a l'air amusant! Et puis... J'ai bien une petite idée.

Billet

mar
31

NUI & reconnaissance de formes

Par gduhamel le 31 mars 2013 à 6:51

Après quelques essais de détection de la gestuelle basés sur la couleur de la peau, j’ai tenté l’expérience de la reconnaissance d’objets avec la célèbre méthode de Viola et Jones, telle qu’elle est mise en place dans la bilbiothèque OpenCV. Il s’agissait de détecter un geste traduisant la sélection d’un élément dans l’espace. Des nombreuses possibilités qu’offrent une main, le mouvement ci-contre paraissait le plus intuitif et visuellement identifiable.  

Base d’images exemple

La méthode de Viola et Jones est connue pour détecter les visages avec une grande efficacité. Mais rien n’est dit pour les mains, moins encore pour le dos des mains. Il faut donc entrainer le programme a détecter ces éléments précis. Pour déterminer les caractéristiques pseudo-Haar sur lesquelles repose la méthode de détection, l’algorithme a besoin d’un grand nombre d’images. Un ensemble d’images contenant l’élément à détecter. Et une collection d’images ne contenant pas cet élément. Les images négatives sont suffisamment nombreuses sur internet. Pour produire les images positives : j’ai développé un petit programme permettant d’industrialiser le processus. 

 

  1. Ce programme utilise les images capturées par une webcam.
  2. Un compte à rebours de six secondes laisse le temps à l’utilisateur de positionner l’objet dans la zone de capture.
  3. Au terme de ce compte à rebours, l’image contenue dans le cadre est mise à l’échelle et sauvegardée.
  4. Apparence de la main oblige, l’image finale est de forme rectangulaire (et non carrée). Cela ne pose aucun problème.
  5. Le fichier image est alors retraité par un utilisaire de la bibliothèque OpenCV (createsamples). A partir d’une image positive, celui-ci permet de générer d’autres images, légèrement déformées. Contraste modifié, couleurs inversées, rotation de l’image sur plusieurs axes, …
  6. A partir d’une image de référence, le programme en créé 20.

   L’objectif de 1500 images positives a ainsi pu être atteint en moins de 10 minutes.

 

Apprentissage supervisé

Avec 1500 images positives et 3500 négatives, Opencv disposait d’éléments en quantité suffisante pour calculer ses caractéristiques pseudo-Haar. Là aussi, la bibliothèque dispose d’un utilitaire (haartraining) qui fait le travail pour nous. L’objectif est de détecter la forme avec un maximum de tolérance, quitte à obtenir quelques faux positif. Il aura fallu un petit peu plus de 8h au logiciel pour calculer une détection en dix passages répondant au besoin. Ci-dessous quelques exemples de caractéristiques calculées:  

Détection

Les résultats sont plutôt intéressants, surtout compte tenu de la courte durée de l’apprentissage. La forme d’origine est bien détectée, les faux positifs sont assez rares et peuvent être écartés facilement.

Chargement de la Vidéo…


Cette reconnaissance de forme pourra servir d’étape de détection intermédiaire. Elle indiquera des pistes que le logiciel pourra suivre afin de déterminer s’il s’agit bien d’une volonté d’interaction de l’utilisateur.

 

Références
La documentation de la bibliothèque OpenCV
L’excellent tutorial sur le blog de Naotoshi Seo

Laisser un commentaire

Captcha Captcha Reload

  1.  

    |