Hack'1 Cerveau : vulgarisation de machine learning avec la Réalité Augmentée


#1

Projet de groupe pour Hack’1 Cerveau

Je suis motivé: lien d’inscription.

Proposition de projet:

Titre: Vulgarisation du machine learning par réseaux de neuronnes avec des interfaces tangibles.

Concept:

La table est divisée en trois espaces:

  • Entrée: petit espace de 5x5cm ou l’image est extraite en noir et blanc.
  • Réseau de neuronnes: Ce réseau composée de petits pions placés en colonnes. Les neuronnes sont connectés avec une interface “touch”.
  • Sortie: La probabilité que l’entrée soit dans une certaine catégorie.

L’idée est d’arriver à créer des réseaux très simples qui détecte des choses comme noir/blanc, 1/4 noir, le blanc à droite etc…

Le but est de créer un réseau de neurones avec des pions. Il peut être rendu plus complexe en ajoutant des neurones, en augmentant la qualité des entrées, en ayant plus de données en entrée etc…

Ainsi en commençant avec une détection simple, on arriverait à reconnaître des nombres écrits par exemple, ou une banque de dessins faits sur place !

Image de concept

Les neurones sont des petits pions rouges. Dans cette illustration, les cartes sont présentées à gauche. Le réseau apprend et peut prédire quelle est la carte présentée.

Moyens

L’organisation sera avec trois grandes compétences:

  • La vulgarisation scientifique.
  • Les interfaces tangibles.
  • Les réseaux de neurones types perceptrons.

RealityTech proposera :

  • Un appareil avec PapARt lors du Hackathon.
  • Des pions colorés détectés et l’interface “touch”.
  • Une mini-application avec plusieurs zones configurables.
  • De l’accompagnement dans l’intégration d’une bibliothèque de machine learning.

Timeline

  • 1er Novembre: Réponse à l’appel à projet.
  • Mois Novembre: Présentation de ce projet.
  • Mi/fin Novembre: Pions colorés + “interface touch”.
  • 8-10 Décembre: Hackathon.

Je ne me sens pas compétant.

Ce n’est pas important ! Les hackathons sont des moments de convialité et de création. Ce projet fait appel évidemment à de la programmation, mais aussi du design d’interface, de gestes et d’objets. Toute compétance est la bienvenue.

Je suis motivé: lien d’inscription.

Posez vos questions sur ce forum !

Vidéo d’inspiration:

Si ce projet abouti, il pourrait être étendu en passant par l’AAP Robotique et intelligence artificielle.


#2

Voilà un example de machine learning low tech qui se passe dans un musée:


#3

Bonjour,

Je viens de m’inscrire pour le hackathon et j’avoue hésiter entre ce projet et celui sur Tetris. Je suis un passionné d’intelligence artificielle (j’apprends les algorithmes de réseaux de neurones), et j’ai quelques questions :

q1. Si j’ai bien compris, en disposant sur le board des cartes, un appareil va traduire ça en “code”. Par exemple, pour la partie réseau, on aura l’information “il y a 5 entrées, puis 3 hidden layers avec tant de neurones à chaque fois puis …”. C’est bien ça ? Puis on pourra faire agir cet algorithme sur des entrants pour donner la réponse.

q2. Est-ce que les neurones seront reliés, comme sur l’image ? est-ce que ce sera “physiquement” (à nous de mettre des ficelles) ou est-ce que ça sera par projection ? (réalité augmentée)

q3. Vous parlez de perceptrons, mais vu qu’on est dans les réseaux de neurones à reconnaissance d’image, je voyais plutôt des réseaux convolutionels (ou un ANN, plus simplement). Est-ce que le choix de l’algo est figé ?

q4. Y aura-t-il des data-scientists ou autre sur le projet ? Combien de personne s’y sont inscrites pour l’instant ?

Merci d’avance pour vos réponses,
Cordialement,
Lambert Rosique.


#4

Bonjour, je pense que les deux projets sont assez différent, celui de Tetris/snake est plus de l’IA, alors que celui-ci à but pédagogique.

Oui l’idée n’est pas totalement de «traduire» mais d’«incarner» le réseau de neurones. Le but est d’avoir des neurones visibles, avec une activité (calculs) et un apprentissage visible. Tout ne sera pas représenté, mais l’essentiel pour avoir l’idée de ce qu’il se passe.

Ce n’est pas fixé, il faudra que lien soit visible à un moment. La question de la création des liens est intéressante. Ça pourrait très bien être avec des ficelles, barres colorées, ou crées numériquement. Plus c’est physique (tangible), mieux c’est.

Je serai présent pour aider aux développements / usages des reconnaissances de couleur et d’objets au mieux.

Non ce n’est pas figé du tout. Il faut juste arriver à le faire apprendre pour distinguer des cartes. C’est soit fait «à la main» si on a une ou plusieurs personnes motivées, soit plus simplement en reprenant ou utilisant des bibliothèques existantes.
Le tout c’est qu’il ne soit pas en «black box» et qu’on puisse exposer les ajustements des liens/poids.

Je n’ai pas les résultats des questionnaires du mindlab, du coup je ne sais pas. On devrait faire un rendez-vous présentation du projet avant le Hackathon.

Nous n’avons pas de data scientist, mais il y en aura sûrement lors du hackathon sur place pour nous conseiller et aiguiller sur les choses à éviter.


Si tu as pleins d’autres questions n’hésite pas ! (Ah, et on peut se tutoyer du coup sur le forum). Je vais poster des photos des avancées sur l’appli de «base» avec les zones configurables et les détections de pions/images.


#5

Salut,

Merci pour les réponses, effectivement ça a l’air très intéressant. Habituellement je cherche à faire des IA pour progresser, mais avec le Tetris vu qu’il en existe déjà plein je trouve l’intérêt limité (mais certainement pas inexistant ^^). Tandis que vulgariser les ANN… C’est la 1ere fois :slight_smile:
J’ai hâte de voir tes photos pour mieux comprendre et me projeter, j’ai déjà plein d’idées :stuck_out_tongue:
Notamment sur les réflexions mathématiques pour que le réseau marche en restant simple.

En particulier, qu’as tu en tête pour les cartes d’entrée, les cartes de résultat et les cartes d’apprentissage ? Je ne comprends pas trop la photo : on donne une carte vert-bleu et il répond qu’elle est probablement une carte verte 80%, ou grise (5%) ou rose ?

Autre question car je ne connais rien en réalité virtuelle : c’est “facile” d’avoir tous les objets présents sur le plateau ? Leur forme, leur couleur, leur disposition ?

Pour relier les neurones ce serait cool en virtuel. On pourrait faire avancer les itérations d’apprentissage et ne garder visibles que les liens dont le poids est supérieur à 0.2 par exemple ! On verrait le réseau évoluer.

À bientôt !
Lambert


#6

J’ai ajouté une vidéo youtube qui a été une bonne inspiration en terme de pédagogie. Dans leur exemple ils font des analyses sur 4 pixels pour trouver des lignes et diagonales.
Dans l’image d’illustration j’ai mis des couleurs et 3 classes en sortie pour que ça soit plus facile à identifier.

Le réseau devrait pouvoir apprendre d’images, donc au final pour trouver des lignes, des éléments colorés ou autre chose ça viendra des expériences et choix design lors du Hackathon.

Les cartes sont là pour incarner les données. Par exemple on peut créer des decks de cartes physiques, des jeux de neurones physiques et pouvoir explorer quels types réseaux utiliser pour quelles cartes. Alors les utilisateurs se posent les «vraies questions»: comment caractériser le problème, comment créer un réseau permettant d’apprendre une solution.

C’est la qu’intervient le système de réalité augmentée.
En gros le système permet de détecter des objets d’une certaine taille/couleur et les suivre. J’ai deux détections qui fonctionnent bien: bleu et rouge de quelques centimètres de diamètre. Il permet aussi de trouver les doigts au-dessus de la table.

Dans les deux cas, le programme reçois des listes de positions pour chaque type (couleur rouge, bleue, objet). Les positions sont relatives à la feuille de papier.

Tout est ajustable via des fichiers de configuration/programmes. Je serai la pour aider aux ajustements si il doit y en avoir.

J’espère poster des infos là-dessus dans la semaine, ou le montrer à un open-lab à Cap Sciences.


#7

Première petite vidéo du code de base après 1h de code:

Le code est visible à cette adresse. Je le mettrai à jour la semaine prochaine, notamment pour avoir avant le hackathon:

  • Capture de zone pour créer des jeux de données d’entraienement.
  • Capture de petit objet rouge et bleu. Je vais tester les tailles mini pour mettre plein de neurones.
  • Lecture de code individuels pour changer de mode (entrainement, test).

#8

La vidéo est super, j’ai hâte de voir ça en vrai !
j’ai également vu la vidéo que tu avais envoyée sur un exemple pas à pas de réseau (avec les 4 pixels) et c’était hyper formateur, j’espère que les autres personnes de l’équipe auront le temps de la voir.

Par contre vendredi je ne pourrai pas être là pour la soirée (présentation des projets). Néanmoins, je sais déjà que je veux travailler avec vous sur ce projet 2, alors si ça ne dérange pas, merci de penser à moi vendredi soir ^^
Je serai là aux aurores, samedi matin !

A bientôt,
Lambert.


#9

Salut,

Je viens de faire un petit programme Python qui calcule la partie “Forward” du réseau de neurones.
Pour la backpropagation je galère pas mal, peut-être que j’aurai réussi à l’écrire pour samedi matin (à voir). En tout cas, ça pourrait nous faire une base (ou au moins, j’aurai bien réfléchi à “comment ça marche”).

J’ai fait en sorte d’avoir accès à toutes les variables à la fin, comme ça on peut facilement les afficher sur le plateau.

A bientôt,
Lambert.


#10

Salut Lambert,

Ça a l’air super ! Si le code reste en Python, on pourra avoir une communication simple avec Redis qui fait du stockage clé/valeur très performant.
J’installe python, numpy et redis sur la machine. D’ailleurs elle est prête:

Sur la vidéo j’ai mis en avant les 3 types de zones un peu spéciales qui seront nécessaire.
Jérémy.


#11

Jérémy, voici le github avec le code python ! https://github.com/lrosique/ann_stepbystep.git


#12

Hackathon terminé, premier bilan: un franc succès.

L’événement s’est très bien déroulé grâce à l’organisation du Mindlab et de Cap Sciences. Tout les groupes ont effectué un travail important et sont arrivé à des excellents résultats.

Notre projet a remporté le prix : «Intelligence Artificielle», le groupe a effectué un travail remarquable durant ces deux jours et je vais poster des photos des résultats dans ce post ainsi que dans le premier.

La suite.

Le prototype est fonctionnel au niveau matériel et logiciel. Les jeux d’images pour l’apprentissage sont à tester et éprouver. De même, les algorithmes sont à ajuster pour obtenir un scénario pédagogique clair et fonctionnel.

Les prochaines actions envisagées sont:

  1. Présentation du projet au grand public à Laval Virtual si nous sommes sélectionnés à revo2018.
  2. Candidature à l’appel à projet pour la médiation scientifique pour:
  3. Développer un outil pédagogique, utilisable dans des contextes de médiation scientifique.
  4. Étendre la flexibilité de cet outil pour l’utiliser dans des enseignements.

En attendant le code (qualité hackathon, pardon d’avance) est disponible ici:

Nous n’avons pas de documentation, mais en gros il faut: un système avec PapARt complet, python3, numpy, un serveur Redis et les clients Redis java et Python.


#13

Hello, hello !
Félicitations au groupe pour votre travail durant le hackathon !
Faudrait qu’on discute de la continuité du projet à l’occasion et d’une possible démo à Paris dans le cadre du Forum des sciences cog le week-end du 7 avril.

A+ Philippe