La vision artificielle pour un robot androïde
Les principes et frameworks disponibles pour donner à un robot la capacité d'interagir avec son environnement.
Notre robot humanoïde ne sera fonctionnel que lorsqu'il disposera au moins d'un bras et une main préhensible et d'un système de vision que l'on peut baser primairement sur un appareil de prises de vues, couplé à un logiciel de traitement d'images.
Principes de la vision par ordinateur
Ce système de vision doit pouvoir accomplir une série de tâches...
- Le robot doit disposer d'une mémoire de tous les objets présents dans son environnement.
- Il doit pouvoir identifier de nouveaux objets, et les ajouter à sa mémoire.
- Reconnaître un objet sur une image en l'identifiant à la définition d'un objet déjà présent dans la base.
- Le robot doit réagir à un objet en fonction de l'objectif assigné donc pouvoir anticiper les résultats des actions qu'il pourrait accomplir pour atteindre un objectif, cela en prenant en compte les autres objets de l'environnement.
- Il doit pouvoir manipuler les objets, donc évaluer leur distance, leurs proportions en fonction de ses mains artificielles, savoir comment les tenir.
- Détecter et identifier les gestes.
- Il doit pouvoir apprendre et ensuite généraliser un processus pour l'appliquer sur des objets de tailles, poids, et formes différentes.
Pour ce faire, il devra disposer des ressources suivantes...
- Un appareil de prise d'images. Ce peut être un appareil photo ou une caméra.
- Un instrument de détection de gestes comme le Kinect.
- Une base de données pour les enregistrer et les retrouver instantanément. Un logiciel de type Redis ou PostgreSQL peut convenir.
- Un logiciel de reconnaissance de formes, pour identifier les objets. Cela se base sur des algorithmes de vision par ordinateur, capables d'identifier des objets déja connus ou même de reconnaître un objet en mouvement alors qu'il n'est pas déjà connu (sur une séquence de photos ou une vidéo).
- Une interface avec le logiciel de reconnaissance, la base, le programme de commande donnant à l'opérateur une vue et un contrôle sur le fonctionnement du système.
Une partie de ces ressources peut être fournie par des frameworks déjà existants.
Les frameworks de vision artificielle
Framework Open source sous licence BSD.
Il propose une quantité d'algorithmes pour identifier les objets et les placer dans des classes prédéfinies telles que personnes, visages, voiture, maison etc...
Exemple d'utilisation:
- Pour la reconnaissance de forme.
- Pour la détection de visages.
- On l'utilise pour de l'art interactif.
- Pour obtenir une image HDR à partir de plusieurs expositions. Le framework comprend des modules pour la photographie.
- Diverses autres manipulations d'images.
- Pour l'apprentissage avec le module de machine learning.
Fonctionne avec des programmes en C++, Java et Python sur Windows, Linux, Android, iOS. Le fichier a télécharger fait 350 megas.
Framework pour construire des applications utilisant la vision artificielle. Il est basé sur OpenCV et constitue donc une interface pour simplifier l'utilisation de ce dernier.
Il dispose d'une version JavaScript et CoffeScript, SimpleCV-JS. Elle fonctionne avec Node.js. La démonstration n'a rien d'époustouflant, il faudra se faire une opinion plus précise à l'usage.
Bibliothèque offerte par Qualcomm, le fabricant de processeurs. Ce module de vision par ordinateur fonctionnant avec le module de réalité augmentée du même auteur, est destinée aux mobiles et devrait convenir aussi aux robots à condition qu'ils utilisent des processeurs ARM.
Ses capacités:
- Reconnaissance de gestes.
- Reconnaissance des visages.
- Association d'informations à des lieux (la réalité augmentée).
Il se programme en Java et requiert le SDK Android pour fonctionner ainsi que les outils de développement de ce dernier.
Spécialisé dans la vision par ordinateur, au contraire d'OpenCV, il propose un ensemble d'algorithmes pour la reconnaissance d'objets.
- Reconnaissance faciale.
- Détection d'objets difficiles à identifier.
- Algorithme Predator ou Tracking-Learning Detection, qui identifie des objets lors d'une première rencontre et suit leurs mouvements. On peut aussi télécharger cet algo sur GitHub.
- Et quelques autres.
Donc une autre alternative plus simple à OpenCV mais aussi moins complète.
Bibliothèques C++ pour la vision par ordinateur. Il est composé de plusieurs modules indépendants et légers.
Cambridge Video Dynamics/LibCVD
Bibliothèque de fonctions en C pour la vision par ordinateur et autres traitements d'images. Sous licence LGPL, fonctionne sur Windows et Linux.
Ces logiciels sont tous basés sur des algorithmes et il semble que la programmation impérative soit la plus utilisée pour ce type de traitement. Cela ne dispense pas de réfléchir à d'autres modes de fonctionnement, basés sur des paradigmes de programmation différents, favorisant l'apprentissage. La programmation déclarative convient notamment pour décrire l'environnement et la programmation réactive pour un système d'objets en interaction.