
Le 17 août, à la conférence GAMESCOM, la date officielle de sortie de Kinect a été révélée. Kinect sera donc disponible à la vente en France le 10 novembre 2010. Vous pourrez trouver tous les détails sur blog officiel Xbox.
Mais l’objet de ce post est tout autre, il est plutôt de « plonger sous le capot » de Kinect pour comprendre tout simplement comment la magie fonctionne... et surtout peut-être comment tout cela a-t-il été inventé ! Comme toujours, ce n’est pas d’un coup de baguette magique et il y’a un peu de R&D qui a précédé.
Tout d’abord Kinect c’est du hardware (pardon « matériel ») (la caméra 3D) et du software (pardon « logiciel ») : un moteur de vision artificielle (computer vision) et ... de l'intelligence artificielle (plus exactement de « l’apprentissage automatique » ou « machine learning »).
Je vais peut-être vous surprendre, mais Kinect est une interface naturelle (Natural User Interface) qui est descendant direct de la R&D autour de Microsoft Surface ! Je m’explique. Surface, comme son nom l’indique, repose sur un système optique de détection de mouvement, en l’occurence à la surface de la table. Dans les grands principes, finalement Kinect c’est la même chose, sauf qu’il n’y a pas de table et que le système de détection est miniaturisé. Mais, souvent, pour comprendre comment fonctionne une technologie il suffit de se reporter aux publications de R&D qui l’ont précédé. Concernant Surface donc, l’essentiel du principe de détection optique de mouvement est présenté ici dans cet article publié en 2004 par Andy Wilson, chercheur à Microsoft Research Redmond. Vous pourrez y lire comment sont traités tous les problèmes de traitement d’image afin de pouvoir détecter un mouvement. Toujours dans cet article sur son très beau prototype « TouchLight » (vidéo ici) Andy Wilson, fait très clairement référence aux interfaces « à la Minority Report ». Cela vous rappelle quelque chose peut être ?
3 ans plus tard, Andy Wilson présentait un proto et un article à la conférence Tabletop 2007 dans lequel, pour la première fois, il utilisait une caméra 3D, c'est-à-dire une caméra infrarouge dont le détecteur (« sensor ») a la capacité de récupérer des informations de profondeur (le « z » des pixels appartenant aux objets détectés). Dans cette spectaculaire vidéo, on voit très clairement le potentiel dans un contexte de jeu vidéo de cette caméra originellement développée pour la robotique. Puisqu’on obtient le (x, y,z) des pixels des objets détectés, pourquoi continuer à s’embarrasser d’une table ? Et c’est ainsi que la R&D progresse doucement vers Natal (pardon Kinect)…
Je disais au début que Kinect est une combinaison de hardware et de software. Dans ce domaine des « Natural User Interfaces », les progrès du hardware sont clef : pour beaucoup, les scénarios applicatifs sont là, le logiciel peut-être pas, mais on peut virtuellement tout développer. La disponibilité la plus large de la technologie est dictée par la capacité de l’industrie à faire face à une production de masse d’un périphérique avec le bon « form factor ». C’est ce qui est montré dans la célèbre vidéo « Productivity Vision » des Microsoft Office Labs : l’horizon 2019 est surtout l’horizon supposé de disponibilité de certains périphériques et interfaces présentés.
Dans le cas de Kinect, la solution a été trouvée avec la technologie proposée par la startup Israélienne PrimeSense, fournisseur des caméras infrarouge 3D intégrées dans le périphérique Kinect. En fait, parler de caméra est abusif : il faut parler plus exactement de capteur, et celui de PrimeSense intègre une source de lumière infra-rouge (qui illumine la scène) et un capteur CMOS qui est chargée de détecter les « objets » (par exemple un joueur devant sa TV) en analysant la lumière infra-rouge réfléchie. Tout ceci – comme pour Surface – se passe dans le spectre infra-rouge, et est donc invisible aux yeux des utilisateurs. Pour une étude approfondie je recommande tout simplement d’aller visiter le site de PrimeSense .
Maintenant que nous avons le capteur miniaturisé, comment transformer des « images brutes » en silhouettes humaines, avec indication de tous les points d’articulation ? En effet, l’image obtenue contient l’information clef du « z » sur chaque pixel, mais cela reste une image brute c'est-à-dire un « tas » de pixel. Et c’est là que rentre en piste à nouveau les équipes de recherche de Microsoft, en l’occurrence, l’équipe Machine Learning & Perception de Microsoft Research Cambridge. Cette équipe, l’une des principales de ce labo européen de Microsoft, regroupe les spécialistes de Computer Vision et ceux d’intelligence artificielle, comme je l’ai dit plus haut de « Machine Learning ». Ce sont ces experts de cette équipe qui ont conçu le moteur logiciel de Kinect lorsque ce n’était encore qu’un projet ultraconfidentiel appelé Natal. En effet, comme présenté plus en détail ici , Microsoft a une force de frappe impressionnante de recherche dans quasiment tous les aspects du logiciel, mais tout particulièrement dans le domaine de l’analyse d’image et de l’apprentissage automatique.
Nous avions un peu oublié l’intelligence artificielle (IA) depuis la grande époque, naïve, des années 80, mais c’est tout simplement et seulement le nom d’IA qui a disparu. En fait, et surtout depuis une dizaine d’années, les algorithmes d’apprentissages automatiques se sont généralisés avec la montée en puissance du web et la génération de masses de données énormes. En effet, les algorithmes de Mchine Learning permettent à un algorithme généraliste de se spécialiser en se basant sur des informations statistiques. On donne à l’algorithme des masses de données dont il déduit des lois de comportement grâce à des processus statistiques, qu’il appliquera ensuite en « reconnaissant » un cas particulier qu’on va lui soumettre. Je signale au passage que cette équipe de Microsoft Research Cambridge propose au download un toolkit intégrant certains de leurs algorithmes de Machine Learning. Si le cœur vous en dit, vous pouvez donc tester Infer.Net vous-même…
Le « search » (sur internet ou pas) appelé aussi « Information Retrieval » est la discipline qui a très rapidement fait une importante consommation de Machine Learning, suivie par l’analyse d’images, puis de vidéo (une vidéo étant tout simplement une succession de 35 images fixes à la seconde). Et l’analyse de vidéo temps réel est bien entendu l’application la plus récente, que ce soit dans le domaine de la vidéo-surveillance, de l’automobile (équipement embarqués) … ou du jeu. Et donc, si votre curiosité vous pousse à naviguer plus en détail dans les pages de l’équipe « Machine Learning & Perception » de Microsoft Research Cambridge, vous verrez beaucoup de projets très variés, et notamment la reconnaissance d’objets dans des images ou le tracking visuel. Ce sont ces expertises, développées à l’origine dans une démarche purement scientifique de recherche de dépassement des frontières du savoir et de progrès de l’état de l’art d’un domaine, qui une fois confrontées à un problème très concret (« comment reconnaitre avec une marge d’erreur extrêmement minime toutes les situations de gestes humains, pour tout type de taille et de corpulence ») , ont permis de réaliser le « moteur logiciel » de Natal, devenu Kinect.